Приложения на Laravel.
Что проект на Laravel получает сразу: APP_KEY и рабочие настройки, SQLite до подключения базы данных, миграции как команда выпуска, обработчик очереди и планировщик.
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_ENV | production |
APP_DEBUG | false |
APP_URL | адрес приложения |
LOG_CHANNEL | stderr — чтобы вкладка Журнал показывала журнал Laravel |
SESSION_DRIVER, CACHE_STORE | file |
Любую из них можно заменить собственной переменной с тем же именем — например, 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=redisREDIS_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.