加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – capistrano顺序重启

发布时间:2020-12-17 03:13:49 所属栏目:百科 来源:网络整理
导读:我将capistrano配置为跨三个物理服务器进行部署.我想配置重启任务以顺序转到每个服务器并重新启动应用程序,而不是一次性转到所有服务器的默认方式. 这是当前的部署任务: namespace :deploy do task :start,:roles = :app,:except = { :no_release = true }
我将capistrano配置为跨三个物理服务器进行部署.我想配置重启任务以顺序转到每个服务器并重新启动应用程序,而不是一次性转到所有服务器的默认方式.

这是当前的部署任务:

namespace :deploy do

  task :start,:roles => :app,:except => { :no_release => true } do 
    run "cd #{current_path} && bundle exec unicorn_rails -c #{current_path}/config/unicorn.rb -E #{rails_env} -D"
  end

  task :stop,:except => { :no_release => true } do 
    run "kill `cat #{current_path}/tmp/pids/unicorn.pid`"
  end

  task :restart,:except => { :no_release => true } do
    stop
    sleep(10)
    start
  end

end

我在想这样的事情:

#this does not work 
task :sequential_restart do
   find_servers(:roles => :app).each
    restart
   end
 end

有任何想法吗?

解决方法

我使用HOSTFILTER环境变量执行非常类似的操作,该环境变量有效地将所有内容限定到与过滤器匹配的主机.

就像是

find_servers(:roles => :app).each do |server|
  ENV['HOSTFILTER'] = server.host
  restart
end
ENV['HOSTFILTER'] = nil

应该做的伎俩.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读