Server Setup · 6 min read · Jan 05, 2026
Installazione di Nginx con PHP (come PHP-FPM) e MariaDB (LEMP) su Debian 8
Questo tutorial ti mostrerà l’installazione del server web Nginx su Debian 8. Nginx (pronunciato “engine x”) è un server HTTP gratuito, open-source e ad alte prestazioni. Nginx è noto per la sua stabilità, il ricco set di funzionalità, la configurazione semplice e il basso consumo di risorse. Questo tutorial mostra come puoi installare Nginx con supporto PHP (tramite PHP-FPM) e MariaDB come sostituto drop-in di MySQL. Questa configurazione è spesso chiamata LEMP = L inux + nginx (pronunciato “ e ngine x”) + M ySQL + P HP).
Nota Preliminare
In questo tutorial, utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.1.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato. Dovresti avere un server Debian 8, utilizzerò il server minimale Debian come sistema di base per questo tutorial.
Aggiornamento del Sistema
Si consiglia di aggiornare le liste dei pacchetti e installare eventuali aggiornamenti in sospeso prima di iniziare con la configurazione di Nginx. Esegui i seguenti comandi per installare eventuali aggiornamenti in sospeso.
apt-get update
apt-get upgrade -yUtilizzerò l’editor nano più tardi per modificare i file di configurazione. Nano può essere installato con questo comando:
apt-get -y install nano Installazione di MariaDB (come sostituto drop-in di MySQL)
Per installare MariaDB, eseguiamo:
apt-get -y install mariadb-server mariadb-clientTi verrà chiesto di fornire una password per l’utente root di MariaDB - questa password è valida per l’utente root@localhost così come per [email protected], quindi non dobbiamo specificare manualmente una password root di MariaDB più tardi:
Nuova password per l’utente “root” di MariaDB: <– yourrootsqlpassword
Ripeti la password per l’utente “root” di MariaDB: <– yourrootsqlpassword

