Как развернуть Laravel на VPS с нуля: полный гайд

Как развернуть Laravel на VPS с нуля: полный гайд

Развернуть Laravel с нуля не страшно, если есть чёткий план. Разобрали, как подготовить VPS, настроить окружение и запустить проект на продакшене без сбоев и лишней ручной настройки.

Laravel логотип

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

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Подготовка сервера

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

Сначала подключитесь к вашему серверу по SSH.

После подключения первым делом обновите систему. На Ubuntu или Debian запустите:

sudo apt update && sudo apt upgrade

На CentOS, AlmaLinux или Rocky Linux:

sudo dnf update

Далее создайте нового пользователя, с ним будет безопаснее работать. Выполните:

adduser laraveladmin

Задайте пароль и выдайте права суперпользователя:

usermod -aG sudo laraveladmin

Чтобы запретить прямой вход под root, откройте файл настроек SSH:

sudo nano /etc/ssh/sshd_config

Строку PermitRootLogin замените на no. Сохраните изменения, перезапустите SSH:

sudo systemctl restart sshd

Добавьте базовую защиту. Если вы на Ubuntu, включите и настройте UFW — это простой файрвол:

sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

Порты 80 и 443 — это веб, SSH нужен для подключения. Остальное пока можно оставить закрытым. На других дистрибутивах можно использовать firewalld, принцип тот же: открыть только нужные порты.

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

Установка PHP и нужных расширений

Laravel любит свежие версии PHP. Сейчас оптимально ставить 8.1 или выше. В Ubuntu лучше сразу подключить репозиторий с актуальными пакетами, так как стандартные могут подтянуть устаревший PHP, и потом придётся разбираться с несовместимостями.

Подключите PPA от разработчиков PHP:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

Установите PHP и всё, что Laravel считает базой:

sudo apt install php php-cli php-mbstring php-xml php-bcmath php-curl php-mysql php-zip unzip curl

Если Laravel будет работать через queue или с Redis, можно сразу добавить:

sudo apt install php-redis php-pgsql

Для CentOS и прочих пакеты называются чуть иначе, но суть та же. Главное, чтобы PHP запускался, мог подключаться к базе, обрабатывать строки и JSON, работать с Curl и архивами.

Проверьте версию:

php -v

Если всё хорошо, увидите актуальный релиз без ошибок. На этом этапе главное, чтобы PHP запускался без ругани и видел нужные модули. Laravel без них не стартанёт, а Nginx не поможет, если интерпретатор не собран как надо.

Установка Composer и Laravel

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

curl -sS https://getcomposer.org/installer | php

Переместите бинарник в системный каталог, чтобы можно было запускать Composer из любой папки:

sudo mv composer.phar /usr/local/bin/composer

Проверьте, всё ли установилось:

composer -V

Если в ответ получаете номер версии, значит Composer работает.

Теперь можно скачать сам Laravel. При наличии шаблона проекта разворачивайте его. А если начинаете с нуля, поставьте чистый Laravel без дополнительных модулей и настроек:

composer create-project laravel/laravel myapp

Laravel скачает ядро и зависимости, создаст структуру проекта и положит всё в папку myapp. Когда установка завершится, перейдите в директорию проекта:

cd myapp

Laravel уже готов к запуску на встроенном сервере, но на проде мы будем работать через Nginx. Пока убедитесь, что структура на месте: в корне должны быть файлы artisan, .env.example, composer.json и папка public. Если всё на месте, значит установка прошла как надо.

Но перед подключением к БД и настройке окружения сделайте копию файла .env.example в .env и создайте ключ приложения:

cp .env.example .env
php artisan key:generate

Настройка БД

Laravel не работает без базы данных. Даже если вы не планируете хранить тонны данных, фреймворку всё равно нужно куда-то сохранять информацию, например, таблицу пользователей, пароли. Поэтому перед запуском необходимо настроить БД и подключить её к проекту.

Если у вас сервер на Ubuntu или Debian, установить MySQL можно так:

sudo apt install mysql-server

Система не спросит пароль, но после завершения можно задать его вручную. Пропишите:

sudo mysql_secure_installation

