Configuraciones básicas NGINX contra PHP en FastCGI/spawn-fcgi
Instalar binario de spawn-fcgi
Instalamos el paquete spawn-fcgi con yum o apt-get:
# apt-get install spawn-fcgi # yum install spawn-fcgi
Nota: en Ubuntu 8.04 no está disponible el paquete spawn-fcgi, pero lo provee lighttpd:
# apt-get install lighttpd # update-rc.d -f lighttpd remove # /etc/init.d/lighttpd stop
Después, realizamos la configuración, creando un servicio/script de parada/arranque de spawn de procesos PHP5-CGI:
# cat /etc/init.d/spawn-fcgi #! /bin/sh set -e export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" case "$1" in start) echo "Arrancando spawn-fcgi..." # Nota: variar -C XXX (número de procesos PHP concurrentes) # según sea necesario para soportar carga de la web. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 20 \ -u www-data -g www-data \ -f /usr/bin/php5-cgi \ -P /var/run/fastcgi-php.pid ;; stop) echo "Parando spawn-fcgi..." killall php5-cgi sleep 5 killall -9 php5-cgi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
Ahora damos permisos de ejecución y arranque con el sistema al script:
### Para Debian/Ubuntu: # chmod +x /etc/init.d/spawn-fcgi # update-rc.d spawn-fcgi defaults
Nótese que para spawn-fcgi (que lanza php5-cgi) en Debian tendremos que modificar las opciones de PHP en el php.ini de php5-cgi, no en el php5-apache.
Configuración de Proxypass contra FastCGI
Con los binarios de PHP "escuchando" en el puerto 9000 gracias a spawn-fcgi, podemos realizar los proxypass de PHP contra este puerto en lugar de contra apache:
server { listen 80; server_name dominio.com; access_log /var/log/nginx/dominio.access.log; root /var/www/dominio/; index index.php index.html; # Scripts en PHP: location ~ "\.php$" { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }