Rails en producción - Parte 6 - Cluster de mongrels
ruby, rails, sysadmin Deja un comentarioYa sólo nos queda configurar un cluster de mongrels y apuntar hacia ellos el servidor web nginx. Supongamos que vamos a arrancar 4 mongrels, tal y como representamos en la figura de la primera parte parte de este tutorial. Los mongrels escucharán en los puertos 8000 a 8003.
Para configurar el cluster hacemos:
$ mongrel_rails cluster::configure -e production -p 8000 -N 4 -c /var/miaplicacion/current -a 127.0.0.1 ** Ruby version is not up-to-dateloading cgi_multipart_eof_fix Writing configuration file to config/mongrel_cluster.yml.
Este comando habrá creado el fichero config/mongrel_cluster.yml. Lo editamos y añadimos al final sendas líneas indicando el usuario y el grupo que ejecutarán los mongrels. Como ya indicamos, será un usuario no privilegiado el que ejecute tanto el servidor web como los mongrels:
cwd: /var/www/miaplicacion/current log_file: log/mongrel.log port: "8000" environment: production address: 127.0.0.1 pid_file: tmp/pids/mongrel.pid servers: 4 user: usuario group: usuario
Añadiremos el cluster de mongrels al arranque de la máquina:
sudo mkdir /etc/mongrel_cluster sudo ln -s /var/www/miaplicacion/current/config/mongrel_cluster.yml /etc/mongrel_cluster/miaplicacion.yml sudo cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d sudo chmod +x /etc/init.d/mongrel_cluster sudo /usr/sbin/update-rc.d -f mongrel_cluster defaults sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
Y ya podremos arrancar y parar el cluster de mongrels:
$ sudo /etc/init.d/mongrel_cluster start $ sudo /etc/init.d/mongrel_cluster stop
Ahora sólo nos queda apuntar el servidor web nginx a los mongrels. Para ello, editaremos el fichero /usr/local/nginx/conf/nginx.conf. Éste es un ejemplo básico del cual podemos partir.
user miusuario miusuario; worker_processes 4; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; upstream miaplicacion { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; } server { listen 80; server_name midominio.com; root /var/www/miaplicacion/current/public; index index.html; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect false; if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename.html) { rewrite (.*) $1.html break; } if (!-f $request_filename) { proxy_pass http://miaplicacion; break; } } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
En la sección “upstream” apuntamos hacia los mongrels. En ella, “miaplicacion” es una etiqueta, la misma que usamos más abajo en la línea:
proxy_pass http://miaplicacion;En la sección “server” cabe destacar que “root” apunta al directorio public de mi aplicación.
Rearrancamos nginx para que la nueva configuración surta efecto:
$ sudo /etc/init.d/nginx stop $ sudo /etc/init.d/nginx start
Y ahora sí, por fin, tenemos que poder abrir desde nuestro navegador la URL:
http://midominio.com/
y acceder a nuestra aplicación. Si no tenemos configurado todavía la entrada en DNS, tendremos que poner la IP.
Como una última prueba, probaremos una vez más a rearracar la máquina y ver que todo arranca correctamente.
Tutorial completo
- Rails en producción - Parte 1 - Introducción
- Rails en producción - Parte 2 - Configuración del servidor debian
- Rails en producción - Parte 3 - MySQL, Ruby y Rails
- Rails en producción - Parte 4 - Servidor web nginx
- Rails en producción - Parte 5 - Mongrels e instalación de nuestra aplicación
- Rails en producción - Parte 6 - Cluster de mongrels
![Validate my RSS feed [Valid RSS]](/wp-content/themes/javiervidal/images/valid-rss.png)
28 de Julio de 2008 a las 19:32
Estupendo tuto.. sí señor.. muchas gracias.
f.
28 de Julio de 2008 a las 20:19
Muchas gracias
18 de Agosto de 2008 a las 13:46
Hola, a dia de hoy tengo un servidor LAMP en Debian. Me estoy plantenado formatearlo y añadirle Rails.. Antes de toquetear nada y perder dos dias quiero tener lo conceptos lo mas claros posibles.
Como se pone en produccion mas de una aplicacion?