Configurar un virtualhost en Apache con FastCGI

Es sorprendente la cantidad de sitios webs que ejecutan el PHP con mod_php, lo cual, a parte de inseguro, el rendimiento en muchas situaciones no es óptimo.

En esta entrada voy a explicaros como configurar un sitio con FastCGI como handler de PHP. Más adelante, en otra entrada, explicaré como configurarlo con PHP-FPM.

Lo primero de todo, damos por hecho que ya tenemos un virtualhost configurado en Apache, con PHP instalado y siendo ejecutado mediante mod_php.

Partiendo de esta base, el primer paso será instalar el módulo mod_fcgid:

Con esto, tendremos instalado el módulo de Apache que permitirá que configuremos nuestros sitios con FastCGI.

Seguidamente, debemos deshabilitar el handler de PHP por defecto, editando el fichero /etc/httpd/conf.d/php.conf y comentando las siguientes líneas:

Estas líneas pueden cambiar ligeramente dependiendo de nuestra versión de PHP y entorno, pero son de sintaxis similar.
IMPORTANTE: Si, por alguna razón, queremos que algún VirtualHost siga siendo ejecutado con mod_php, debemos añadir estas líneas que acabamos de comentar en el fichero de configuración del VirtualHost en cuestión.

Seguidamente, vamos a crear un fichero php.fastcgi en el que configuraremos la ejecución de FastCGI.

En nuestro ejemplo, suponemos que el dominio está en /var/www/prueba.com/, por lo que crearemos la carpeta /var/www/prueba.com/cgi-bin y dentro de ella crearemos el fichero php.fastcgi:

Dentro del fichero, añadimos el siguiente texto:

Son especialmente importantes la línea “PHPRC”, donde le indicamos el php.ini a usar, y la línea “exec”, donde se encuentra nuestro módulo cgi de php. Generalmente se encuentra en dicha ruta, pero si tenéis un entorno diferente, puede variar, bastaría con localizarlo con locate.

Tras esto, cambiamos el owner del fichero y directorio al del usuario del sitio, en nuestro caso prueba, y le damos permisos de ejecución:

Por último, solo quedaría añadir dentro del virtualhost del dominio las líneas ScriptAlias, y dentro del document root, las lineas Options, AddHandler y Action, como en el ejemplo a continuación:

Como vemos, lo que hacemos es crear un alias del directorio cgi-bin, donde esta el fichero php.fastcgi, y después indicarle que en el documentroot ejecute el PHP con dicho handler.

Tras esto, solo habría que reiniciar apache y nuestro PHP se ejecutaría con FastCGI y nuestro usuario.

Esta configuración se debe realizar paso a paso en cada dominio, para que sea ejecutado con su propio usuario.

Adicionalmente, es muy recomendable cambiar el mpm de Apache de prefork a Event, una vez tengamos todos los dominios en FastCGI, para ello bastaría con editar el fichero /etc/httpd/conf.modules.d/00-mpm.conf:

Y comentar la línea de prefork, descomentando la de event:

Esto mejorará el rendimiento en gran medida.

Espero que os sirva.

Deja un comentario

Tu email nunca se publicará.