rails + apache2 + fcgi
Posted by vigosan, Mon Feb 25 12:10:00 UTC 2008
Hoy he terminado una aplicación en RoR para la gestión de incidencias (tickets) para la empresa donde trabajo. El tema, es que me he encontrado con ciertos problemas a la hora de configurar Apache2 y fcgid, sobre todo porque me he leído varios manuales y en cada uno de ellos me decía que tocara unas cosas diferentes, conclusión un pitoste impresionante.
Aquí tenemos la receta facilona que seguro no os dará problemas; primero instalamos:
intranet:~# apt-get install libapache2-mod-fcgid libfcgi-ruby1.8 Habilitamos los módulos necesarios:
intranet:~# a2enmod fcgid intranet:~# a2enmod rewrite
Modificamos el fichero /etc/apache2/sites-enabled/000-default:
NameVirtualHost *:80 <VirtualHost *:80> ...
Y cremos un nuevo servidor virtual que por el puerto 3000, para ello creamos el fichero /etc/apache2/sites-enabled/rails:
NameVirtualHost *:3000 <VirtualHost *:3000> ServerName rails DocumentRoot /var/www/app_rails/public <Directory /var/www/app_rails/public/> Options ExecCGI FollowSymLinks AddHandler fcgid-script .fcgi AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost>
Podemos forzar a que Apache habilite el nuevo servidor virtual:
intranet:/etc/apache2# a2ensite Which site would you like to enable? Your choices are: default Site name? rails
Para terminar con la configuración de Apache, hay que indicar que escuche también por el puerto 3000, pare ello editamos el fichero /etc/apache2/ports.conf y añadimos:
Listen 80 Listen 3000
Y ya por último, modificamos el fichero app_rails/public/.htaccess para que utilice fcgid
# General Apache options
#AddHandler fastcgi-script .fcgi
AddHandler fcgid-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
...
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
Ahora solo falta reiniciar Apache2:
intranet:~# /etc/init.d/apache2 restart