Перезапустите проблему с Unicorn (capistrano) - PullRequest
6 голосов
/ 26 января 2012

У меня есть следующие настройки в 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

, но он не работает.Я имею в виду, что команда выполняется (запрашивает пароль и не выдает ошибок), но все изменения в конфигурационных файлах по-прежнему игнорируются (т. Е. Количество рабочих процессов или настройки базы данных).

Ответы [ 3 ]

18 голосов
/ 27 января 2012

Может быть, это из-за того, как единорог перезапускается. Не каждый работник перезапускается сразу. Это сделано для того, чтобы обеспечить нулевое время простоя и не терять ни одного запроса. Если вы хотите увидеть ваши изменения наверняка, попробуйте остановить, а затем запустить приложение. Я должен был сделать это несколько раз. Конечно, вы потенциально потеряете какой-то запрос.

Следующие задачи - это то, что я использую для перезапуска, остановки и запуска моего сервера единорога.

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

Надеюсь, это поможет вам.

Может быть эта статья представляет интерес.

1 голос
/ 15 октября 2013

смотри здесь, моя детка ~ Перезапуск Unicorn с USR2, похоже, не перезагружает настройки production.rb

Имейте в виду, что: ваш рабочий каталог в unicorn.rb должен быть: / your / cap / directory / current

НЕ быть: File.expand_path ("../ ..", ФАЙЛ)

Из-за ошибки разветвления программной ссылки Unicorn и Linux: программная ссылка может работать некорректно.

0 голосов
/ 26 сентября 2013

Вы должны попробовать 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)

...