Apache + proxy fcgi + php fpm y ademas … drupal

Otra vuelta mas en la tuerca, cambio en la configuración del servidor web para que empiece a usar el proxy fcgi para llamar a php, en vez de hacerlo de forma estática. De esta forma ahorramos recursos (memoria normalmente) y conseguir tener mas procesos ( y mas visitas).


Funciona con apache 2.2 y 2.4.
Lo primero, poner el modulo en enable: sudo a2enmod proxy_fcgi y service apache2 restart para activarlo.

Ahora nos definimos un pool nuevo en php para una de las webs…
Dentro de /etc/php5/fpm/pool.d/ copiamos www.conf a nuevo-pool.conf
Editamos el fichero y cambiamos:
El nombre que viene entre [] por el mismo que le hemos puesto al fichero.
Listen, vamos a hacer que el nuevo pool escuche por otro puerto así que listen = 127.0.0.1:90xx

En «teoría» puedes hacerlo para que ataque a un ip:puerto o puedes ponerlo contra un socket, yo lo intente durante un rato y no fui capaz de que arrancara así que … se queda con ip:puerto.

La definición de los parámetros del pool (el numero de procesos que arranca, etc) lo dejamos para otro día.
service php5-fpm restart y un nestat -ano para comprobar que tenemos un nuevo proceso escuchando en el puerto.

Ahora definimos el modo de acceso en el VirtualHost en cuestión.


Alias /php5.fcgi /var/www/php5_nuevo.fcgi
FastCGIExternalServer /var/www/php5_nuevo.fcgi -flush -host 127.0.0.1:90xx -idle-timeout 600
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5.fcgi

Ojo con el -idle-timeout, por defecto se pone a 30 segundos y es demasiado bajo, cuando instalas drupal suele dar errores del tipo..

FastCGI: comm with server «/usr/lib/cgi-bin/php5-fcgi» aborted: idle timeout (30 sec), referer: http://xxx.xxx.xxx/install.php?locale=en&profile=default

Subiéndolo a 600 yo no he tenido problemas (de momento).

La sensación es que puedes empezar a asumir mas conexiones, menos consumo de memoria suele significar que puedes arrancar mas procesos y así cuanto llegan las hordas de spiders aguantas un rato mas…