Unicorn重启/升级不起作用

bik*_*shp 10 unicorn

以下链接到我的独角兽的init脚本. https://gist.github.com/1466775

重启命令从来没有对我有用.我在每次部署后使用升级来重启unicorn.但是每当有新的宝石被添加等重大变化时,升级都不会起作用.最近,我用airbrake替换了hoptoad gem,并且错误地说'未初始化的恒定Airbrake(NameError)'.但当我停下来再次开始独角兽时,它运作良好.问题出在init脚本或其不同的问题上吗?

谢谢.

kaj*_*aji 12

根据您的init脚本,"/ bin/init.d/unicorn restart"将HUP信号发送到unicorn主进程

------裁剪

restart|reload)
    sig HUP && echo reloaded OK && exit 0
    echo >&2 "Couldn't reload, starting '$CMD' instead"
    su - $USER -c "$CMD"
Run Code Online (Sandbox Code Playgroud)

-----裁剪

这就是HUP对独角兽进程的作用:

重新加载配置文件并优雅地重新启动所有工作程序.如果"preload_app"指令为false(默认值),则工作人员还会在重新启动时获取任何应用程序代码更改.如果"preload_app"为true,则应用程序代码更改将不起作用.

您正在寻找的是USR2信号,您的独角兽升级参数已经在进行!

USR2信号重新执行正在运行的二进制文件.一旦确认孩子已启动并正在运行,应将单独的QUIT发送到原始流程.


tox*_*xaq 10

我有一个非常相似的问题,终于找到了解决方案

我之前查看了日志,但显然没有看到(Bundler::GemfileNotFound)错误.事实证明,对早期版本有旧的引用,一旦gem文件发生变化,新的master会无声地失败.尾巴-f你的独角兽日志,看看会发生什么.我的问题都是根据我的unicorn.rb中的以下链接修复的

 before_exec do |server|
    ENV['BUNDLE_GEMFILE'] = "#{root}/Gemfile"
 end 
Run Code Online (Sandbox Code Playgroud)

  • [这](https://github.com/sosedoff/capistrano-unicorn/commit/c1e7a3f2794dd070367d0808ad102a6d20d39cf2)可以是略微更好的解决方案. (3认同)