Instalar FastCGI en CentOS

Este tutorial es para instalar FastCGI en una VPS con CentOS, pero supongo que funciona en cualquier computadora con CentOS, RedHat o Fedora.

FastCGI es un protocolo para trabajar con programas interactivos en un servidor web. FastCGI no trata de reducir la sobrecarga asociada con el funcionamiento del servidor web y los programas CGI, sino que trata de manejar mas solicitudes de página a la vez.

Movable Type tiene ya incluido el soporte para FastCGI, lo que quiere decir que no necestamos hacer lo que se conoce como un wrapper, un programa que ejecuta FastCGI para ejecutar Movable Type. Una envoltura.

Pero vaya que me costó hacerlo funcionar. La historia después del salto.

¿Por qué usar FastCGI en lugar de mod_perl o mod_php?

Según la Wikipedia

En lugar de crear un proceso para cada solicitud, FastCGI puede usar un solo proceso persistente que maneje muchas solicitudes durante la existencia de ese proceso. El proceso de múltiples solicitudes simultáneas se logra usando una sola conexión con un divisor interno (por ejemplo, muchas solicitudes con una sola conexión) y/o usando múltiples conexiones. Pueden existir muchos de estos procesos, algo que incrementa la estabilidad y la escalabilidad. FastCGI también permite a los programas hacer que el servidor web haga ciertas operaciones sencillas, como leer un archivo, antes de que termine de manejar una solicitud. La información de entorno y las solicitudes de páginas se envían desde el servidor web al proceso sobre conexiones TCP (para procesos remotos) o usando sockets de demonios de UNIX (para procesos locales). Las respuestas se regresan del proceso al servidor web usando la misma conexión. Las conexiones pueden cerrarse al final de una respuesta, pero el servidor y proceso permanecen abiertos.

Muchos administradores de sitios web y programadores encuentrean que la separación de las aplicaciones web del servidor web con FastCGI tiene mas ventajas que usar los intérpretes incluidos (mod_perl, mod_php, etc.). Esta separación permite que los servidores y las aplicaciones se reinicien de manera independiente — una consideración importante para sitios muy visitados. También facilita la implementación de políticas de seguridad por aplicación — importante de verdad para muchos proveedores de internet y de hospedaje web.

Instalar mod_fastcgi

Tenemos que asegurarnos que tenemos todos los paquetes necesarios para compilar mod_fastcgi:

yum install libtool httpd-devel apr-devel apr

Lo que sigue a continuación es bajar el código fuente mas reciente:

mkdir code
cd code
wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz

Desempaquetamos el archivo y nos pasamos al directorio que se crea:

tar -zxvf mod_fastcgi-current.tar.gz
cd mod_fastcgi-2.4.6/

Para construir el módulo usamos las indicaciones en Makefile.AP2, que es un archivo make:

cp Makefile.AP2 Makefile

Luego compilamos e instalamos:

make top_dir=/usr/lib/httpd
make install top_dir=/usr/lib/httpd

Configurar mod_fastcgi

Abrimos el archivo /etc/httpd/conf.d/mod_fastcgi.conf:

vi /etc/httpd/conf.d/mod_fastcgi.conf

Y agregamos las siguientes líneas:

User apache
Group apache
LoadModule fastcgi_module modules/mod_fastcgi.so
# FastCGIWrapper on
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi
FastCGIConfig -autoUpdate -idle-timeout 120 -killInterval 3600 -maxClassProcesses 6 -maxProcesses 15
User apache y Group apache
Tuve muchos problemas de permisos porque en mi instalación apache no se ejecuta con suexec, asi que uso estos parámetros pa indicar con qué usuario se ejecutan los procesos.
LoadModule fastcgi_module modules/mod_fastcgi.so
Este comando carga el módulo en el servidor httpd.
FastCGIWrapper on
Leí en un sitio que este comando era necesario para que el módulo funcionara. Pero, hasta el momento no uso ningún wrapper, asi que está comentado.
FastCgiIpcDir /tmp/fcgi_ipc/
Para que esta configuración funcione, es necesario que el directorio /tmp/fcgi_ipc/ pertenezca al usuario y grupo apache. Es muy importante hacer chown -R apache:apache /tmp/fcgi_ipc/.
FastCGIConfig -autoUpdate -idle-timeout 120 -killInterval 3600 -maxClassProcesses 6 -maxProcesses 15
Esta línea establece las opciones del servidor FastCGI como su duración, el máximo de procesos, y el tiempo que puede permanecer en memoria sin actividad.

El último paso es reiniciar el servidor apache:

/etc/init.d/httpd restart

Y ya tenemos funcionando nuestro servidor con FastCGI.

Fuentes

Tomé las indicaciones para configurar el módulo FastCGI de cyberciti y los parámetros del módulo FastCGI del sitio de Movable Type. La traducción la hice en los estudios Perro Muerto, de próxima inaguración.

Entradas Relacionadas

Entradas recientes

  • Capas flotantes

    Por muchas razones, algunas cosas de este blog habían quedado sin atender. Pero no más. Ahora corrijo algunos de estos problemas. Por ejemplo, el

    ...

  • Razón de Vivir

    Una exclusiva mas de la Audioteca Toledana, ahora presentando un pieza del compositor argentino Victor Heredia intrepretada por Mercedes Sosa: Razón de Vivir. Que la

    ...

  • Diálogo entre el Papa y Jesucristo

    En 1978 el recién electo papa Juan Pablo II visitó México, en lo que su primer viaje fuera de Italia. Específicamente la Ciudad de México,

    ...

  • Tocando em frente

    Una pieza única de la música brasileña. Llena de hermosa poesía y evocaciones a los bellos paisajes del Amazonas, esta exclusiva de la Audioteca Toledana

    ...

  • Sensación de Irrealidad

    ¿Cómo sabes que estás soñando y no despierto? Ayer en la sala del centro de salud, sentado en la misma silla que el lunes, en

    ...

Cerrar