Instalar FastCGI en CentOS
2009-05-23 | En: Computadoras | La entrada anterior es Lluvias en Tlaxcala y Noticias del Blog | La entrada siguiente es Directivas de configuración de Movable Type
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
apacheno se ejecuta consuexec, 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 grupoapache. Es muy importante hacerchown -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.
