Подготовка к production и деплой
Студент узнает, как правильно настроить .env файл для боевого сервера и оптимизировать приложение с помощью команд кеширования.
Введение в процесс развертывания (Деплой)
Деплой (Deployment) — это процесс переноса вашего приложения с локального компьютера разработчика на боевой сервер (production), где оно будет доступно реальным пользователям интернета. Это один из самых ответственных этапов. Локальная среда настроена для удобства отладки: она показывает подробные тексты ошибок, не кэширует файлы для мгновенного применения изменений. Боевая среда должна быть настроена на максимальную производительность и абсолютную безопасность.
Основной инструмент настройки окружения в Laravel — файл `.env`. При клонировании проекта на сервер файл `.env` не переносится (он добавлен в `.gitignore`). Вы должны создать его на сервере на основе шаблона `.env.example` и заполнить актуальными данными (Mastery Learning).
# Пример правильной настройки .env для боевого сервера (Production)
# Имя приложения
APP_NAME="My Super Shop"
# Среда окружения. Обязательно production!
APP_ENV=production
# Режим отладки. СТРОГО false. Иначе пользователи увидят ваш исходный код при ошибках.
APP_DEBUG=false
# Базовый URL вашего сайта
APP_URL=https://myshop.com
# Настройки базы данных (указываются доступы боевой БД)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shop_production
DB_USERNAME=prod_user
DB_PASSWORD=SuperSecretPassword123!
# Ключи платежных систем (меняем тестовые на боевые/Live keys)
STRIPE_SECRET=sk_live_51H...
VIPPS_CLIENT_ID=live_client_...
Кэширование и оптимизация производительности
Laravel — мощный фреймворк, но при каждом запросе он выполняет множество операций: читает файлы конфигурации, парсит маршруты, компилирует шаблоны. На сервере мы можем закэшировать эти данные, чтобы они загружались в память мгновенно (Direct Instruction). На основе архивных материалов курса, существует четыре основные команды Artisan, которые необходимо выполнять при каждом деплое приложения.
1. `php artisan config:cache` — объединяет все файлы конфигурации в один кэшированный файл. После этого изменения в `.env` не будут работать, пока вы не очистите кэш!
2. `php artisan route:cache` — компилирует все маршруты в массив для сверхбыстрого поиска. (Работает только если в маршрутах нет анонимных функций/замыканий).
3. `php artisan view:cache` — заранее компилирует все Blade-шаблоны в чистый PHP-код.
4. `php artisan event:cache` — кэширует события и слушатели.
Задание
Пошаговый процесс деплоя приложения на сервер (Ubuntu/Nginx)
- Клонируйте репозиторий проекта: git clone https://github.com/your/repo.git .
- Установите PHP-зависимости без пакетов для разработки: composer install --optimize-autoloader --no-dev
- Создайте файл .env, скопируйте в него данные и установите APP_ENV=production и APP_DEBUG=false.
- Сгенерируйте ключ приложения: php artisan key:generate
- Выполните миграции БД: php artisan migrate --force (флаг --force нужен для production).
- Настройте права доступа к папкам: chmod -R 775 storage bootstrap/cache
- Выполните команды оптимизации: php artisan optimize (эта команда вызывает config:cache и route:cache автоматически).
Сборка Frontend ассетов и SSL
Современный Laravel использует Vite (ранее Webpack/Mix) для сборки JavaScript и CSS файлов. На локальном компьютере вы запускали `npm run dev` для горячей перезагрузки. На сервере необходимо выполнить `npm install`, а затем `npm run build`. Эта команда минифицирует файлы, удаляет лишние комментарии и добавляет хэши к именам файлов для обхода кэша браузера при обновлениях.
Наконец, наличие SSL-сертификата (HTTPS) является абсолютно обязательным требованием для любого интернет-магазина. Платежные шлюзы (Stripe, Vipps) откажутся работать с вашим сайтом, если он работает по протоколу HTTP. Вы можете использовать бесплатные сертификаты от Let's Encrypt, которые легко устанавливаются с помощью утилиты Certbot на вашем сервере.