Могу ли я перезагрузить конкретный файл во время оперативного исправления в nginx ruby ​​на рельсах при перезапуске сервера? - PullRequest
0 голосов
/ 10 июля 2019

Иногда мне приходится оперативно исправлять производственный код из-за ошибки / ошибки (в основном в одном файле), но я установил для eager_load и cache_classes значение true в среде разработки. Из-за этих двух параметров загрузка сервера занимает около 2 с половиной минут, и то же самое относится и к оперативному обновлению.

Моя конечная цель - сократить время загрузки сервера. Одним из способов является добавление 'require: false' для драгоценных камней, которые не требуются при запуске приложения, а затем загружать их позже при необходимости. Но возможно ли перезагрузить только обновленный файл вместо перезапуска всего приложения?

Я использую бесплатный сервер nginx (версия Enterprise nginx может быть решением, обеспечивающим нулевое время простоя, но возможно ли это в версии?)

1 Ответ

0 голосов
/ 11 июля 2019

Покупка корпоративной версии Nginx вам не поможет. Nginx используется в паре с Phusion Passenger / Unicorn / Thin. Развертывание с нулевым временем простоя должно быть реализовано не в Nginx, а в Passenger / Unicorn. Я предпочитаю использовать Unicorn, он бесплатный, мощный и поддерживает развертывание без простоев.

В производственной среде Rails необходимо быстро загружать и кэшировать HTTP-запросы к каждому файлу на сервере. Я предлагаю не менять это поведение, так как его изменение замедлит работу.

Я настоятельно рекомендую не изменять файлы на сервере. SE Capistrano / Mina для развертывания. Смена файлов вручную может привести к остановке производства, и у вас наверняка будут огромные простои.

Capistrano может помочь вам развернуть проект с помощью одной команды. Также Capistrano может помочь вам быстро вернуться к предыдущей версии, если что-то пойдет не так.

https://www.digitalocean.com/community/tutorials/how-to-set-up-zero-downtime-rails-deploys-using-puma-and-foreman

https://www.devroom.io/2011/09/14/lighting-fast-zero-downtime-deployments-with-git-capistrano-nginx-and-unicorn/

...