Escalabilidad en Apache
- Feb
- 25
escribe tu comentario! 317 palabras - 1 hits
Configuracion de apache y lighttpd utilizando mod_proxy
Hace unos días, comentaba sobre las ventajas de utilizar fastCGI con apache para mejorar el rendimiento de aplicaciones como Movable Type, pues bien, si estas interesado en ir un poco más allá en la optimización del servidor, sigue leyendo.
Apache cuenta con un modulo llamado mod_proxy, que permite convertir nuestro servidor en un proxy transparente que direccionará las peticiones a otro servidor, la idea general es la de mantener dos servidores web corriendo en la misma maquina y repartir la carga de trabajo entre ambos.
Para el ejemplo, supongamos el siguiente escenario, queremos configurar nuestro servidor apache para que todas las peticiones de ficheros cgi sean ejecutadas por un servidor LightTPD en el puerto 81.
Lo primero que haremos sera instalar y configurar una instancia de LightTPD, para realizar esto bajo Ubuntu descargamos el paquete .deb desde http://www.lighttpd.net/download/debian/ubuntu/lighttpd_1.4.5-1_i386.deb y lo instalamos dpkg -i lighttpd_1.4.5-1_i386.deb.
El fichero de configuración lo encontramos en /etc/lighttpd/lighttpd.conf, tendremos que editarlo y configurarlo según las necesidades que tengamos, a continuación os pongo las partes relevantes para que el servidor se encargue de todas las peticiones cgi/fastcgi:
- ..
- server.modules = (
- "mod_fastcgi",
- "mod_cgi" )
- server.document-root = "/usr/lib/cgi-bin/"
- ## bind to port (default: 80)
- server.port = 81
- ## bind to localhost (default: all interfaces)
- server.bind = "localhost"
- fastcgi.server = ( ".fcgi" =>
- ( "localhost" =>
- (
- "socket" => "/tmp/lighttpd-fcgi.socket",
- "bin-path" => "/usr/lib/cgi-bin/dispatch.fcgi",
- "bin-environment" => ( "PERL5LIB" => "/usr/lib/cgi-bin/lib",
- "MT_HOME" => "/usr/lib/cgi-bin",
- "MT_CONFIG" => "/usr/lib/cgi-bin/mt-config.cgi" )
- )
- )
- )
- #### CGI module
- cgi.assign = ( ".pl" => "/usr/bin/perl",
- ".cgi" => "/usr/bin/perl" )
- ...
El siguiente paso es indicarle al Apache que direccione todas las peticiones a este servidor, para conseguir esto haremos uso de mod_proxy y mod_rewrite.
- <VirtualHost *>
- ...
- ProxyPassReverse / http://localhost:81/
- RewriteEngine on
- RewriteCond %{REQUEST_URI} .*\.(cgi)$
- RewriteRule %{REQUEST_FILENAME}.(cgi)$ http://localhost:81/$1 [P]
- RewriteCond %{REQUEST_URI} .*\.(fcgi)$
- RewriteRule %{REQUEST_FILENAME}.(fcgi)$ http://localhost:81/$1 [P]
- ...
- </VirtualHost>
Despues de esto, solo queda reiniciar el servidor Apache, a partir de aquí todas las peticiones se gestionaran de manera transparente para el usuario y la mejora de rendimiento en aplicaciones basadas en perl merece el pequeño esfuerzo.
Espero que os sea de utilidad.
ningún comentario por el momento