Configurando Ubuntu Server 14.04 LTS Con Apache + Passenger + RVM + MySQL + Postgresql

Standard

Hoy les traigo un pequeño tutorial para la instalación de un ambiente ya sea para pruebas o producción para sus proyectos en rails.

Si al igual que un servidor, hacen proyectos en rails de manera constante y con versiones de Ruby y Ruby on Rails diferentes es muy probable que se topen con esta necesidad básica al momento de hacer un deploy de sus apps. Así bien, espero ayudarles un poco a través de esta pequeña guía, explicándoles el proceso que he seguido para configurar un servidor Ubuntu 14.04.

Lo primero que haremos y que siempre es recomendable, es actualizar nuestra lista de paquetes, para lo cual ejecutamos:

$ sudo apt-get update

Y una vez finalice:

$ sudo apt-get upgrade -y

Con esto nos aseguraremos de que los paquetes listados en nuestros repositorios estén actualizados.

Ahora procedemos a instalar algunas dependencias necesarias para nuestros fines

$ sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev sqlite3 nodejs

Muy bien, con esto nuestro sistema cumple con la mayoría de requisitos que más delante nos pedirá rails.

Lo siguiente es instalar RVM. Para lo cual nos apoyaremos en la guía oficial que puedes encontrar aquí, sólo que resumido.

Lo primero es agregar las llaves para poder descargar el script necesario

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

Luego pasamos a instalar RVM en modo Multi-Usuario

$ curl -sSL https://get.rvm.io | sudo bash -s stable

Y seguimos la instrucción que el instalador nos indica ejecutando la linea

$ source /etc/profile.d/rvm.sh

Y para confirmar la instalación

$ rvm --version

Lo cual nos debiera regresar la versión instalada.

Ahora procedemos a instalar la versión de ruby que deseamos que en nuestro caso es la 2.2.

$ rvm install 2.2

Ahora, si todo va según lo planeado, la instalación debiera fallar, esto es por un problema con los permisos en algunas carpetas en la instalación de rvm, pero no hay de que preocuparse, para solucionarlo simplemente ejecutamos el comando reemplazando $USER con el usuario de tu sistema.

$ sudo chown -R :$USER /usr/local/rvm

Una vez hecho esto podemos ejecutar el comando de instalación de nuevo y debiera ser un éxito. Aunque hay que tener algo de paciencia porque tarda un poco.

Una vez haya terminado este proceso ejecutamos

$ rvm use 2.2

Y después

$ ruby -v

En caso de que estos comandos sean exitosos, será obvio que nuestra instalación ha funcionado. Lo siguiente es utilizar cualquier versión de ruby que necesitemos además de la ya instalada, por ejemplo

$ rvm install 1.9.3

$ rvm use 1.9.3

$ ruby -v

Cada uno de estos comandos deberá ser ejecutado sin problema alguno.

Pues bueno, ya tenemos varias versiones de ruby, ahora pasemos a instalar apache, mysql y postgresql

$ sudo apt-get install apache2 apache2-threaded-dev mysql-client mysql-server libmysqlclient-dev postgresql postgresql-contrib

Nos pedirá ingresar una contraseña para el usuario root de mysql, una vez hecho esto la instalación continuará hasta haber finalizado.

Una vez completada la instalación, si vamos a la url de nuestro server, este deberá mostrar una página como esta

apache

Y en terminal podríamos ingresar a mysql:

$ mysql -u root -p

Ingresamos la contraseña que hayamos capturado durante la instalación y listo (para salir de mysql ejecutamos el comando ´quit´).

Y para usar postgresql

$ sudo -i -u postgres
$ psql

Para salir:

$ \q
$ exit

Pues bien, ya tenemos instalada la mayor parte de nuestro ambiente, ahora lo que requerimos es que instalemos passenger, para lo cual seguiremos los pasos de la guía oficial encontrados aquí.

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
$ sudo apt-get install -y apt-transport-https ca-certificates
$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
$ sudo apt-get update
$ sudo apt-get install -y libapache2-mod-passenger
$ sudo a2enmod passenger
$ sudo service apache2 restart

Y listo, tenemos nuestro ambiente configurado, lo único que resta es editar/crear los Virtual Hosts, coloco un ejemplo de 2 Virtual Hosts utilizando las versiones de Ruby que hemos instalado.

<VirtualHost *:80>

ServerName app.com

ServerAdmin webmaster@localhost

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

PassengerRuby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby
DocumentRoot /your/path/app/public
<Directory /your/path/app/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>

ServerName app2.com
ServerAdmin webmaster@localhost
DocumentRoot /your/path/app2/public

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

PassengerDefaultRuby /usr/local/rvm/gems/ruby-1.9.3-p551/wrappers/ruby

<Directory /your/path/app2/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>

 

Y pues eso es todo, en teoría todo debe funcionar como seda.

Espero y les sea útil y cualquier duda, pregunten. Saludos.

Leave a Reply

Your email address will not be published. Required fields are marked *