У нас есть производственный сайт с более чем 350 запущенными экземплярами, поэтому отключение сайта даже на короткое время является большой проблемой.
Мой вопрос:
После отправки нашего кода в производство, если есть какие-либо обновления на композиторе, мы должны обновить его, в течение этого периода сайт будет закрыт. Так что же является наилучшей практикой для обновления композитора на рабочем месте без остановки сайта во время обновления?
Я предлагаю использовать этот подход для достижения практически нулевого времени простоя:
Корневой каталог веб-сервера должен быть просто символической ссылкой.
Таким образом, вам не нужно закрывать свой веб-сайт для копирования и загрузки файлов непосредственно в корневой каталог. Просто используйте символические ссылки. Также таким образом намного проще выполнить откат к любой старой версии.
Я настоятельно рекомендую вам использовать систему развертывания, такую как Capistrano (https://github.com/capistrano/capistrano).
Например, Capistrano клонирует вашу ветку / коммит в отдельную папку, запускает скрипты, такие как Composer, и если все в порядке, то создает / перемещает символическую ссылку на эту папку.
Это прозрачно для вашего пользователя.
И если что-то пойдет не так, вы можете попросить Capistrano выполнить «откат», при этом символическая ссылка будет указывать на последнюю рабочую версию (папку).
Я использую Azure для размещения своих сайтов, и я заметил, что они делают следующее:
При запуске программы composer в другой папке пакеты в реальном времени всегда доступны. Единственное время, когда может произойти простоя, — это когда вы копируете файлы в оперативный каталог, но это будет очень кратко.