Ответ
Мой типичный процесс деплоя PHP-приложения, например на Laravel, выглядит так:
- Подготовка кода: Все изменения мержатся в ветку (например,
main), и код проходит ревью и CI-пайплайн (тесты, линтинг). - На сервере: Я подключаюсь к production-серверу и выполняю скрипт деплоя. Часто для этого использую инструменты вроде Envoyer, Deployer или простой bash-скрипт.
Пример bash-скрипта для деплоя:
#!/bin/bash
cd /var/www/my-app
# Получаем актуальный код
git pull origin main
# Устанавливаем зависимости без dev-пакетов
composer install --no-dev --optimize-autoloader
# Применяем миграции базы данных
php artisan migrate --force
# Очищаем и перестраиваем кеш
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Перезапускаем PHP-FPM для применения изменений
sudo systemctl reload php8.2-fpm
- Пост-деплойные проверки: После деплоя я проверяю ключевые функции приложения и мониторю логи на предмет ошибок. Для более сложных проектов мы используем Docker-контейнеры и оркестрацию через Kubernetes, что позволяет реализовать blue-green деплой или canary-релизы для минимизации даунтайма.