Installazione di Nginx
Nginx è disponibile come pacchetto per Debian Jessie che possiamo installare come segue:
apt-get -y install nginxAvvia Nginx successivamente:
systemctl start nginx.serviceDigita l’indirizzo IP o il nome host del tuo server web in un browser (ad es. http://192.168.1.100), e dovresti vedere la seguente pagina:

La radice del documento nginx predefinita su Debian 8 è /var/www/html.
Installazione di PHP
Possiamo far funzionare PHP5 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un’implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, specialmente siti più trafficati) che installiamo come segue:
apt-get -y install php5-fpmPHP-FPM è un processo daemon (con il file di unità systemd php5-fpm.service) che esegue un server FastCGI sul socket /var/run/php5-fpm.sock.
Configurazione di nginx
La configurazione di nginx si trova in /etc/nginx/nginx.conf che apriamo ora:
nano /etc/nginx/nginx.confLa configurazione è facile da capire (puoi saperne di più qui: http://wiki.nginx.org/NginxFullExample e qui: http://wiki.nginx.org/NginxFullExample2)
Imposta prima il keepalive_timeout su un valore ragionevole come 2 secondi:
[...]
keepalive_timeout 2;
[...]Gli host virtuali sono definiti nei contenitori server {}. L’host virtuale predefinito è definito nel file /etc/nginx/sites-available/default - modifichiamolo come segue:
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# Configurazione SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Certificati autofirmati generati dal pacchetto ssl-cert
# Non usarli in un server di produzione!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Aggiungi index.php all'elenco se stai usando PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# Primo tentativo di servire la richiesta come file, poi
# come directory, poi tornare a visualizzare un 404.
try_files $uri $uri/ =404;
}
# passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Con php5-cgi da solo:
# fastcgi_pass 127.0.0.1:9000;
# Con php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# nega l'accesso ai file .htaccess, se la radice del documento di Apache
# coincide con quella di nginx
#
location ~ /\.ht {
deny all;
}
}
[...]servername ; rende questo un host virtuale catchall predefinito (ovviamente, puoi anche specificare un nome host qui come www.example.com).
Ho aggiunto index.php alla riga dell’indice. root /var/www/html; significa che la radice del documento è la directory /var/www/html.
La parte importante per PHP è la strofetta location ~ .php$ {}. Decommentala come mostrato sopra per abilitarla.
Ora salva il file e ricarica Nginx:
systemctl reload nginx.serviceSuccessivamente apri /etc/php5/fpm/php.ini…
nano /etc/php5/fpm/php.ini… e imposta cgi.fix_pathinfo=0:
[...]
; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. Il comportamento precedente di PHP era impostare PATH_TRANSLATED su SCRIPT_FILENAME, e non comprendere
; cosa sia PATH_INFO. Per ulteriori informazioni su PATH_INFO, vedere le specifiche cgi. Impostare
; questo su 1 farà sì che PHP CGI corregga i suoi percorsi per conformarsi alla specifica. Un'impostazione
; di zero fa sì che PHP si comporti come prima. Il valore predefinito è 1. Dovresti correggere i tuoi script
; per utilizzare SCRIPT_FILENAME piuttosto che PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]Ricarica PHP-FPM:
systemctl reload php5-fpm.serviceOra crea il seguente file PHP nella radice del documento /var/www/html/:
nano /var/www/html/info.phpOra chiamiamo quel file in un browser (ad es. http://192.168.1.100/info.php):

Come puoi vedere, PHP5 sta funzionando, e funziona tramite FPM/FastCGI, come mostrato nella riga Server API. Se scorri ulteriormente verso il basso, vedrai tutti i moduli che sono già abilitati in PHP5. MySQL non è elencato lì, il che significa che non abbiamo ancora supporto per MariaDB / MySQL in PHP.
Ottenere supporto MySQL / MariaDB in PHP
Per ottenere supporto MySQL in PHP, possiamo installare il pacchetto php5-mysqlnd. È una buona idea installare anche alcuni altri moduli PHP poiché potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP disponibili in questo modo:
apt-cache search php5Scegli quelli di cui hai bisogno e installali in questo modo:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu è un cache opcode PHP gratuito e open per memorizzare nella cache e ottimizzare il codice intermedio PHP che estende l’opcache di PHP. Sostituisce la cache APC. ed è simile ad altri cache opcode PHP, come eAccelerator e Xcache. È fortemente consigliato avere uno di questi installato per velocizzare la tua pagina PHP.
APCu può essere installato come segue:
apt-get install php5-apcuOra ricarica PHP-FPM:
systemctl reload php5-fpm.serviceOra ricarica http://192.168.1.100/info.php nel tuo browser e scorri di nuovo verso il basso nella sezione moduli. Dovresti ora trovare molti nuovi moduli lì, incluso il modulo MySQL:

Far utilizzare a PHP-FPM una connessione TCP (opzionale)
Per impostazione predefinita, PHP-FPM ascolta sul socket /var/run/php5-fpm.sock. È anche possibile far utilizzare a PHP-FPM una connessione TCP. Per farlo, apri /etc/php5/fpm/pool.d/www.conf…
nano /etc/php5/fpm/pool.d/www.conf… e fai in modo che la riga listen appaia come segue:
[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]Questo farà sì che PHP-FPM ascolti sulla porta 9000 sull’IP 127.0.0.1 (localhost). Assicurati di utilizzare una porta che non sia in uso sul tuo sistema.
Quindi ricarica PHP-FPM:
systemctl reload php5-fpm.serviceSuccessivamente, controlla la tua configurazione Nginx e tutti i tuoi host virtuali e modifica la riga fastcgi_pass unix:/var/run/php5-fpm.sock; in fastcgi_pass 127.0.0.1:9000;, ad esempio in questo modo:
nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # Con php5-cgi da solo:
# fastcgi_pass 127.0.0.1:9000;
# # Con php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
}
[...] Infine, ricarica Nginx:
systemctl reload nginx.serviceImmagine della Macchina Virtuale
Questo tutorial è disponibile come macchina virtuale pronta all’uso in formato OVA / OVF per gli abbonati di Howtoforge. Il formato VM è compatibile con VMWare e Virtualbox e probabilmente con alcuni altri strumenti che possono importare questo formato. Puoi trovare il link per il download nel menu a destra in alto. Clicca sul nome del file per avviare il download.
I dettagli di accesso della VM sono:
Accesso SSH
Nome utente: root
Password: howtoforge
Accesso a MariaDB
Nome utente: root
Password: howtoforge
Si prega di cambiare le password dopo il primo avvio.
La VM è configurata per l’IP statico 192.168.1.100, l’IP può essere cambiato nel file /etc/network/interfaces.
Link
- nginx: http://nginx.net/
- wiki nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian: http://www.debian.org/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.