2012-01-16 7 views
5

Tengo un proyecto RubyOnRails, y lo implementé con Unicorn en nginx en un servidor Ubuntu.¿Cómo recargo Unicorn sin matar el proceso maestro?

Necesito reiniciar Unicorn si cambio uno de los archivos de configuración, pero hace que mi sitio se cierre cuando elimino el proceso maestro de Unicorn y lo reinicio con bundle exec.

¿Hay alguna manera de hacer que Unicorn trabaje con archivos nuevos sin matar el proceso y bajar?

Respuesta

8

En mi deploy.rb Capistrano que tengo:

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s USR2 unicorn_pid" 
end 

Esto está bien documentado en "Lighting fast, zero-downtime deployments with git, capistrano, nginx and Unicorn".

+0

he hecho algunos progresos con su consejo, gracias pero ahora tengo nuevos errores. cuando ingreso "reinicio del límite" e ingreso mi contraseña, tengo lo siguiente: '** [out :: nombre_aplicación] $ rvm_path (/root/.rvm/) no existe. *** [err :: app_name]/usr/local/rvm/bin/rvm-shell: línea 57: rvm: comando no encontrado *** [err :: app_name] Error: RVM no pudo usar 'ruby -1.9.2-p290'' si pudiera entender los resultados de google, necesito cambiar mi rvm_path var a "/ usr/local/rvm/bin" (es realmente un directorio existente), pero no puedo encontrarlo en cualquier sitio. – leitasat

+0

¿reiniciar un script que codificó? Si este es el caso, puede agregar un 'rvm use 1.9.2' en su script para que esté al tanto de la versión de rvm que necesita usar. De lo contrario, marque la respuesta como correcta y abra una nueva para el problema de rvm. Me encantaría ayudar. – tommasop

+0

Bien, he arreglado mi rvm (no había gema necesaria) y ahora parece que capistrano ciertamente cumple mis órdenes, pero unicornio no considera mis cambios en los archivos de configuración de todos modos. (por ejemplo, número de procesos de trabajo o configuración de base de datos) – leitasat

0

Ambas respuestas, incluida la aceptada, son malas.

http://unicorn.bogomips.org/SIGNALS.html dice envía un HUP al proceso maestro.

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s HUP `cat tmp/pids/unicorn.pid`" 
end 
+0

La pregunta no era cómo recargar (que es HUP), sino cómo REINICIAR con gracia lo que ya es USR2 – tommasop

Cuestiones relacionadas