Mongrel, apache2 y sarge en minutos en 20 minutos

Introducción
El otro día me hizo falta hacer una instalación de mongrel sobre sarge y la verdad tenía algunos problemas que tenía que resolver

- La versión de ruby que necesita era ruby 1.8.4 mientras que en sarge tenemos 1.8.2
- No hay paquetes para sarge de rails
- Y por supuesto mongrel tampoco lo tenemos

Fase I - Versión de ruby

Tenía que actualizar paquetes para ruby y no me hace nada de gracia mezclar paquetes de dos ramas de debian, pero estaba obligado a actualizar ruby y quería hacerlo con paquetes deb, la solución es fácil compilar paquetes de sarge para ruby, lo hice con la versión de ruby 1.8.5, básicamente añadí una fuente de paquetes para bajarme el código fuente y luego compilarlo para crear paquetes para sarge aquí está el resumen. Tengo que advertir que tarda algo en compilar, osea que en este punto te puedes a tocar un café o lo que quieras.

echo ‘deb-src http://mirror.bytemark.co.uk/debian/ unstable main’ >>/etc/apt/sources.list
apt-get update
cd /usr/src
apt-get install dpkg-dev
apt-get source ruby1.8
apt-get build-dep ruby1.8
apt-get install devscripts
cd ruby1.8-1.8.4/
debuild
cd ..
rm *elisp*
dpkg -i *.deb

Fase II - Instalación de rails y mongrel

Para esto me baje una versión actualizada de gem para luego instalar rails y mongrel, sólo tuve que usar gem para esto. Lo único que tuve que hacer es elegir la versión de mongrel y elegí la última.

wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz
tar zxf rubygems-0.8.11.tgz
cd rubygems-0.8.11
ruby setup.rb
gem install rails -include-dependencies
gem install mongrel -include-dependencies

Fase III - configurar apache2 para con el proxy para mongrel

Esto lo hice con apache2 para esto a parte del apache debes tener el paquete libapache2-mod-proxy-html, una vez que tengas esto debes configurar dos archivos, el primero es /etc/apache2/mods-enabled/proxy.conf y cambiar la directiva para que admita a todo el mundo.

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

Ahora sólo nos quedaría configurar el archivo de apache que contenga el virtual hosts en dónde queremos redirigir a la aplicación que correo bajo mongrel (supongo que la ejecutamos en localhost y por el puerto 3000), las barras finales son muy importantes, si no las pones no funciona.

ServerSignature On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:3000/
ProxyPassReverse / http://0.0.0.0:300/

Ahora sólo te quedaría arrancar tu aplicación en rails con mongrel y reiniciar apache y todo irá como la seda ;)