Installare Nginx con php-fpm su Debian 7 Wheezy
Anche se on è da molto tempo che è arrivata l’ultima versione stabile di Debian, è arrivato per molti il momento di passare da Lenny a Wheezy. Se utilizzate un server web come Nginx non è consigliabile fare un dist-upgrade, ma è meglio reinstallare il sistema operativo da zero.
Nginx messo a disposizione in Wheezy, ci propone di default delle impostazioni diverse a quelle del vecchio pacchetto per Lenny, per cui sarà ben difficile non dover metter mano alla configurazione, in particolare a quella dei virtual host.
Vediamo come configurare Nginx con supporto a Mysql e a PHP mediante php-fpm (LEMP), cominciamo però dal principio.
PHP-FPM (FastCGI Process Manager) è un’alternativa all’applicazione FastCGI con alcune funzionalità aggiuntive utili per gestire le pagine scritte in PHP su siti particolarmente frequentati. E’ più comodo usare PHP-FPM anziché spawn-fcgi di lighttpd, perché non è necessario compilare nessun pacchetto nè aggiungere repository di terze parti.
La prima cosa da fare, dopo aver installato il sistema operativo da zero, è aggiornare il sistema operativo con la classica sequenza di apt-get (da lanciare con l’utente root):
# apt-get update && apt-get upgrade
In seguito potrebbe essere conveniente rigenerare le chiavi ssh col comando:
# dpkg-reconfigure openssh-server
A questo punto si può installare nginx e mysql:
# apt-get install nginx mysql-server mysql-client
Poi la parte riguardante PHP5.
# apt-get install php5-cli php5-common php5-curl php5-fpm php5-gd php5-imagick php5-mcrypt php5-memcached php5-memcache php5-snmp php5-xmlrpc php5-mysql php5-imap
Infine installare il componente php-fpm:
# apt-get install php5-fpm
Aprire il file /etc/php5/fpm/php.ini e cercare la riga che contiene cgi.fix_pathinfo, togliere il punto e virgola davanti e assicurarsi che ci sia il numero zero come valore.
cgi.fix_pathinfo=0
Ricaricare il servizio php5-fpm e nginx
# /etc/init.d/php5-fpm reload
# /etc/init.d/nginx reload
Vediamo ora come creare un file di configurazione di un virtual host.
Il file può essere come il seguente:
server {
listen 80;
server_name www.miosito.xz miosito.xz;
root /var/www/miosito.xz;
access_log /var/log/nginx/miosito.xz-access.log;
error_log /var/log/nginx/miosito.xz-error.log;
if ($http_host != “www.miosito.xz”) {
rewrite ^ http://www.miosito.xz$request_uri permanent;
}
index index.php index.html;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Blocca i tentativi di accedere a file nascosti come .htaccess, .htpasswd, .DS_Store (su Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}
Dove il nome del sito è www.miosito.xz e la cartella che contiene le pagine web è /var/www/miosito.xz
Dopo aver salvato il file di configurazione del virtual host in /etc/nginx/sites-available/miosito.xz è opportuno creare un link simbolico di questo file nella cartella /etc/nginx/sites-enabled/ in questo modo:
#ln -s /etc/nginx/sites-available/miosito.xz /etc/nginx/sites-enabled/miosito.xz
Ricaricare la configurazione di nginx.
# /etc/init.d/nginx reload
Per verificare che le impostazioni sono state inserite correttamente, basta creare un file prova.php in /var/www/miosito.xz e inserire il codice:
<?php
phpinfo();
?>
Aquesto punto inserire nel browser miosito.xz/prova.php e dovrebbe comparire una pagina contenente una tabella riepilogativa della funzionalità e caratteristiche della propria installazione di PHP.