Como subir una app de Rails en Site5
Publicado en ruby-on-rails site5 el 20/08/10 a las 09:17 am
Meses atrás, mientras escribía mis primeras líneas en Ruby on Rails salto la duda sobre en donde hospedaría mis futuros proyectos, investigando posteriormente llegue a la conclusión de probar el hosting de Site5.
Lo siguiente en resolver era como rayos iba a correr mi aplicación en el hosting una vez que estuviera terminada, por lo que me di a la tarea de investigar y comparto con ustedes la siguiente receta.
Los siguientes pasos son para correr una app de Rails 2.3.5 en Site5. (Hace unos dias corrimos una en Rails 3.0.0.beta4, pero el procedimiento es ligeramente distinto debido a la participación de Bundler)
1.- Tenemos nuestro proyecto local llamado miapp
2.- Revisamos localmente que gemas tenemos instaladas en nuestro proyecto:
$ cd miapp $ rake gems
Esto nos mostrara las gemas y sus dependencias
3.- Desempaquetamos las gemas necesarias dentro del folder vendor de nuestra aplicación:
$ rake gems:unpack:dependencies
4.- En nuestro CPANEL de Site5 creamos una base de datos y un usuario con todos los permisos sobre ella.
5.- Modificamos la conexión de nuestro config/database.yml a MySQL:
production:
adapter: mysql
encoding: utf8
reconnect: false
database: mibasededatos #nombre de nuestra base de datos
pool: 5
username: miusuario #nuestro usuario de base de datos
password: mipassword #nuestro password de usuario
host: localhost
6.- En config/enviroment.rb agregamos el ambiente de producción:
ENV['RAILS_ENV'] = "production" RAILS_ENV = ENV['RAILS_ENV']
7.- Nos conectamos via SSH a nuestro hosting en Site5:
$ ssh user@domain.com
En este paso es el usuario del hosting arroba el dominio, y el password, será el mismo que el del hosting.
8.- Una vez que accesamos al hosting via SSH, creamos en la raíz un folder llamado apps, que es donde estará nuestra aplicación e ingresamos a el.
$ sudo mkdir apps
$ cd apps
9.- Dentro de apps subimos completo nuestro proyecto local miapp via FTP.
10.- En la terminal vía SSH removemos el folder public_html y redireccionamos el public de nuestro miapp virtualmente:
$ rm public_html $ ls $ ln -s /home/username/apps/miapp/public public_html $ ls -l
Donde username es el usuario que utilizamos en nuestro acceso a SSH.
11.- ingresamos a miapp, al folder public para remover el index.html (paso opcional, se puede hacer localmente o vía FTP)
$ cd apps/miapp $ ls $ cd public $ ls $ rm index.html $ cd ..
12.- nos posicionamos dentro del folder apps donde se encuentra miapp y asignamos permisos:
$ chmod -R 755 miapp/*
13.- Creamos un .htaccess para nuestra aplicación dentro de public (en mi caso utilice el editor nano):
$ nano miapp/public/.htaccess
Dentro del nuevo archivo escribiremos las siguientes líneas y posteriormente lo salvamos:
RailsEnv production PassengerEnabled on PassengerAppRoot /home/username/apps/miapp
Lo que hicimos en este fue declarar nuevamente el ambiente de production, habilitar passenger y fijar la ruta de la app, donde username es el usuario que mencione en el paso 10.
14.- En la terminal realizamos dentro de nuestra app un rake para el esquema de la base de datos.
$ cd app $ rake db:schema:load
15.- hacemos refresh en nuestro browser para ver nuestra app funcionando online.
16.- Cada que se realice un cambio en el código, es necesario reiniciar passenger, para esta tarea con la terminal hacemos lo siguiente:
$ cd apps/miapp $ touch tmp/restart.txt
si hacemos un $ cd tmp y un ls para mostrar los archivos, debe aparecernos un restart.txt dentro. Este paso es necesario cada vez que se modifique algo dentro de nuestra aplicación.
No es una receta definitiva, existen algunas variantes en los pasos, sin embargo lo comparto porque es la forma como me ha funcionado.