Esta documentación cubre la instalación y configuración de PHP con PHP-FPM para el servidor HTTP Nginx 1.4.x.
Este guía asume que se ha compilado Nginx a partir de las fuentes y por lo tanto
todos los binarios y ficheros de configuración se encuentran en
/usr/local/nginx
. Si no es el caso y se ha obtenido Nginx por otros medios, por favor refiérase al
» Wiki de Nginx para adaptar este manual
a su configuración.
Este guía cubre las bases de la configuración del servidor Nginx para servir una aplicación PHP en el puerto 80. Se recomienda estudiar las documentaciones de Nginx y PHP-FPM para optimizar su instalación.
Tenga en cuenta que a lo largo de esta documentación, los números de versión han sido reemplazados por una "x" para asegurar que esta última permanezca correcta en el futuro. Recuerde reemplazarlos por su número de versión.
Se recomienda consultar la » documentación de Nginx para instalarla en su sistema.
Recuperar y descomprimir las fuentes de PHP:
tar zxf php-x.x.x
Configurar y compilar PHP. Este será el momento en el que se podrá personalizar PHP con diversas opciones, como las extensiones a activar. Ejecutar ./configure --help para obtener una lista de las opciones disponibles. En nuestro ejemplo, se realizará una configuración simple con soporte PHP-FPM y MySQLi.
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
Recuperar y mover los ficheros de configuración en los directorios correctos
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
Es importante que se impida que Nginx pase las peticiones al backend PHP-FPM si el fichero no existe, evitando así las vulnerabilidades por inyecciones arbitrarias de scripts.
Esto se puede realizar definiendo la directiva
de configuración cgi.fix_pathinfo
al valor 0
en su php.ini.
Editar php.ini:
vim /usr/local/php/php.ini
Encontrar la directiva cgi.fix_pathinfo=
y modificarla como sigue:
cgi.fix_pathinfo=0
El fichero php-fpm.conf debe ser modificado para especificar que php-fpm debe ser ejecutado con el usuario www-data y el grupo www-data antes de iniciar el servicio:
vim /usr/local/etc/php-fpm.d/www.conf
Encontrar y modificar lo siguiente:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
El servicio php-fpm puede ahora ser iniciado:
/usr/local/bin/php-fpm
Este guía no va a configurar php-fpm más allá de esto; si está interesado en la configuración avanzada de php-fpm, por favor consulte la documentación.
Nginx debe ahora ser configurado para soportar el análisis de las aplicaciones PHP:
vim /usr/local/nginx/conf/nginx.conf
Modificar el bloque por defecto para que pueda servir ficheros .php:
location / { root html; index index.php index.html index.htm; }
La siguiente etapa asegura que los ficheros .php sean pasados al backend PHP-FPM; Bajo el bloque comentado por defecto y entre:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
Reiniciar Nginx.
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
Crear un fichero de prueba
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Ahora, navegue a http://localhost. El phpinfo() debería ser mostrado.
Siguiendo estos diferentes pasos, se debería ejecutar un servidor
web Nginx con soporte de PHP como módulo FPM
SAPI
.
Por supuesto, hay muchas más opciones de configuración disponibles para Nginx y PHP. Para más información, escriba
./configure --help en la fuente correspondiente.