Перезапуск Unicorn с USR2, похоже, не перезагружает настройки production.rb - PullRequest
24 голосов
/ 22 февраля 2012

У меня работает единорог, и я пытаюсь заставить работать ноль простоев.

Пока все это потрясающий соус, мастер-процесс разветвляется и запускает 4 новых рабочих, затем убивает старого, всеhappy.

Наши сценарии отправляют следующую команду для перезапуска Unicorn:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

На первый взгляд все выглядит отлично, но оказывается, что Unicorn не перезагружает production.rb.(Каждый раз, когда мы внедряем, мы меняем значение config.action_controller.asset_host на новую конечную точку контейнера CDN с нашими предварительно скомпилированными активами.)

После перезапуска Unicorn таким образом, хост ресурса все еще указывает на старую версию.,Выполнение реального перезапуска (то есть: остановка главного процесса, затем запуск единорога с нуля) подхватывает новые изменения конфигурации.

preload_app имеет значение true в нашем единорогефайл конфигурации.

Есть мысли?

Ответы [ 2 ]

24 голосов
/ 26 февраля 2012

Я предполагаю, что ваши единороги перезапускаются в старом рабочем каталоге, а не в новом рабочем каталоге - другими словами, если ваш рабочий каталог в unicorn.rb равен <capistrano_directory>/current, вам нужно убедиться, что символическая ссылка произошлапрежде чем пытаться перезапустить единорогов.

Это объясняет, почему их остановка и запуск работают вручную: вы делаете это после развертывания, предположительно, что заставляет их запускаться в правильном каталоге.

Когда в процессе развертывания вы перезапускаете единорогов?Вы должны убедиться, что сигнал USR2 отправляется после того, как новый каталог релиза является символической ссылкой как текущий.

Если это не поможет, пожалуйста, укажите ваш unicorn.rb и deploy.rb;это намного упростит отладку этой проблемы.

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

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

NOT be: File.expand_path("../ ..", FILE )

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

, например:

cd current #current - это мягкая ссылка на другой каталог

... ...

когда мы получаем наш рабочий каталог, мы получаем абсолютный путь, а не путь в"текущий"

...