Installare Nginx con php-fpm su Debian 7 Wheezy

wheezyAnche 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.