Могу ли я перезагрузить конкретный файл во время оперативного исправления в nginx ruby ​​на рельсах при перезапуске сервера?

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

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

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

1 ответ

Покупка корпоративной версии 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/

Другие вопросы по тегам