Loading...

Обучение / Развёртывание

Как развернуть приложение Laravel на cdn.com.tr

Выведите приложение Laravel в production без аренды и патчинга сервера. Два пути: полностью управляемая среда выполнения PHP или собственный контейнер, развёрнутый из Git, — оба за CDN edge, с управляемой базой данных, автоматическим HTTPS и WAF.

9 мин чтения Средний Updated

Как развернуть приложение Laravel на cdn.com.tr

Два способа деплоя

Вам нужны приложение Laravel, Git-репозиторий и аккаунт cdn.com.tr. Есть два пути, и можно выбрать любой. Управляемая платформа PHP запускает ваше приложение Laravel на современной среде выполнения PHP 8 с управляемой базой данных, Redis, автоматическим SSL и WAF — писать Dockerfile не нужно. Путь через контейнер даёт полный контроль: вы предоставляете Dockerfile, а платформа собирает и запускает его как управляемое container app. Оба варианта работают за CDN edge. В этом руководстве подробно разобран путь через контейнер, а там, где проще, указывается на управляемую платформу.

Как развернуть приложение Laravel на cdn.com.tr — Два способа деплоя
Управляемые платформы и container apps на cdn.com.tr.

Конфигурация и секреты

Никогда не встраивайте .env в образ и не коммитьте секреты в Git. Вместо этого задавайте конфигурацию Laravel как переменные окружения (и секреты) на платформе, чтобы один и тот же образ безопасно работал в production. Как минимум вы зададите ключ приложения, окружение и подключения к управляемым базе данных и Redis.

Значения окружения для настройки на платформе

APP_ENV=production
APP_KEY=base64:...        # php artisan key:generate --show
APP_DEBUG=false
APP_URL=https://app.example.com

DB_CONNECTION=mysql
DB_HOST=<managed-db-host>
DB_DATABASE=<db>
DB_USERNAME=<user>
DB_PASSWORD=<secret>

CACHE_STORE=redis
SESSION_DRIVER=redis
REDIS_HOST=<managed-redis-host>

Добавьте Dockerfile

Закоммитьте Dockerfile в корень репозитория. В этом примере устанавливаются зависимости Composer, и приложение отдаётся на порту 8000. Встроенный сервер Laravel делает пример простым; при высокой нагрузке замените последнюю строку на Laravel Octane (FrankenPHP или Swoole) или используйте вместо этого управляемую платформу PHP.

Dockerfile

FROM php:8.2-cli

# PHP extensions Laravel commonly needs
RUN apt-get update && apt-get install -y libzip-dev \
 && docker-php-ext-install pdo_mysql zip opcache

# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader --no-interaction

EXPOSE 8000
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]

Деплой из Git

В панели cdn.com.tr создайте container app и подключите свой Git-репозиторий. Платформа читает ваш Dockerfile, собирает образ и запускает контейнер. После этого деплой — это просто push в вашу ветку: каждый push собирает новый образ и выкатывает его без простоя.

Выпустите изменение

git add .
git commit -m "Add invoices page"
git push origin main
# cdn.com.tr builds the image and rolls it out automatically

Управляемая база данных, Redis и миграции

Подключите управляемую базу данных и Redis одной командой cdnctl для каждого — они передают подключение вашему приложению как переменные окружения, так что значения .env из шага 2 задаются за вас. Redis даёт Laravel быстрый кеш и хранилище сессий; управляемая база данных резервируется и доступна из приложения. Затем выполняйте миграции для неё как часть деплоя, чтобы схема оставалась синхронизированной.

cdnctl — добавьте базу данных и Redis, затем выполните миграцию
cdnctl accounts use <account_uuid>

cdnctl container addons enable-database --app <app_uuid> --url-scheme mysql
cdnctl container addons enable-redis    --app <app_uuid> --env-prefix REDIS

# run migrations against the managed database
php artisan migrate --force

Домен, HTTPS и edge

Направьте домен на приложение, и cdn.com.tr автоматически выпустит и продлит SSL. Ваше приложение Laravel теперь работает за CDN edge: статические ресурсы кешируются и отдаются близко к посетителям, WAF фильтрует вредоносный трафик, а всплески поглощаются на edge. Если вы вообще не хотите заниматься Dockerfile, управляемая платформа PHP даёт тот же результат — среда выполнения PHP 8, управляемые БД и Redis, автоматический HTTPS и WAF — без сборки образа.

Кому подходит

SaaS и веб-приложения

Запускайте Laravel с управляемой базой данных и Redis, автоматическим HTTPS и WAF, разворачивая прямо из Git.

Модернизация legacy PHP

Перенесите старое PHP-приложение на PHP 8 на управляемой платформе, за CDN и WAF, без изменения архитектуры.

API и бэкенды

Отдавайте маршруты API Laravel как управляемый контейнер с healthcheck, секретами и маршрутизацией на edge.

Вопросы и ответы о деплое Laravel

Нужен ли мне Docker, или можно использовать управляемую платформу?

Подходит любой вариант. Управляемая платформа PHP запускает Laravel без Dockerfile — вы получаете среду выполнения PHP 8 с управляемой базой данных, Redis, HTTPS и WAF. Путь через контейнер подходит командам, которым нужен полный контроль над образом; оба варианта работают за edge.

Где выполняются очереди и планировщик?

Запускайте планировщик и воркеры очередей Laravel как запланированные или долго работающие задачи рядом с приложением, указывая на те же управляемые Redis/базу данных. Храните секреты в переменных окружения, чтобы все процессы использовали одну конфигурацию.

Как работают миграции базы данных при деплое?

Выполняйте 'php artisan migrate --force' для управляемой базы данных как часть деплоя. Поскольку при неудачной сборке продолжает работать предыдущая версия, вы безопасно продвигаетесь вперёд, а схема остаётся синхронизированной с кодом.