Приложения на Laravel.

Что проект на Laravel получает сразу: APP_KEY и рабочие настройки, SQLite до подключения базы данных, миграции как команда выпуска, обработчик очереди и планировщик.

3 МИН ЧТЕНИЯ

Laravel распознаётся по laravel/framework в composer.json. Вы разворачиваете проект как есть — без настройки сервера и без дополнительных файлов в репозитории.

Как проект собирается и запускается

  • PHP — самая младшая из версий 8.2, 8.3 и 8.4, которая удовлетворяет требованию php в composer.json (8.3, если требование не указано).
  • Composer — composer install --no-dev --optimize-autoloader.
  • Фронтенд-ресурсы — если в package.json есть скрипт build (Vite), он выполняется, и public/build включается в сборку.
  • При запуске — storage:link, затем создаются кеши конфигурации, маршрутов и представлений.
  • HTTPS — ваше приложение считает HTTPS-запросы защищёнными, поэтому url(), asset() и перенаправления используют https://, и вам не нужно самостоятельно настраивать доверенные прокси.

Переменные, которые задаются за вас

ПеременнаяЗначение
APP_KEYсоздаётся один раз при первом развёртывании и хранится вместе с вашими переменными
APP_ENVproduction
APP_DEBUGfalse
APP_URLадрес приложения
LOG_CHANNELstderr — чтобы вкладка Журнал показывала журнал Laravel
SESSION_DRIVER, CACHE_STOREfile

Любую из них можно заменить собственной переменной с тем же именем — например, SESSION_DRIVER=redis после добавления Valkey. См. Переменные окружения.

База данных: сначала SQLite

Новое приложение на Laravel без базы данных хранит данные в SQLite — это стандартный вариант самого Laravel — в файле storage/app/database.sqlite на диске приложения. Файл сохраняется между развёртываниями и входит в ежедневные резервные копии приложения, поэтому можно сначала запуститься, а с базой данных определиться позже.

Когда вы добавляете в проект PostgreSQL или MySQL (Обзор → Сервисы → Добавить сервис), приложение переключается на неё со следующим развёртыванием, и миграции выполняются уже там. Данные из файла SQLite не переносятся — если они вам нужны, сначала экспортируйте их, а затем импортируйте на вкладке Данные базы данных. См. Базы данных.

Миграции — команда выпуска

Рекомендуемая команда выпуска — php artisan migrate --force. Она выполняется один раз при каждом развёртывании, до того как новая версия начнёт принимать посетителей; если миграция завершилась ошибкой, текущая версия продолжает работать. Изменить команду можно на вкладке Процессы. См. Развёртывания.

Обработчик очереди и планировщик

Сразу после запуска на вкладке Процессы работают:

ЧтоКоманда
Фоновый процесс «queue»php artisan queue:work --sleep=3 --tries=3 --max-time=3600
Команда по расписанию, каждую минутуphp artisan schedule:run

Они используют ресурсы приложения и перезапускаются при каждом развёртывании. Изменить или убрать их можно на вкладке Процессы — например, заменить обработчик на php artisan horizon, если вы используете Horizon с Valkey.

Для тяжёлой очереди запустите обработчик отдельным сервисом — фоновым процессом со своими ресурсами — и уберите его из Процессы. См. Сервисы проекта.

Valkey для кеша, сессий и очередей

Добавьте в проект Valkey и задайте нужные драйверы на вкладке Переменные, например:

CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST, REDIS_PASSWORD, REDIS_PORT и REDIS_CLIENT=phpredis задаются за вас.

WebSocket (Laravel Reverb)

Запустите Reverb как веб-сервис из кода этого проекта с командой php artisan reverb:start --host=0.0.0.0 --port=$PORT. Он получит собственный адрес.

Файлы и загрузки

Файлы в storage/app — диски Laravel local и public — сохраняются на диске приложения между развёртываниями и ежедневно попадают в резервные копии. Всё остальное в папке проекта при каждом развёртывании берётся заново из репозитория. Для большого числа файлов или крупных файлов используйте объектное хранилище с диском Laravel s3.

Всё ещё не можете разобраться?

Напишите живому инженеру — медианный ответ менее 3 минут в любое время суток.

Написать в поддержку