Comment puis-je recharger la licorne sans tuer le processus de maître?
-
28-10-2019 - |
Question
J'ai un projet RubyOnRails et je l'ai déployé avec Unicorn sur nginx sur un serveur Ubuntu.
Je dois redémarrer Unicorn si je change l'un des fichiers de configuration, mais cela arrête mon site lorsque je tue le processus maître de Unicorn et le relance avec bundle exec
.
Existe-t-il un moyen de faire fonctionner Unicorn avec de nouveaux fichiers sans interrompre le processus et s'arrêter?
La solution
Dans mon capistrano deploy.rb j'ai:
desc "Zero-downtime restart of Unicorn"
task :restart, :except => { :no_release => true } do
run "kill -s USR2 unicorn_pid"
end
Ceci est bien documenté dans " Éclairer des déploiements rapides et sans temps d'arrêt avec git, capistrano, nginx et Unicorn ".
Autres conseils
Les deux réponses, y compris celle acceptée, sont mauvaises.
http://unicorn.bogomips.org/SIGNALS.html dit d'envoyer un HUP
àle processus maître.
desc "Zero-downtime restart of Unicorn"
task :restart, :except => { :no_release => true } do
run "kill -s HUP `cat tmp/pids/unicorn.pid`"
end