viernes, 20 de abril de 2012

Nginx y passenger para rails en ubuntu

La siguiente guía asume que tenemos una instalación funcional de rvm.
Instalamos passenger, con el comando:
gem install passenger

Una vez satisfechas las dependencias de las que nos ha avisado el instalador, instalamos, nginx con:
passenger-install-nginx-module
Llegados aquí, comenzará el proceso pero llegado el momento tendremos un error por no tener privilegios de instalación.

En ningún caso, intentar sudo passenger-install-nginx-module, nginx nos dará problemas, passenger también e intentar deshacerlo es muy engorroso.

La opción correcta es a través del propio rvm con el siguiente comando:            
rvmsudo passenger-install-nginx-module
             
 Si estamos en un una distribución tipo server lo mas probable es que nuestro usuario ssh, no este en la lista de sudoers. Esto es, no podemos hacer rvmsudo, ni sudo gedit, ... Si intentamos completar la instalación a través de su, no encontrará passenger, ni a rvm.

  Esto se soluciona editando como su el archivo /etc/sudoers y añadiendo la siguiente línea:
miUsuario ALL=(ALL) ALL

Ahora al hacer   rvmsudo passenger-install-nginx-module   la instalación se realiza correctamente.
Si no indicamos lo contrario durante la instalación, nginx se instala en /opt/nginx. El archivo de configuración se encuentra en /opt/nginx/conf/nginx.conf. Añadir una aplicación rails es tan simple como añadir:
Nos interesa añadir nginx como un servicio del sistema, para poder hacer llamadas del tipo
sudo service nginx start | restart | stop
Para ello creamos un archivo llamado nginx en /etc/ini.d/nginx, con el comando:
sudo nano /etc/init.d/nginx
*Sustituyase nano por el editor preferido
En este archivo pegar el siguiente script:

A continuación le damos permisos de ejecución con 
sudo chmod +x /etc/init.d/nginx
La aplicación que hayamos configurada debería estar en marcha tras hacer
sudo service nginx start