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, живут внутри контейнера и пересоздаются при обновлении кода. Если загрузки должны сохраняться, храните их во внешнем файловом хранилище или подключите к этой папке постоянный том.

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

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

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

Да. Через docker-compose можно поднять до пяти связанных сервисов в одном проекте — например, приложение вместе с базой данных.

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

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

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

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