Preparar un entorno de producción para hacer deploys de aplicaciones Ruby on Rails
En este artículo veremos cómo instalar todas las aplicaciones necesarias para montar un servidor en un entorno de producción para aplicaciones Ruby on Rails.
Git es un sistema de control de versiones. Aunque sus posibilidades son muchas y altamente recomendado para utilizarlo en aplicaciones Ruby on Rails, en este manual sólo lo requerimos como dependecia para poder instalar RVM.
Para instalar RVM podemos seguir el siguiente artículo: Ruby Version Manager (RVM)
Ahora con RVM ya podemos instalar Ruby (tardará un poco). Instalaremos la versión 1.9.2, pero lo bueno de RVM es que más adelante puedes instalar cualquier versión.
Para especificarle qué versión usar y ponerla por defecto:
Tan sólo hay que hacer:
¿Fácil, no?. El parámetro --no-ri y --no-rdoc sirve para no instalar la documentación. Al ser entorno de producción no la necesitamos.
A tener en cuenta que estamos instalando las gems en el gemset por defecto dentro de la versión en que nos encontramos. Podemos crear varios gemsets, e incluso exportarlos e importarlos.
Nos muestra los grupos de gems disponibles y el que estamos usando.
Passenger es un módulo para Apache y Nginx para poder ejecutar las aplicaciones Rails. Es mucho más sencillo hacer deploys que antes cuando se utilizaban instancias de Mongrels.
Ahora ejecutaremos el instalador de passenger para el servidor web Apache.
Es un assistente de instalación excepcionalmente completo y te guía sobre las dependencias y problemas que puede haber y como solucionarse. Con los paquetes instalados anteriormente apenas tendremos problemas.
Ejemplo de nuestra instalación:
En nuestro caso faltaban algunas dependencias, que el mismo manual nos dice cómo instalarlas, por ejemplo: (Fijaros bien en vuestro caso, ya que pueden variar)
Una vez instaladas se puede volver a llamar al assistente de instalación de Passenger
Finalmente, hay que abrir el archivo de configuración de apache httpd.conf y añadir estas líneas:
Reiniciamos Apache:
Ejemplo de cómo hacer un deploy (subir la web) a producción de una aplicación Ruby on Rails. Si tenemos la aplicacion en /applications/nuestra_aplicacion_rails, añadiremos un virtual host en el archivo de configuración de Apache (normalmente en /etc/httpd/conf/httpd.conf) parecido a este:
ServerName www.tudominio.com DocumentRoot /applications/nuestra_aplicacion_rails/public # Ruta de vuestra aplicación rails, aseguraos de apuntar a la carpeta 'public'! AllowOverride all Options -MultiViews
Si no se utiliza plesk se puede obviar este paso. Con plesk la configuración del virtual host debemos ponerla en un archivo distinto (en vez de en el archivo de configuración de apache anterior). Normalmente se encuentra en:
Añadiendo:
Y ejecutamos esto para que al regenerar la configuración del plesk se mantenga:
Podemos hacer una aplicación de prueba antes de subir la definitiva:
Si todo ha funcionado accedemos a nuestro dominio y veremos la página inicial de una aplicación rails!
Uno de los problemas habituales tiene que ver con los permisos y los usuarios asignados a las carpetas. Habitualmente no se usa el usuario root en las carpetas de las aplicaciones. Una buena idea es usar el mismo usuario de apache o crear uno nuevo con permisos adecuados para poder escribir y leer en los directorios de las aplicaciones.