我有一个RubyOnRails项目,并在Ubuntu服务器上的nginx上使用Unicorn进行部署。
如果我更改其中一个配置文件,我需要重新启动Unicorn,但是当我杀死Unicorn的主进程并使用bundle exec
再次启动时,它会关闭我的网站。
有没有办法让Unicorn使用新文件而不会中断进程并停止运行?
答案 0 :(得分:8)
在我的capistrano deploy.rb中,我有:
desc "Zero-downtime restart of Unicorn"
task :restart, :except => { :no_release => true } do
run "kill -s USR2 unicorn_pid"
end
“Lighting fast, zero-downtime deployments with git, capistrano, nginx and Unicorn”中详细记录了这一点。
答案 1 :(得分:1)
这两个答案,包括已接受的答案,都很糟糕。
http://unicorn.bogomips.org/SIGNALS.html表示向主进程发送HUP
。
desc "Zero-downtime restart of Unicorn"
task :restart, :except => { :no_release => true } do
run "kill -s HUP `cat tmp/pids/unicorn.pid`"
end