Installazione Server · 5 min read · Dec 31, 2025
Installazione di Nginx con supporto PHP5 e MySQL su Debian Squeeze
Installazione di Nginx con supporto PHP5 e MySQL su Debian Squeeze
Versione 1.0
Autore: Falko Timme
Seguimi su Twitter
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 installare Nginx su un server Debian Squeeze con supporto PHP5 (tramite FastCGI) e supporto MySQL.
Non rilascio alcuna garanzia che questo funzionerà per te!
1 Nota preliminare
In questo tutorial utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.
2 Installazione di MySQL 5
Per installare MySQL, eseguiamo
apt-get install mysql-server mysql-clientTi verrà chiesto di fornire una password per l’utente root di MySQL - questa password è valida per l’utente root@localhost così come per [email protected], quindi non dobbiamo specificare manualmente una password root di MySQL in seguito:
Nuova password per l’utente MySQL “root”: <– yourrootsqlpassword
Ripeti la password per l’utente MySQL “root”: <– yourrootsqlpassword
3 Installazione di Nginx
Nginx è disponibile come pacchetto per Debian Squeeze che possiamo installare come segue:
apt-get install nginxAvvia nginx successivamente:
/etc/init.d/nginx startLa root del documento predefinita di nginx è /var/www che non esiste ancora; quindi dobbiamo crearla come segue:
mkdir /var/www
chown www-data:www-data /var/wwwDigita l’indirizzo IP del tuo server web o il nome host in un browser (ad es. http://192.168.0.100), e dovresti vedere la seguente pagina:

Ricevi un errore 403 forbidden perché non c’è una pagina index in /var/www.
4 Installazione di PHP5
Possiamo far funzionare PHP5 in nginx tramite FastCGI. Fortunatamente, Debian Squeeze fornisce un pacchetto PHP5 abilitato per FastCGI che installiamo in questo modo (insieme ad alcuni moduli PHP5 come php5-mysql di cui hai bisogno se vuoi utilizzare MySQL dai tuoi script PHP):
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslPoi apri /etc/php5/cgi/php.ini e decommenta la riga cgi.fix_pathinfo=1:
vi /etc/php5/cgi/php.ini| [...] ; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. Il comportamento precedente di PHP era di impostare PATH_TRANSLATED su SCRIPT_FILENAME, e di non capire cosa fosse 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=1 [...] |
Non esiste un pacchetto daemon FastCGI standalone per Debian Squeeze, quindi utilizziamo il programma spawn-fcgi di lighttpd. Installiamo lighttpd come segue:
apt-get install lighttpdVedrai un messaggio di errore che dice che lighttpd non può avviarsi perché la porta 80 è già in uso:
Avvio del server web: lighttpd2011-02-24 01:43:18: (network.c.358) non può legarsi alla porta: 80 Indirizzo già in uso
fallito!
invoke-rc.d: initscript lighttpd, azione "start" fallita.È così che deve essere perché nginx sta già ascoltando sulla porta 80. Esegui
update-rc.d -f lighttpd removein modo che lighttpd non si avvii all’avvio del sistema.
Abbiamo installato lighttpd perché abbiamo bisogno solo di un programma che viene fornito con il pacchetto, /usr/bin/spawn-fcgi, che possiamo utilizzare per avviare i processi FastCGI. Dai un’occhiata a
spawn-fcgi --helpper saperne di più.
Per avviare un daemon PHP FastCGI in ascolto sulla porta 9000 su localhost e in esecuzione come utente e gruppo www-data, eseguiamo il seguente comando:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pidNaturalmente, non vuoi digitare manualmente quel comando ogni volta che avvii il sistema, quindi per far eseguire automaticamente il comando all’avvio, apri /etc/rc.local…
vi /etc/rc.local… e aggiungi il comando alla fine del file (prima della riga di uscita):
| [...] /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid [...] |
5 Configurazione di nginx
La configurazione di nginx si trova in /etc/nginx/nginx.conf che apriamo ora:
vi /etc/nginx/nginx.confLa configurazione è facile da capire (puoi saperne di più qui: http://wiki.codemongers.com/NginxFullExample e qui: http://wiki.codemongers.com/NginxFullExample2)
Per prima cosa (questo è facoltativo) aumenta il numero di processi worker e imposta il keepalive_timeout a un valore ragionevole:
| [...] worker_processes 5; [...] 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:
vi /etc/nginx/sites-available/default| [...] server { listen 80; ## ascolta per ipv4 listen [::]:80 default ipv6only=on; ## ascolta per ipv6 server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www; index index.php index.html index.htm; } location /doc { root /usr/share; autoindex on; allow 127.0.0.1; deny all; } location /images { root /usr/share; autoindex on; } #error_page 404 /404.html; # reindirizza le pagine di errore del server alla pagina statica /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /var/www/nginx-default; #} # proxy gli script PHP ad Apache in ascolto su 127.0.0.1:80 # #location ~ \.php$ { #proxy_pass http://127.0.0.1; #} # passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } # nega l'accesso ai file .htaccess, se la root del documento di Apache # coincide con quella di nginx # location ~ /\.ht { deny all; } } [...] |
servername ; rende questo un host virtuale predefinito (ovviamente, puoi anche specificare un nome host qui come www.example.com).
Nella parte location /, ho aggiunto index.php alla riga index. root /var/www; significa che la root del documento è la directory /var/www.
La parte importante per PHP è la st stanza location ~ .php$ {}. Decommentala per abilitarla. Assicurati di modificare la riga fastcgi_param in fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; (sostituisci /var/www con la root del documento del tuo host virtuale) perché altrimenti l’interprete PHP non troverà lo script PHP che chiami nel tuo browser.
Assicurati che ci siano degli spazi tra include e fastcgi_params; - nel file predefinito questo è scritto come una sola parola, il che è un bug.
Ora salva il file e riavvia nginx:
/etc/init.d/nginx restartOra crea il seguente file PHP nella root del documento /var/www:
vi /var/www/info.php| |
Ora chiamiamo quel file in un browser (ad es. http://192.168.0.100/info.php):

Come puoi vedere, PHP5 sta funzionando, e funziona tramite FastCGI, come mostrato nella riga Server API. Se scorri più in basso, vedrai tutti i moduli già abilitati in PHP5, incluso il modulo MySQL:

6 Link
- nginx: http://nginx.net/
- wiki di nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- MySQL: http://www.mysql.com/
- Debian: http://www.debian.org/
Informazioni sull’autore
Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra-veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei core developer di ISPConfig (dal 2000). Ha anche contribuito al libro di O’Reilly “Linux System Administration”.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.