Ruby on Rails con Passenger en servidor cPanel

Con la comunidad de desarrolladores de Ruby continuamente en crecimiento, son cada vez más las consultas de soporte para poder ofrecer este tipo de aplicaciones. Actualmente no se recomienda utilizar la herramienta que provee cPanel para Ruby on Rails, ya que se basa en la versión proveniente de CentOS así como para Mongrel 1, los cuales ambos están extremadamente desactualizados.

ruby

Instalemos Ruby on Rails en cPanel!

Para mirar como trabajar con la forma menos recomendada de la funcionalidad cPanel podéis ir al siguiente enlace en el que lo explicamos detenidamente junto con algún truco y consejo adicional.

Mientras que en cPanel indican que tienen planes para actualizar esta cuestión e integrar Phusion Passenger en su arquitectura, no parece que a corto plazo esté avanzando en su implementación.

Esta guía asume estas características en tu servidor:

1) Nos encontramos en un servidor cPanel (en caso negativo lo explicaremos en otra guía que publicaremos dentro de poco)

2) Se ha utilizado EasyApache para instalar Apache 2.2 o Apache 2.4.

Para confirmar esto último:

root@server [~]# httpd -v
Server version: Apache/2.4.12 (Unix)
Server built: May 27 2015 19:16:47
Cpanel::Easy::Apache v3.30.0 rev9999

3) Tu servidor dispone de al menos 1GB de memoria, aunque es preferible disponer de 1,5GB para la instalación.

4) Tienes acceso al servidor como root

Instalar Ruby

Algunas guías recomiendan utilizar la herramienta de cPanel (/scripts/installruby) o Yum para instalar Ruby. Sin embargo, nosotros no lo recomendamos ya que CentOS utiliza una versión muy antigua y obsoleta. Utilizaremos RVM (Ruby Version Manager) de la siguiente manera:

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm requirements

En el momento de este artículo la versión de Ruby es la 2.3.0. Puedes querer ir a la web oficial de Ruby para ver cual es la versión más reciente.

Utiliza esa versión en el comando citado a continuación, y luego configura que la 2.3.0 sea la versión por defecto de Ruby::

rvm install 2.3.0
rvm use 2.3.0 --default

A continuación instala Rails:

gem install rails

No estaría mal para acabar con este primer bloque el confirmar que Ruby y Rails están instalados 😉

root@server [~]# ruby -v
ruby 2.3.0p173 (2016-02-15 revision 51636) [x86_64-linux]
root@server [~]# rails -v
Rails 4.2.4

Instalar Phusion Passenger

gem install passenger
yum -y install curl-devel sqlite-devel
passenger-install-apache2-module

Si al final del último paso apareciera un error poco claro, la causa más probable es que se ha quedado sin memoria. Aunque la recomendación se encuentra en 1GB, se ha visto que muchas veces y para poder compilar módulos son necesarios 1,5GB.

Ahora necesitamos añadir lo siguiente a nuestra configuración de Apache. En servidores cPanel éste es el gran punto de diferencia con respecto a servidores no cPanel, debido a que no puedes de forma directa editar según que configuraciones en tu httpd.conf. Por lo tanto necesitamos crear un Include. Primero creamos el siguiente fichero:

usr/local/apache/conf/passenger.conf

Y dentro de este fichero se añaden las siguientes 3 líneas:

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.3.0/gems/passenger-5.0.24/buildout/apache2/mod_passenger.so
 PassengerRoot /usr/local/rvm/gems/ruby-2.3.0/gems/passenger-5.0.24 
 PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.3.0/ruby

De la configuración citada arriba comprueba que estás utilizando tanto las rutas adecuadas así como las versiones de Ruby y Passenger instaladas.

Una vez finalizado abrimos el siguiente fichero

/usr/local/apache/conf/includes/pre_main_global.conf

Y añadimos la siguiente línea:

Include “/usr/local/apache/conf/passenger.conf”

Ahora nos queda simplemente reconstruir y reiniciar Apache:

/scripts/rebuildhttpdconf
service httpd restart

Testeo

Crearemos una nueva cuenta de cPanel o también podemos utilizar una existente. Nos dirigimos al public_html de ese Usuario:

cd /home/rubyapp/public_html
rails new testapp
cd testapp

Abrimos el fichero GemFile y añadimos lo siguiente antes de ‘end’:

gem ‘therubyracer’

Y ejecutamos:

bundle install
rake db:migrate

A partir de aquí, y en general, es necesario modificar el Document Root del dominio para que apunte al directorio ‘public’ de la aplicación. En servidores cPanel, puedes hacer esto editando /var/cpanel/userdata/$user/domain

También es necesario crear un include para el entorno (enviroment) de la aplicación:

APACHE 2.4

mkdir /usr/local/apache/conf/userdata/std/2_4/$user/$domain/

APACHE 2.2

mkdir /usr/local/apache/conf/userdata/std/2/$user/$domain/

(Pista: si buscas por el Virtual Host para el dominio en httpd.conf, podrás ver la ruta del include que es necesaria crear)

Creamos en este directorio, un fichero llamado rails.conf con el contenido siguiente:

RackEnv development
 <Directory /home/$user/public_html/testapp/public>
 Options -MultiViews
 </Directory>

Asegúrate que el Document Root del dominio apunta a este mismo directorio. Para un Addon Domain (Dominio Adicional) o Subdomain (Subdominio) puedes especificar el directorio en el momento en que lo creas, o si no puedes editarlo en /var/cpanel/userdata/$user/$domain.

Por último, descomentamos la línea del Include en httpd.conf y reconstruimos y guardamos la nueva configuración de Apache ejecutando:

/scripts/rebuildhttpdconf
service httpd restart

Con todo esto deberíamos ser capaces de ir a nuestro dominio y ver “Welcome aboard” en el navegador, lo que indica que tanto Ruby como Passenger están funcionando.

Comparte este tutorial:

No hay comentarios en este tutorial

Sé el primero en enviar un comentario: