Rails en producción - Parte 5 - Mongrel e instalación de nuestra aplicación

ruby, rails, sysadmin Deja un comentario

Mongrel

Mongrel será el encargado de atender las peticiones HTTP que lleguen del servidor web y ejecutar nuestra aplicación en el intérprete de Ruby.

Para instalar mongrel simplemente haremos:

$ sudo gem install mongrel mongrel_cluster --include-dependencies --no-rdoc --no-ri

Instalación de nuestra aplicación

Supondré que tenemos nuestra aplicación en un repositorio de subversion. En este caso, antes de poder hacer un export de la aplicación desde el repositorio, necesitaré instalar subversion:

$ sudo aptitude install subversion -y

Ahora ya podré transferir una copia de mi aplicación al servidor de producción. Supondré que la aplicación la vamos a instalar, por ejemplo, en /var/www/miaplicacion/current.

$ sudo chown usuario:usuario /var/www
$ mkdir /var/www/miaplicacion
$ cd /var/www/miaplicacion
$ svn export http://svn.midominio.com/miaplicacion/trunk current

Necesitamos crear una base de datos para la aplicación:

$ mysql --user=root -p
mysql> grant all on miaplicacion_production.* to miaplicacion@localhost identified by 'miaplicacion';
mysql> flush privileges;
mysql> create database miaplicacion_production;

Es decir, hemos creado una base de datos llamada “miaplicacion_production” y un usuario “miaplicacion”, con idéntica password, que dispone de todos los permisos en “miaplicacion_production”.

Normalmente, tendremos que configurar el fichero config/database.yml de nuestra aplicación para que apunte a la base de datos que acabamos de crear:

production:
  adapter: mysql
  database: miaplicacion_production
  username: miaplicacion
  password: miaplicacion
  socket: /var/run/mysqld/mysqld.sock
  host: localhost
  encoding: utf8

Antes de poder arrancar nuestra aplicación deberemos instalar todas las gemas que utilicemos y que no hayamos instalado. Si no nos acordamos podemos intentar arrancar la aplicación y ver los errores. Leyendo el log de errores suele ser fácil identificar si nos falta alguna gema. Una que siempre viene bien será:

$ sudo gem install rake

Hay que tener en cuenta que si no especificamos la versión, gem install instalará la última versión disponible en el repositorio. Esto quiere decir que en el entorno de desarrollo y en el de test, si instalamos las gemas hace tiempo, las versiones pueden ser inferiores, y por lo tanto, nos podemos encontrar con problemas de compatibilidad. Para ver las gemas instaladas en una máquina y sus versiones podemos ejecutar:

$ gem list

Ahora ya puedo arrancar mi aplicación. De momento, para probar, arrancaremos un único proceso mongrel. Todavía no hemos configurado el servidor web para que apunte a los mongrels, así que no podremos comprobar con un navegador que funciona. Simplemente, veremos que arranca correctamente leyendo el fichero log/production.log:

$ cd /var/www/miaplicacion/current
$ mongrel_rails start -d -e production -p 8000 -P log/mongrel8000.pid

Si en el fichero de log vemos que la aplicación ha arrancado, podríamos incluso comprobar que sirve peticiones:

$ cd
$ wget http://localhost:8000/

Esto me guardaría en el directorio raíz del usuario un fichero llamado index.html con el HTML de la página raíz de mi aplicación. En el fichero de log debería poder ver la petición. ¿Quién necesita un browser?

En el último capítulo configuraremos un cluster de mongrels y apuntaremos el servidor web hacia ellos. Por eso, ahora, paramos el mongrel que hemos arrancado como prueba:

$ mongrel_rails stop -P log/mongrel8000.pid

Tutorial completo

Deja un comentario