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

Laravel отлично подходит для сложных проектов, но сам по себе он работать не будет — нужен сервер, окружение и настроенный веб-сервер. Особенно если вы разворачиваете проект на сервере, где нет никаких шаблонов, автоподключений и готовых конфигураций. В материале рассказали, как подготовить VPS под Laravel: с нуля установить нужные пакеты, настроить Nginx, подключить базу и довести проект до рабочего состояния.
Подготовка сервера
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 перестаёт казаться чем-то сложным — это просто ваша территория, на которой всё работает так, как вы решили.
Читайте в блоге:
- Как установить Nginx, PHP и MySQL/MariaDB (LEMP-стек) в Ubuntu 22.04
- Как установить и настроить Apache, PHP и MariaDB (LAMP-стек) в Ubuntu 22.04
- Как открыть и закрыть порты в Ubuntu 22.04 и защитить систему от угроз