У меня есть приложение Rails 4, которое позволяет пользователям создавать приложения, все работает нормально, но у меня возникла проблема с завершением развертывания приложения.
Программа развертывания выполняет некоторую логику, а затем создает файл хоста Nginxдля нового приложения и добавляет его в Nginx sites-available
, а затем символическую ссылку на sites-enabled
.Все это хорошо, проблема в том, что для того, чтобы Nginx знал об этом новом хосте, он должен перезагрузиться, что я могу сделать автоматически во время развертывания, но он прерывает запрос.
Это поток:
1 - пользователь нажимает кнопку «Развернуть»
2 - действие контроллера Rails выполняет логику, а затем выполняет некоторые системные вызовы, включая перезагрузку Nginx.
3 - возврат из браузераa 502 Bad Gateway
<- ПРОБЛЕМА </strong>
Тогда, если я перезагрузлю страницу, все в порядке, и новое приложение доступно.
Как я могу предотвратить это?Я попытался использовать service nginx reload
и kill -HUP $( cat /run/nginx.pid )
и получить один и тот же результат.
Интересно, что если я выполняю развертывание уже развернутого приложения (файл хоста уже присутствует в sites-available
/ sites-enabled
) плохой шлюз 502. Не происходит.
Есть идеи?
РЕДАКТИРОВАТЬ
Добавление 3 секунд sleep
после Nginxперезагрузка, кажется, решает проблему, это пока подойдет, но вряд ли это лучшее решение, поэтому приветствуются лучшие идеи!