如何在不杀死主进程的情况下重新加载Unicorn?

时间:2012-01-16 13:44:34

标签: ruby-on-rails ruby-on-rails-3.1 nginx unicorn

我有一个RubyOnRails项目,并在Ubuntu服务器上的nginx上使用Unicorn进行部署。

如果我更改其中一个配置文件,我需要重新启动Unicorn,但是当我杀死Unicorn的主进程并使用bundle exec再次启动时,它会关闭我的网站。

有没有办法让Unicorn使用新文件而不会中断进程并停止运行?

2 个答案:

答案 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