Production-развертывание и итоговый сквозной проект
Лабораторная работа 11. Production-развертывание Symfony-приложения
Аудиторная работа: 3 ак. ч.
Самостоятельная работа: 4 ак. ч.
Цель: подготовить BizFlow к production-развертыванию.
Типовой deployment Symfony включает установку production-зависимостей, настройку переменных окружения, выполнение миграций, очистку/прогрев кэша и проверку приложения. [30] Composer рекомендует оптимизированную автозагрузку для production. [31]
Задание
-
Создайте:
deploy/
-
Подготовьте production-конфигурацию для одного варианта:
Nginx + PHP-FPM
или:
Apache + PHP
-
DocumentRoot должен указывать только на:
public/
-
Запрещен прямой HTTP-доступ к:
.env
.env.local
composer.json
composer.lock
src/
config/
var/
vendor/
-
Создайте:
deploy/deploy.sh
-
Скрипт должен выполнять логические этапы:
получение новой версии;
установка production dependencies;
миграции;
очистка cache;
warmup;
проверка приложения.
-
Используйте production-установку Composer:
composer install --no-dev --optimize-autoloader
-
Production environment:
APP_ENV=prod
APP_DEBUG=0
-
Очистите production cache:
APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
-
Выполните миграции.
-
Реализуйте:
GET /health
-
/health должен проверять:
приложение запущено;
БД доступна.
-
/health не должен раскрывать:
пароли;
DSN;
stack trace;
полные пути файловой системы.
-
Добавьте production logging.
-
Проверьте, что APP_DEBUG=0.
-
Проверьте .gitignore.
-
Выполните:
composer audit
-
Не допускайте production deployment при падении тестов.
-
Создайте:
deploy/pre-deploy-check.sh
-
Скрипт должен проверять:
composer validate;
tests;
Doctrine schema;
Twig;
YAML;
наличие APP_ENV=prod;
отсутствие APP_DEBUG=1.
-
Подготовьте rollback-план:
docs/deployment/rollback.md
-
Rollback-план должен включать:
rollback application version;
rollback strategy для БД;
резервное копирование;
проверку health endpoint.
-
Создайте production checklist:
docs/deployment/checklist.md
-
Минимум 20 пунктов.
-
Выполните два ИИ-ревью.
Запрос DevOps-агенту
Ты — DevOps engineer для Symfony.
Проанализируй проект и подготовь production deployment checklist.
Проверь:
APP_ENV;
APP_DEBUG;
Composer;
autoload;
cache;
Doctrine migrations;
permissions;
public directory;
secrets;
web server;
logs;
health checks;
rollback.
Не предполагай наличие Kubernetes или облачного сервиса.
Запрос security reviewer
Ты — security reviewer.
Проведи pre-production review Symfony-приложения.
Ищи:
debug в production;
открытые .env;
секреты в Git;
directory listing;
доступ к var/;
доступ к vendor/;
небезопасные permissions;
небезопасные upload directories;
необработанные stack traces;
уязвимые Composer dependencies.
Сформируй блокирующие deployment проблемы.
Самопроверка
composer validate
composer audit
php bin/console lint:yaml config
php bin/console lint:twig templates
php bin/console doctrine:schema:validate
php bin/phpunit
APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
Критерии приемки
[ ] DocumentRoot = public/
[ ] production dependencies устанавливаются
[ ] optimized autoloader используется
[ ] APP_DEBUG=0
[ ] миграции предусмотрены
[ ] cache clear выполняется
[ ] тесты являются deployment gate
[ ] /health работает
[ ] secrets не публикуются
[ ] имеется rollback plan
[ ] имеется production checklist
[ ] имеется AI log
Официальная документация Symfony относит установку vendor dependencies, миграции и очистку/прогрев cache к типовым этапам deployment. [30]
