Optimizando un servidor web con Nginx (Parte II)

numeros

Ya vimos como instalar NGINX en el articulo anterior, ahora veremos como instalarle PHP-FPM

Instalar PHP-FPM

En lugar de instalar php5, instalaremos php5-fpm (FastCGI Process Manager), una implementación alternativa con algunas características adicionales. En Ubuntu se puede instalar desde repositorios, para debian los agregamos a mano al sources.list:

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

Es necesario agregar la llave GnuPG, instalamos php5-fpm y lo iniciamos:

apt-get update
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -
apt-get install php5-cli php5-suhosin php5-fpm php5-cgi php5-mysql
service php5-fpm start

Ahora probaremos que php funciona bajo nginx, para ello es necesario modificar ligeramente el archivo nginx.conf, concretamente:

  • En el bloque http hay que añadir index.php a la directiva index, para que quede index index.php index.html index.htm;.
  • Necesitamos crear la comunicación entre nginx y php mediante un socket, para ello añadimos lo siguiente en el bloque http.
    upstream php {
        server unix://var/run/php-fpm.socket;
    }
  • Por último, dentro del bloque server, añadimos una regla que permita manejar los archivos php:
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass php;
    }
  • Una última modificación al archivo /etc/php5/fpm/pool.d/www.conf y agregamos la línea listen = /var/run/php-fpm.socket.

Probando PHP

Para comprobar que PHP funciona crearemos un fichero simple que mostrará un mensaje, hemos de colocarlo en /usr/local/nginx/http/ y asignarle como grupo y usuario www-data:

echo '<?php echo "Probando que PHP funciona";?>' > /usr/local/nginx/html/index.php
chown www-data:www-data /usr/local/nginx/html/index.php

De nuevo nos dirigimos al localhost y deberíamos ver el mensaje, lo cual indica que se está ejecutando PHP.

 

Leave a Comment