Я хотел бы прояснить, что я ни в коем случае не профессиональный системный администратор, и, возможно, на мой вопрос уже дан ответ, но пока я искал в google / serverfault / SO, я ничего не нашел похожий.
Допустим, у нас есть 2 отдельных файла, которые мы хотим обновить на одном рабочем сервере. Мы можем сделать это с помощью ssh
- git
. Файлы AFAIK загружаются один за другим. Теперь предположим, что мы хотим, чтобы эти два файла были загружены одновременно
, и ни в коем случае не хотим, чтобы пользователь столкнулся с неудачной ситуацией с file1UpdatedVersion
и file2OldVersion
.
Итак, я предполагаю, что нам нужно выключить сервер, загрузить файлы, провести несколько тестов, чтобы убедиться, что все работает правильно, и снова открыть сервер.
Есть ли какое-либо программное обеспечение для автоматизации, в которое мы можем отправить список файлов, предназначенных для загрузки, снабдить его некоторыми тестовыми примерами, в которых наше обновление будет считаться успешным, а затем сервер выключения-обновления-запуска
, обеспечивающий нам таким образом минимальное время простоя сервера
?
Спасибо за ваше время!
Есть много способов автоматизировать развертывание с минимальным временем простоя. В зависимости от ваших текущих настроек могут применяться разные методы. Хорошим началом может быть превращение вашего фактического этапа выпуска в изменение символической ссылки.
Допустим, вы начали со своего приложения v1
, расположенного в / var / www / app / v1
, затем у вас есть символическая ссылка с именем / var / www / app. / current
, указывающий на папку v1
.Вы настраиваете свой веб-сервер на использование текущей папки
в качестве корня документа. Когда вы собираетесь выпустить v2
, вы загружаете его в / var / www / app / v2
, а затем изменяете свою текущую
символическую ссылку на ] v2
. Используя этот метод, вы получите минимальное время простоя (если оно вообще есть), и пользователи не окажутся в состоянии, в котором одновременно обслуживаются разные версии.
Чтобы избежать этого вручную, существуют доступные инструменты, которые делают это за вас. . Вот несколько примеров :
Если вы хотите продвинуть процесс развертывания еще на один шаг, я бы порекомендовал изучить неизменяемый концепция сервера или инструменты, такие как Docker