Installazione Server · 5 min read · Dec 30, 2025

Installazione di Nginx con supporto PHP5 e MySQL su Debian Lenny

Installazione di Nginx con supporto PHP5 e MySQL su Debian Lenny

Versione 1.0
Autore: Falko Timme

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 Lenny con supporto PHP5 (tramite FastCGI) e supporto MySQL.

Non fornisco 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.0

Per installare MySQL, eseguiamo

aptitude install mysql-server mysql-client

Ti 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 Lenny che possiamo installare come segue:

aptitude install nginx

Avvia nginx dopo:

/etc/init.d/nginx start

Digita 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 pagina di benvenuto di nginx:

4 Installazione di PHP5

Possiamo far funzionare PHP5 in nginx tramite FastCGI. Fortunatamente, Debian Lenny fornisce un pacchetto PHP5 abilitato per FastCGI che installiamo in questo modo (insieme ad alcuni moduli PHP5 come php5-mysql che ti servono se vuoi utilizzare MySQL dai tuoi script PHP):

aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Poi apri /etc/php5/cgi/php.ini e aggiungi la riga cgi.fix_pathinfo = 1 proprio alla fine del file:

vi /etc/php5/cgi/php.ini

| [...] cgi.fix_pathinfo = 1 |

Non esiste un pacchetto daemon FastCGI standalone per Debian Lenny, quindi utilizziamo il programma spawn-fcgi di lighttpd. Installiamo lighttpd come segue:

aptitude install lighttpd

Vedrai un messaggio di errore che dice che lighttpd non può avviarsi perché la porta 80 è già in uso:

Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use  
 failed!

È così che deve essere perché nginx sta già ascoltando sulla porta 80. Esegui

update-rc.d -f lighttpd remove

in 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 usare per avviare i processi FastCGI. Dai un’occhiata a

spawn-fcgi --help

per 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.pid

Certo, 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.conf

La 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; server_name _; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; 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$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$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/nginx-default; significa che la root del documento è la directory /var/www/nginx-default.

La parte importante per PHP è la stanza location ~ .php$ {}. Decommentala per abilitarla. Assicurati di cambiare la riga fastcgi_param in fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (sostituisci /var/www/nginx-default 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 che è un bug.

Ora salva il file e riavvia nginx:

/etc/init.d/nginx restart

Ora crea il seguente file PHP nella root del documento /var/www/nginx-default:

vi /var/www/nginx-default/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 sta funzionando tramite FastCGI, come mostrato nella riga Server API. Se scorri ulteriormente verso il basso, vedrai tutti i moduli che sono già abilitati in PHP5, incluso il modulo MySQL:

6 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.