Nginx con PHP-FPM su Debian Lenny

nginx logo Nginx con PHP FPM su Debian Lenny

L’inclusione di PHP-FPM all’interno della nuova versione di Php apre finalmente scenari di utilizzo in produzione per FastCGI Process Manager. PHP-FPM è una modalità di gestione dei processi Fastcgi innovativa rispetto al modello  classico. FPM consente di avviare e regolare dinamicamente una serie di processi Fastcgi permettendo utilizzi più evoluti ed ottimizzati delle istanze.

Il seguente articolo ci accompagnerà nell’installazione e nella configurazione del web server Nginx con PHP-FPM su una distribuzione Debian 5.0 Lenny. La configurazione di Php indicata nell’articolo è di tipo base e non tiene conto di eventuali estensioni per la gestione di immagini, compressione dei contenuti etc, che potranno essere comunque aggiunte con una ricompilazione dei sorgenti.

Installiamo i pacchetti che ci serviranno per le operazioni di compilazione :

# apt-get -y install build-essential autoconf2.13 automake libxml2-dev

Per portare correttamente a termine la compilazione di Php con supporto PHP-FPM è necessaria l’installazione della libreria libevent :

# wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
# tar zxf libevent-1.4.12-stable.tar.gz
# cd libevent-1.4.12-stable
# ./configure && make && make install

Dopo aver installato libevent riportiamoci nella directory superiore :

# cd ..

e preleviamo l’archivio dei sorgenti per Php 5.3.3. Dopo aver estratto l’archivio, avviamo la procedura di compilazione e la successiva installazione :

# wget http://www.php.net/get/php-5.3.3.tar.gz/from/it.php.net/mirror
# tar zxf php-5.3.3.tar.gz
# cd php-5.3.3
# ./buildconf --force
# ./configure --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data
# make && make install

All’interno della directory php-5.3.3/sapi è contenuto lo script che utilizzeremo per init.d su Debian. Copiamo il file nella directory /etc/init.d, impostiamone i permessi e configuriamolo :

# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm
# update-rc.d php-fpm defaults

E’ la volta ora del file di configurazione per PHP-FPM. Un file di template è già contenuto all’interno della directory /usr/local/etc, copiamone il contenuto in un nuovo file che collocheremo nella stessa directory ma che denomineremo php-fpm.conf :

# mv /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

Apriamo in scrittura il file appena creato e decommentiamo le seguenti direttive :

# vim /usr/local/etc/php-fpm.conf
pid = /usr/local/var/run/php-fpm.pid

error_log = /usr/local/var/log/php-fpm.log

log_level = notice

daemonize = yes

[www]

listen = 127.0.0.1:9000

user = www-data

group = www-data

La logica di funzionamento di PHP-FPM è simile a quella dei processi di Apache nella versione prefork. E’ possibile definire quanti processi figli avviare, il numero massimo di processi figli avviabili, ed il numero minimo di child che verranno mantenuti attivi da PHP-FPM. Decommentiamo quindi anche le seguenti righe, impostando i valori in modo coerente rispetto alle risorse del sistema in uso :

pm = dynamic

pm.max_children = 40

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

Al termine della configurazione, chiudiamo il file ed avviamo PHP-FPM :

# /etc/init.d/php-fpm start

Copiamo inoltre il file di configurazione php.ini-production in /usr/local/lib/php.ini :

# cp php.ini-production /usr/local/lib/php.ini

E’ arrivato il momento di installare Nginx :

# apt-get install nginx

Dopo l’installazione del pacchetto, apriamo il file contenente la configurazione per il virtual host di default di Nginx :

# vim /etc/nginx/sites-available/default

e inseriamo i seguenti valori all’interno del blocco server { } :

server {

...

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
include fastcgi_params;
}

...

}

valori che indicano come Nginx dovrà gestire le richieste per i contenuti dinamici Php che verranno passate ai processi PHP-FPM in ascolto sulla porta 9000, sull’indirizzo di localhost 127.0.0.1

Al termine della configurazione è possibile testare il corretto funzionamento del setup :

# echo '<?php phpinfo(); ?>' > /var/www/index.php

dopo aver riavviato Nginx :

# /etc/init.d/nginx restart

punteremo il browser all’indirizzo ip del nostro web server http://IP/index.php, se tutto è andato per il verso giusto otterremo una schermata generata dalla funzione phpinfo() riportante informazioni di compilazione e di runtime per Php.

Condividi questo post!

Post simili:

5 thoughts on “Nginx con PHP-FPM su Debian Lenny

  1. Pingback: Installare XCache su PHP 5.3.3 (PHP-FPM) | SERVERMANAGED.IT ::

  2. Pingback: Lighttpd con PHP-FPM su Debian Lenny | SERVERMANAGED.IT ::

  3. Pingback: Installare APC su PHP-FPM (5.3.3) | SERVERMANAGED.IT ::

  4. Pingback: Installiamo Roundcube su Nginx | SERVERMANAGED.IT ::

  5. Pingback: Nginx con PHP-FPM su Debian 6 Squeeze « Servizi managed e gestione server – servermanaged.it blog

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>