У меня есть следующие задачи в моем deploy.rb
namespace :unicorn do
desc "stop unicorn"
task :stop, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} kill `cat #{unicorn_pid}`"
end
desc "start unicorn"
task :start, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && #{try_sudo} unicorn -c #{current_path}/config/unicorn.rb -E #{rails_env} -D"
end
task :reload, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} kill -s USR2 `cat #{unicorn_pid}`"
end
after "deploy:restart", "unicorn:reload"
end
Когда я запускаю единорог: запуск или единорог: перезагрузка задач с моей машины разработки, на сервере все выглядит нормально:
$ ps aux | grep unicorn
myuser 8196 77.9 12.2 81020 62748 ? Sl 19:18 0:14 unicorn master -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
myuser 8216 0.0 11.5 81020 59232 ? Sl 19:18 0:00 unicorn worker[0] -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
Однако, когда я запускаю полноценное cap deploy , я получаю несколько экземпляров сервера единорога, что чертовски смешивает nginx.
$ ps aux | grep unicorn
myuser 8196 4.4 12.2 81020 62764 ? Sl 19:18 0:14 unicorn master (old) -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
myuser 8216 1.1 13.2 87868 67764 ? Sl 19:18 0:03 unicorn worker[0] -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
myuser 8362 5.8 12.8 83448 65408 ? Sl 19:19 0:16 unicorn master -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
myuser 8385 0.0 12.1 83712 61980 ? Sl 19:19 0:00 unicorn worker[0] -c /home/myuser/www/myapp/current/config/unicorn.rb -E production -D
Понятия не имею, почему единорог: перезагрузка раскручивает эти дубликаты при развертывании. Очевидно это не останавливает предыдущего мастера / рабочего. Мне нужно дважды запустить задачу единорог: остановить , затем единорог: запустить еще раз, чтобы устранить проблему
Кто-нибудь еще сталкивался с этим? Я часами ткнул в это без всякой удачи