Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Подготовка к production и деплой приложения

Перенос проекта на боевой сервер. Настройка .env для production. Кеширование конфигураций, маршрутов и представлений. Управление зависимостями.

Прогресс урока: 0%

Поздравляем! Ваш интернет-магазин готов на локальном компьютере. Последний, но один из самых ответственных этапов разработки — это Деплой (Deployment), то есть перенос кода на боевой сервер (Production), где приложение будет доступно реальным пользователям интернета. Среда Production кардинально отличается от вашей локальной среды (Local). Локально мы используем инструменты для отладки, видим подробные сообщения об ошибках, наши файлы не кешируются для удобства разработки. На боевом сервере приоритеты меняются на 180 градусов: на первом месте стоят безопасность и максимальная производительность. Если на Production произойдет ошибка, пользователь должен увидеть красивую страницу 'Что-то пошло не так (500)', а не экран с кусками вашего кода и паролями от базы данных. Процесс деплоя включает клонирование кода из Git-репозитория на сервер (обычно под управлением ОС Linux: Ubuntu или Debian), установку зависимостей, настройку окружения и оптимизацию фреймворка.

Первый шаг на сервере — это настройка файла .env. Этот файл не переносится через Git, вы создаете его на сервере вручную. Ключевые изменения: параметр APP_ENV меняем с 'local' на production. Критически важно установить APP_DEBUG=false. Если оставить true, любая ошибка раскроет злоумышленникам структуру вашей БД и ключи API! Установите корректный APP_URL=https://yourdomain.com. Далее, заполните данные для подключения к боевой базе данных (DB_HOST, DB_DATABASE и т.д.). И, наконец, замените тестовые ключи платежных систем (Stripe, Vipps) на боевые (Live Keys). После настройки .env мы устанавливаем PHP-зависимости. В отличие от локального ПК, на сервере нам не нужны пакеты для тестирования или генерации кода. Поэтому мы запускаем команду composer install --optimize-autoloader --no-dev. Флаг --no-dev исключает установку библиотек для разработки, экономя место и повышая безопасность.

bash
# Пример скрипта деплоя (bash-команды, выполняемые на сервере Ubuntu)

# 1. Переходим в папку проекта
cd /var/www/myshop

# 2. Получаем последние обновления кода из ветки main
git pull origin main

# 3. Устанавливаем зависимости без dev-пакетов
composer install --optimize-autoloader --no-dev

# 4. Выполняем миграции базы данных (флаг --force нужен для production)
php artisan migrate --force

# 5. Сборка фронтенда (если используется Vite/NPM)
npm install
npm run build

# 6. ОПТИМИЗАЦИЯ LARAVEL (Кеширование)
# Кешируем конфигурацию (.env)
php artisan config:cache
# Кешируем маршруты (ускоряет роутинг)
php artisan route:cache
# Кешируем скомпилированные Blade шаблоны
php artisan view:cache
# Кешируем события
php artisan event:cache

# 7. Настройка прав доступа к папкам (важно для Linux)
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache

Обратите внимание на блок команд оптимизации в коде выше. Фреймворк Laravel при каждом запросе пользователя читает десятки конфигурационных файлов и проверяет сотни маршрутов. В production это недопустимая трата ресурсов. Команды php artisan config:cache и route:cache собирают все настройки и маршруты в единые плоские файлы, которые PHP читает мгновенно. Это увеличивает скорость работы приложения в несколько раз! Однако помните: после того как вы закешировали конфиг, Laravel перестает читать файл .env. Если вы изменили пароль от БД или ключ Stripe в .env, изменения не вступят в силу, пока вы снова не запустите php artisan config:cache. Также крайне важным аспектом является настройка прав доступа в Linux (команды chown и chmod). Веб-сервер (Nginx или Apache) работает от имени пользователя www-data. Этот пользователь должен иметь права на запись в папки storage (для логов, сессий, загруженных картинок) и bootstrap/cache (для файлов кеша). И последнее: для работы с платежными системами ваш сайт обязан работать по защищенному протоколу HTTPS. На сервере необходимо установить SSL-сертификат (например, бесплатный от Let's Encrypt).

Задание

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

  • Измените в файле .env параметр APP_DEBUG на false.
  • Выполните команду php artisan config:cache.
  • Попробуйте намеренно вызвать ошибку в коде (например, обратитесь к несуществующей переменной) и посмотрите, как теперь выглядит страница ошибки.
  • Выполните php artisan route:cache и view:cache.
  • Очистите все кеши командой php artisan optimize:clear, чтобы вернуть приложение в режим разработки.
10 баллов

Почему при деплое на боевой сервер параметр APP_DEBUG в файле .env ОБЯЗАТЕЛЬНО должен быть установлен в false?

Напишите команду artisan, которая используется для объединения всех конфигурационных файлов в один кеш-файл для ускорения работы приложения.