PaaS Инфраструктура в РФ 🇷🇺

Деплой Laravel приложений

Развёртывание Laravel из Git: PHP 8.3, Composer, миграции, MySQL и PostgreSQL. Серверы в РФ, оплата в рублях, авто-SSL и свой домен. Бесплатный старт.

Автодеплой из Git

Платформа сама скачает код с Репозитория, соберет проект и запустит его.

Готовая среда

Не нужно настраивать Nginx или Linux. Под капотом надежные серверы RelaxDev.

Свои домены и SSL

Привяжите свой домен в 1 клик, а платформа автоматически выпустит Let's Encrypt SSL.

RelaxDev разворачивает Laravel-приложения прямо из репозитория: платформа находит composer.json, ставит зависимости, готовит окружение PHP 8.3 с нужными расширениями и поднимает приложение под HTTPS. Настраивать nginx, php-fpm, права на storage и обновление сертификатов вручную не нужно.

Приложение работает на FrankenPHP — это Caddy со встроенным PHP: один процесс отдаёт и статику, и PHP-код, без связки из трёх демонов. Инфраструктура физически в России, оплата в рублях, для юрлиц доступен договор — привычный для PHP-разработчиков сценарий с арендой VPS закрывается деплоем из git push.

Как задеплоить Laravel?

1. Подключите репозиторий

Выберите репозиторий с Laravel-проектом в GitHub, GitLab, GitFlic или GitVerse и укажите ветку. Автоопределение стека находит composer.json с laravel/framework и выбирает PHP-сборщик — вмешиваться не требуется.

2. Задайте APP_KEY и переменные окружения

Это единственный обязательный шаг. Без APP_KEY Laravel вернёт 500 на любой запрос. Сгенерируйте ключ локально и добавьте его в переменные окружения проекта вместе с настройками базы — файл .env в репозиторий коммитить не нужно.

# локально: получить ключ
php artisan key:generate --show
# → base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxx

# в переменные окружения проекта:
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_ENV=production
APP_DEBUG=false
APP_URL=https://ваш-домен.ru
DB_CONNECTION=pgsql
DB_HOST=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...

3. Включите миграции при необходимости

По умолчанию миграции при старте не выполняются — автоматический migrate на каждом рестарте опасен для боевой базы. Чтобы платформа прогоняла их при деплое, добавьте переменную RUN_MIGRATIONS со значением true.

RUN_MIGRATIONS=true   # php artisan migrate --force при старте

4. Задеплойте и подключите домен

После сборки приложение доступно на техническом адресе. Свой домен добавляется в настройках проекта: прописываете A-запись, платформа выпускает и продлевает SSL автоматически. При включённом автодеплое каждый push в выбранную ветку пересобирает проект.

Сравнение платформ

ПлатформаСтатусОплата
HerokuНе работает с РФОплата картой РФ невозможна
Обычный VPSРаботаетnginx, php-fpm, SSL — вручную
Laravel ForgeДоступен частичноВалютная подписка + свой сервер
RelaxDevСерверы в РФРубли, есть бесплатный тариф

Типовой путь для Laravel в России — арендовать VPS и настроить всё руками либо платить за Forge в валюте поверх стоимости сервера. RelaxDev закрывает тот же сценарий деплоем из репозитория: сборка, PHP-окружение, HTTPS и перезапуск при сбое берёт на себя платформа, а оплата идёт в рублях.

Частые ошибки и решения

500 Server Error сразу после деплоя

В девяти случаях из десяти не задан APP_KEY. Сгенерируйте ключ командой php artisan key:generate --show и добавьте его в переменные окружения проекта, затем перезапустите деплой.

Проект собрался как фронтенд вместо Laravel

Laravel содержит package.json с Vite для сборки ассетов, и автодетект мог принять проект за фронтенд. Откройте настройки проекта и выберите сборщик PHP / Laravel вручную.

The stream or file could not be opened / ошибка прав на storage

Каталоги storage и bootstrap/cache должны быть доступны на запись — платформа создаёт и открывает их при сборке. Если ошибка осталась, проверьте, что они не добавлены в .gitignore целиком: нужны сами каталоги с .gitkeep.

Загруженные файлы пропадают после деплоя

Файловая система контейнера обнуляется при пересборке, поэтому storage/app/public не годится для пользовательских загрузок. Используйте файловое хранилище платформы через драйвер s3 — ссылки останутся рабочими между деплоями.

SQLSTATE: connection refused при миграциях

Проверьте DB_HOST и DB_PORT: внутри контейнера localhost указывает на сам контейнер, а не на сервер базы. Используйте адрес базы, выданный платформой, или внешний хост.

FAQ

Какая версия PHP используется?

PHP 8.3 с расширениями pdo_mysql, pdo_pgsql, mbstring, bcmath, gd, zip, intl, opcache и redis. Если нужна другая сборка, подключите собственный Dockerfile.

Нужно ли писать Dockerfile для Laravel?

Нет. Платформа определяет проект по composer.json и собирает его сама. Dockerfile нужен только для нестандартных системных зависимостей.

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

По умолчанию не выполняются — это защита боевой базы от автоматического migrate при каждом рестарте. Включаются переменной RUN_MIGRATIONS=true.

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

Да: queue:work или schedule:work разворачивается отдельным проектом на платформе с теми же переменными окружения и доступом к общей базе или Redis.

Работает ли Laravel Vite для сборки ассетов?

Да, ассеты собираются на этапе сборки образа. Важно, чтобы проект определился именно как PHP-стек, а не как фронтенд — при необходимости выберите сборщик вручную.

Можно ли развернуть Symfony или чистый PHP?

Да, тот же сборщик обрабатывает Symfony, Slim, Yii2 и сайты без фреймворка: document root определяется автоматически по наличию public/index.php.