Перезагрузите Nginx из Rails, не прерывая запрос - PullRequest
0 голосов
/ 03 октября 2018

У меня есть приложение 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перезагрузка, кажется, решает проблему, это пока подойдет, но вряд ли это лучшее решение, поэтому приветствуются лучшие идеи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...