我让Capistrano将我的应用程序部署到云主机上的Ubuntu远程服务器上。它工作,但Sidekiq没有重新启动。在部署之后,新的Sidekiq作业卡在队列中,直到它最终重新启动。我目前手动SSH进入机器并运行sudo initctl stop/start workers
。我对Capistrano和我的研究并不是非常强大到目前为止我没有找到解决方案。我希望我对比我更熟悉的人遗漏一些明显的东西。这是我的/config/deploy.rb文件的相关部分:
namespace :deploy do
namespace :sidekiq do
task :quiet do
on roles(:app) do
puts capture("pgrep -f 'workers' | xargs kill -USR1")
end
end
task :restart do
on roles(:app) do
execute :sudo, :initctl, :stop, :workers
execute :sudo, :initctl, :start, :workers
end
end
end
after 'deploy:starting', 'sidekiq:quiet'
after 'deploy:reverted', 'sidekiq:restart'
after 'deploy:published', 'sidekiq:restart'
end
更新
来自我的回复日志:
DEBUG [268bc235] Running /usr/bin/env kill -0 $( cat /home/ubuntu/staging/shared/tmp/pids/sidekiq-0.pid ) as ubuntu@159.203.8.242
DEBUG [268bc235] Command: cd /home/ubuntu/staging/releases/20160806065537 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.3" ; /usr/bin/env kill -0 $( cat /home/ubuntu/staging/shared/tmp/pids/sidekiq-0.pid ) )
DEBUG [268bc235] Finished in 0.471 seconds with exit status 1 (failed).
答案 0 :(得分:2)
如果您在Capfile中安装并调用了capistrano-sidekiq gem,我认为您不需要在deploy.rb中使用这些配置。
确保您的Capfile中有require 'capistrano/sidekiq'
,否则无法调用默认任务。