【问题标题】:Restart Unicorn issue (capistrano)重启独角兽问题(capistrano)
【发布时间】:2012-01-26 15:52:38
【问题描述】:

我在 deploy.rb 中有以下设置来重启我的服务器:

namespace :deploy do
  task :restart do
    run "if [ -f #{unicorn_pid} ] && [ -e /proc/$(cat #{unicorn_pid}) ]; then kill -USR2     \`cat #{unicorn_pid}\`; else cd #{deploy_to}/current && bundle exec unicorn -c #{unicorn_conf} -    E #{rails_env} -D; fi"
  end
end

但它不起作用。我的意思是命令执行(它询问我密码并且没有给出错误),但配置文件中的所有更改仍然被忽略(即工作进程的数量或数据库设置)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 capistrano unicorn


    【解决方案1】:

    也许这是因为独角兽重启的方式。并非每个工作人员都会立即重新启动。这是为了使停机时间为零并且不丢失任何请求成为可能。如果您想确定地查看您的更改,请尝试停止然后启动您的应用程序。我不得不这样做几次。当然,您可能会放弃一些请求。

    以下任务是我用于重启、停止和启动我的独角兽服务器的任务。

    desc "Zero-downtime restart of Unicorn"
    task :restart, :except => { :no_release => true } do
      run "kill -s USR2 `cat #{shared_path}/pids/unicorn.pid`"
    end
    
    desc "Start unicorn"
    task :start, :except => { :no_release => true } do
      run "cd #{current_path} ; bundle exec unicorn_rails -c config/unicorn.rb -D -E production"
    end
    
    desc "Stop unicorn"
    task :stop, :except => { :no_release => true } do
      run "kill -s QUIT `cat #{shared_path}/pids/unicorn.pid`"
    end
    

    希望对你有所帮助。

    也许this 的文章很有趣。

    【讨论】:

    • 我也有同样的问题,而且我只运行 1 个工人,所以我想不可能是这样。
    【解决方案2】:

    看这里我的宝贝~ Restarting Unicorn with USR2 doesn't seem to reload production.rb settings

    请记住:您在 unicorn.rb 中的工作目录应该是:/your/cap/directory/current

    不是:File.expand_path("../..", FILE)

    因为unicorn和linux软链接分叉错误:软链接不能正常工作。

    【讨论】:

      【解决方案3】:

      你应该试试capistrano-unicorn,这是我目前使用的下面提到的默认挂钩。

      设置

      将库添加到您的Gemfile

      ruby group :development do gem 'capistrano-unicorn', :require => false end

      并将其加载到您的部署脚本config/deploy.rb

      ruby require 'capistrano-unicorn'

      添加独角兽重启任务钩子:

      ruby after 'deploy:restart', 'unicorn:reload' # app IS NOT preloaded after 'deploy:restart', 'unicorn:restart' # app preloaded after 'deploy:restart', 'unicorn:duplicate' # before_fork hook implemented (zero downtime deployments)

      【讨论】:

        猜你喜欢
        • 2012-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多