重启Unicorn问题(capistrano)
我在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
但它不起作用。 我的意思是该命令执行(它询问密码并且没有错误),但是配置文件中的所有更改仍然被忽略(即工作进程数或数据库设置)。
也许这是因为独角兽重启的方式。 并非每个工人都立即重新启动。 这样可以实现零停机和无任何请求。 如果您想确定看到更改,请尝试停止然后启动应用程序。 我有时不得不这样做。 当然你可能会失去一些要求。
以下任务是我用于重启,停止和启动我的unicorn服务器的任务。
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
希望这对你有所帮助。
也许这篇文章很有意思。
看到我的宝贝〜 用USR2重新启动Unicorn似乎没有重新加载production.rb设置
请记住:unicorn.rb中的工作目录应为:/ your / cap / directory / current
不是:File.expand_path(“../ ..”,FILE)
因为独角兽和linux软链接分叉错误:软链接无法正常工作。
你应该试试capistrano-unicorn ,这就是我目前使用下面提到的默认钩子。
建立
将库添加到Gemfile
:
ruby group :development do gem 'capistrano-unicorn', :require => false end
并将其加载到部署脚本config/deploy.rb
:
ruby require 'capistrano-unicorn'
添加unicorn restart任务钩子:
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)
- 每当Gem无法在Capistrano中正确运行“捆绑执行”
- Capistrano – 无法部署我的database.yml
- 使用master.key进行数据海洋部署的Rails 5.2:ActiveSupport :: MessageEncryptor :: InvalidMessage:ActiveSupport :: MessageEncryptor :: InvalidMessage
- 使用Capistrano开始后台任务
- 是否有可能让Capistrano通过反向SSH隧道进行结账?
- Rails部署Digitalocean ActiveSupport :: MessageEncryptor :: InvalidMessage:
- 在使用capistrano和svn部署rails时,在哪里放置app-config-files
- Capistrano 3副本策略相当于
- shared_children在Capistrano 3工作