2012-01-02 16 views
5

Ok, estoy haciendo mi primera aplicación de ruby. Quien sabe que mover todo a 'producción' es tan fugitivo complicado. Hasta ahora me he esforzado por configurar a los pasajeros, lograr que se ejecute al inicio y luego obtener redis para que se ejecuten al inicio.¿Cómo creo un trabajador resque automáticamente en el arranque?

Mi última tarea es en el arranque para agregar 1 trabajador. En este momento, tengo que entrar y ejecutar mi comando de rake rake workers:start. Obviamente, esto no es bueno cuando quiero cerrar ssh ... por lo que no sé cómo o cuál es el siguiente paso.

He intentado copiar la configuración predeterminada resque a config.ru y simplemente explota Pasajero con errores. También busqué resque-pool que algunas personas mencionaron, pero eso está por encima de mi cabeza.

todo lo que tengo que hacer es agregar 1 trabajador en el arranque. Esto no es tan serio de una aplicación tan simple sería lo mejor en este punto.

+0

Por cierto, ¿usa Rails? ¿O algún otro marco? –

+0

Sinatra. lo siento, debería haber mencionado que – Tallboy

+0

entiendo lo que siente.También me sentí abrumado :-) –

Respuesta

4

En producción, debe utilizar god para ver sus procesos. Incluso si este proyecto es pequeño, le recomiendo invertir su tiempo y configurarlo.

Otro grande a debe es Capistrano.

Entonces, si usabas a dios, aquí hay un config file que te ayudaría.

También puede intentar programar rake resque:work en el inicio del sistema, utilizando un script adecuado en /etc/init.d/ o /etc/init/ u otro (depende del sistema que utilice). Intenté esto hace algún tiempo y me rendí (no recuerdo por qué).

Entiendo que esta mi respuesta no es exactamente lo que estás buscando en este momento. Pero imagine esto: si todo está configurado, entonces implementar la próxima versión es tan fácil como ejecutar rake deploy en su máquina de desarrollo. Y se encargará de extraer su código del repositorio, ejecutar migraciones, reiniciar trabajadores y servidores web y lo que no.

+1

Sé que esta no es la respuesta que esperabas, pero ¿cómo podría hacerlo con un script de inicio "adecuado"? Prometo que estudiaré más a Dios y a Capistrano, pero solo quiero que funcione primero. Estoy usando CentOS. – Tallboy

+0

Hmm, estoy usando ubuntu en mis servidores. No sé sobre centos, lo siento. –

+0

Para las personas que creen que Dios es alguien a quien adorar, y no algo para usar, esta es una solución inaceptable. Una mejor alternativa sería Monit. – sockmonk

6

No uso la gema de dios porque (1) he visto un proyecto que fue muy afectado por la complejidad de la configuración que introdujo, y (2) estoy muy cómodo con el estándar Linux (Ubuntu) herramientas que manejan este tipo de cosas.

Para iniciar los trabajadores Resque en el arranque

tengo este código en mi archivo /etc/rc.local. Tengo un usuarioimplementar en el sistema:

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

Entonces, en esos guiones que configurar el entorno de rubí y ejecutar la tarea rake:

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

He estado usando este tipo de creado durante años, y es sólido. Los servidores no se cuelgan. Todavía no necesito la sobrecarga de instalar otro sistema (como la gema de dios) para vigilar estos otros servidores.

Además, utilizo una gema capistrano para manejar el reinicio de los trabajadores en el despliegue.

+0

Oye, veo que respondiste esto hace casi 4 años, pero ... ¿Tendrías una forma de borrar a los trabajadores de resque ... Usar ps ax y matar al pid mata el proceso, pero resque aún los mantiene registrados. – jdkealy

+0

hmm ... Lo siento, no es así. Aquí están mis scripts de resque, si hay alguna ayuda: https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

¡Hola, gracias por contactarme! Acabo de implementar esto ayer: https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb Estaba preocupado por matar a un servidor mientras los trabajadores resque estaban ocupados con una tarea y agregar un enlace simbólico a un script bash que ejecuta una tarea de rake en /etc/rc0.d/ parece dejar a los trabajadores con gracia! – jdkealy

Cuestiones relacionadas