Как перейти в режим сопровождения для безопасного обновления производственного приложения в Symfony 2? - PullRequest
8 голосов
/ 11 ноября 2011

Мне нужно обновить исходные файлы (извлекать и обновлять из репозитория) на моем производственном сервере, запускать миграции и восстанавливать кэшированные ресурсы.

Есть ли какой-нибудь механизм в Symfony 2, чтобы сделать это безопасно? Как перевод сайта в «режим сопровождения» (который должен бросить 503) или что-то еще?

Ответы [ 5 ]

5 голосов
/ 29 февраля 2012

Я только что нашел Bundle для Symfony 2, который предлагает вам 2 дополнительные команды в консоли, чтобы перевести ваше приложение в режим обслуживания.Вот, пожалуйста: https://github.com/lexik/LexikMaintenanceBundle

3 голосов
/ 11 ноября 2011

Я пытался решить, как бы это реализовать.С одной стороны, Symfony2 обеспечивает достойное кэширование продукта, поэтому, если вы не деструктивно изменяете схему базы данных (удаляя столбцы или таблицы и т. Д.), Вы, вероятно, можете просто изменить схему, развернуть ее из репозитория и затем очистить свой продукт.кэш.Именно так я и веду большую часть времени.

С другой стороны, если вы действительно хотите перейти в режим обслуживания, вам понадобится решение с минимальной нагрузкой на платформу (т. Е. Вы, вероятно, нене хотите запускать ядро), или вы все равно побеждаете цель: снимая нагрузку с фреймворка, пока вы гадите с вещами.

Если бы это был я, я бы, вероятно, написал простое обслуживаниеСценарий, который просто устанавливает заголовок 503, может, обслуживает некоторый статический html (созданный из шаблонов моего сайта) и отправляет его обратно пользователю, а затем использует некоторую условную логику в моем app.php, чтобы использовать его, когда я должен быть в режиме обслуживания.Это некрасиво, но работает.

1 голос
/ 10 марта 2016

Я могу порекомендовать использовать deployer (http://deployer.org/) для развертывания приложения Symfony2. Таким образом, вам не требуется страница обслуживания. Инструмент поставляется с уже включенными шаблонами symfony2 и symfony3. Он генерирует ваши ресурсы, нагревает кэш и отслеживает ваши каталоги релизов. Также легко вернуться к предыдущей версии. есть текущая ссылка, которая всегда указывает на ваш текущий каталог выпуска. Если развертывание выпуска завершено, эта ссылка обновляется во вновь созданный каталог выпуска.

Что касается миграции доктрин, вам нужно написать для этого специальное задание.

1 голос
/ 14 ноября 2011

Не знаю, как это сделать для более крупного сайта, где пользователь может быть в середине какой-либо транзакции (например, покупки), но для более мелкого сайта вы не могли бы просто использовать файл .htaccess (тот, который находится ввеб-каталог (предполагается, что он является вашим корневым каталогом) для перенаправления на некоторую страницу обслуживания вместо app.php.

0 голосов
/ 11 ноября 2011

Пожалуйста, посмотрите на capifony http://capifony.org/

Имеет отличную поддержку Symfony2.

...