Могу ли я перезагрузить конкретный файл во время оперативного исправления в 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 может помочь вам быстро вернуться к предыдущей версии, если что-то пойдет не так.