Программа предложит включить проверку паролей, удалить тестовые таблицы и создать нового пользователя. Почти на всё можно смело отвечать «да». Единственный момент — опция Disallow root login remotely. Она запрещает подключаться к MySQL под root с других машин. Если вы планируете подключаться к базе только с этого же сервера, то включайте. Если нужен удалённый доступ, лучше оставить выключенной.

Теперь создаём БД и пользователя. Сначала подключитесь к MySQL:

sudo mysql

И пропишите внутри консоли:

CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Чтобы подключить всё это к проекту, откройте файл .env в корне Laravel:

nano .env

Найдите блок DB_ и замените значения:

DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=password

Сохраните файл и закройте редактор. Laravel теперь знает, к какой базе подключаться и под каким логином.

На этом этапе можно проверить подключение. Выполните миграции:

php artisan migrate

Если база подключена и всё настроено правильно, команда создаст системные таблицы внутри вашей базы, и ошибки при этом быть не должно. Если вы видите ошибку подключения или сообщения про отсутствующую таблицу, проверьте данные в .env и перезапустите MySQL.

Настройка Nginx для Laravel

Laravel не обслуживает HTTP-запросы напрямую — для этого требуется веб-сервер, например, Nginx. Для приёма входящего трафика, перенаправления его в Laravel и отдачи ответов нужен веб-сервер. Один из самых популярных вариантов — Nginx.

Если у вас его нет, поставьте его:

sudo apt install nginx

Проверяем:

sudo systemctl status nginx

Если всё в порядке, увидите сообщение, что сервис активен. Теперь пришло время настроить сайт. Создайте новый конфигурационный файл в папке /etc/nginx/sites-available — именно сюда Nginx складывает все доступные сайты. Назовём его, например, laravel:

sudo nano /etc/nginx/sites-available/laravel

Вставьте туда вот такой конфиг:

server {
    listen 80;
    server_name your-domain.com;

    root /var/www/myapp/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Поменяйте your-domain.com на свой домен или IP-адрес, а путь /var/www/myapp/public — на путь к вашей папке Laravel. Очень важно указывать именно папку public, потому что всё остальное в Laravel — это код и конфиги, и их не должно быть видно снаружи.

После сохранения конфигурации можно выйти из редактора. Чтобы Nginx подхватил настройки, нужно подключить файл. Для этого создаём символическую ссылку в директории /etc/nginx/sites-enabled. Именно оттуда сервер берёт активные конфиги при запуске. Как создать ссылку:

sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/

Убедитесь в отсутствии ошибок:

sudo nginx -t

Если команда не выдала ошибок, перезапустите сервис:

sudo systemctl reload nginx

Если всё настроено правильно, сервер начнёт принимать входящие запросы и отправлять их в сторону Laravel. Проверьте: откройте в браузере IP-адрес или домен — должна появиться стартовая страница Laravel с логотипом. Это знак, что связка Nginx и Laravel работает как надо.

Финальные настройки и запуск Laravel

Когда веб-сервер готов и проект подключён к базе, остаётся внести последний штрих. У Laravel есть команда artisan, через неё удобно управлять проектом: запускать миграции, очищать кеш, генерировать ключи и так далее.

Если вы этого ещё не сделали, скопируйте файл настроек и сгенерируйте ключ:

cp .env.example .env
php artisan key:generate

Теперь Laravel будет использовать собственный ключ шифрования. Это важно для безопасности приложения и его корректной работы.

Дальше можно прогнать миграции, если база уже указана в .env:

php artisan migrate

После выполнения команда выведет информацию о создании таблиц. Ошибок быть не должно. Если есть ошибки, проверьте доступ к базе и данные подключения.

На продакшене Laravel должен работать в режиме production. Для этого в .env установите переменную APP_ENV=production и отключите отображение ошибок:

APP_DEBUG=false

Это защитит проект от лишней информации, которая может попасть в браузер при сбое.

Проверьте права на папки storage и bootstrap/cache. Laravel должен иметь доступ к ним для записи:

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

После этого перезапустите Nginx и PHP-FPM:

sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm

Если страница Laravel открывается, значит всё собрано правильно. Теперь проект работает, принимает запросы и готов к дальнейшей разработке.

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

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях