NetrunНа главную

Сайты и приложения

Как выложить сайт на Laravel в интернет

· 5 мин чтения

Laravel на своей машине запускается одной командой, а вот выкладывание в интернет по традиции превращается в отдельный проект: сервер, нужная версия PHP с расширениями, composer, nginx с правильным корнем в папке public, php-fpm, права на папки storage и bootstrap/cache, сертификат, база. Каждый пункт по отдельности несложный, но вместе это вечер работы и потом ещё вечер на выяснение, почему страница отдаёт пустой экран.

Netrun убирает эту часть целиком: вы загружаете код, платформа сама видит, что перед ней PHP-проект, ставит зависимости, собирает его и выдаёт публичную ссылку с HTTPS. Ниже — что подготовить в проекте, чтобы всё сошлось с первого раза.

  1. Проверьте, что в корне лежит composer.json#

    Файл composer.json в корне проекта перечисляет зависимости и говорит платформе, что перед ней PHP-проект на Laravel. Папку vendor в архив класть не нужно — библиотеки мы поставим сами по composer.json при сборке, а лишние мегабайты только замедлят загрузку.

  2. Уберите файл .env из архива#

    В .env лежат ключ приложения, пароли и доступы к внешним сервисам, поэтому в архив и в репозиторий он попадать не должен. Все значения из него — ключ приложения, режим работы, доступы к базе и почте — впишите при настройке проекта: они лягут в переменные окружения в зашифрованном виде, и Laravel прочитает их обычным способом.

  3. Выключите режим отладки#

    Перед публикацией переключите приложение в рабочий режим: отладка выключена, окружение — production. Иначе при первой же ошибке посетитель увидит подробную страницу с кусками вашего кода и настройками. Значения задаются теми же переменными окружения при настройке проекта.

  4. Решите, где будет база данных#

    Если сайт работает с базой, её можно поднять рядом в том же проекте: опишите приложение и базу в файле docker-compose, и они поднимутся вместе. Обязательно подключите базе именованный том, иначе данные очистятся при первом же обновлении кода. Миграции удобнее запускать при старте приложения — тогда таблицы создадутся сами.

  5. Загрузите код и заберите ссылку#

    Загрузите проект ZIP-архивом или импортируйте репозиторий из GitHub, в том числе приватный. Netrun поставит зависимости, соберёт проект и запустит его — настраивать nginx, php-fpm и корень в папке public вручную не нужно. Логи сборки и запуска видны в кабинете в реальном времени, а после публикации вы получите ссылку с HTTPS.

Итог: сайт на Laravel открывается по своему адресу с защищённым соединением, без аренды сервера, ручной настройки веб-сервера и выпуска сертификата. На бесплатном тарифе сайт засыпает в простое и просыпается по открытой ссылке — первый ответ после паузы чуть медленнее; на тарифе Pro простоев нет и можно привязать свой домен. Попробовать Netrun.

Частые вопросы

Нужно ли настраивать nginx и php-fpm?

Нет. Веб-сервер, php-fpm и корень в папке public настраиваются автоматически при сборке. От вас нужен только код проекта с composer.json.

Куда девать файл .env?

В архив и в репозиторий его класть не нужно. Значения из него впишите при настройке проекта — они попадут в переменные окружения в зашифрованном виде, и Laravel прочитает их обычным способом через config и env.

Как быть с базой данных и миграциями?

Базу можно поднять рядом в том же проекте через файл docker-compose — приложение, базу и что понадобится ещё. Базе обязательно нужен именованный том, иначе данные пропадут при обновлении кода. Миграции удобнее запускать при старте приложения, тогда таблицы создадутся сами при первой публикации.

Что делать с загруженными пользователями файлами?

Файлы, которые приложение пишет в папку storage, пересоздаются при каждой публикации. Чтобы загрузки сохранялись, складывайте их в постоянную папку проекта — /data: она лежит на сервере отдельно от кода и переживает обновления. Посмотреть и скачать эти файлы можно на вкладке «Данные».

Будет ли сайт засыпать?

На бесплатном тарифе — да: если сайтом долго не пользуются, он засыпает и просыпается, когда кто-то открывает ссылку, поэтому первый ответ после паузы чуть медленнее. На тарифе Pro сайт работает без простоев.

Можно ли запустить несколько сервисов сразу?

Да. Через docker-compose в одном проекте поднимается связка сервисов — например, приложение вместе с базой данных, кэшем и фоновым обработчиком. Числом сервисов мы не ограничиваем: считайте, что потолок задают память и процессор вашего тарифа, они делятся между сервисами проекта.

Где указать токены и другие секретные значения?

В проекте есть вкладка «Секреты» — там задаются значения из кода, например токен от BotFather. Мы храним их в зашифрованном виде: названия переменных вы видите, сами значения не показываем никому, включая вас.

Можно ли подключить свой домен?

Да, на тарифе Pro, и не один: к сайту можно подключить столько своих доменов, сколько вам нужно. Откройте вкладку «Домены» на странице проекта, укажите домен, который вы купили у регистратора, и добавьте DNS-запись по подсказке — так же добавляется каждый следующий. Когда домены готовы, нажмите «Проверить»: Netrun проверит их все разом и выпустит на каждый свой HTTPS-сертификат, поэтому заминка с одним доменом не мешает остальным. Сайт открывается по любому из ваших адресов, а ссылка Netrun остаётся запасной. Если вы подключаете домен целиком (например myshop.com), можно добавить ещё одну запись, и сайт откроется и с www. Доступно для сайтов — боту и фоновому скрипту домен не нужен.

Запустите свой проект

Загрузите код, ответьте на пару вопросов — и получите рабочую ссылку. Есть бесплатный тариф

Попробовать Netrun
Все статьи блога