Найти в Дзене
LinuxNotes

Как установить Laravel на Linux VPS (Debian 13 / Ubuntu 24.04)

Примерное время: 30–45 минут
Сложность: средний уровень ⭐⭐
Система: Debian 13 (Trixie) / Ubuntu 24.04 LTS Это руководство объясняет, как установить Laravel 12 (последняя версия) на Linux VPS с Debian 13 или Ubuntu 24.04. По завершении этого руководства у вас будет готовая рабочая среда со следующим: Описание 🖥️ Linux VPSDebian 13 или Ubuntu 24.04 с доступом root 🔑 Доступ по SSH Подключение с правами root или sudo 🌐 Доменное имя (Опционально) Для доступа по URL 💾 ОЗУМинимум 1 ГБ (рекомендуется) 💿 Место на дискеМинимум 10 ГБ Минимальная версия PHP8.2 (рекомендуется 8.3 или 8.4) Composer 2.x База данных MySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 10+ / SQLite 3.26+ Перед любой установкой обновите систему. Подключение по SSH ssh root@IP-адрес-вашего-сервера Обновление пакетов # Обновить список пакетов
apt update
# Обновить установленные пакеты
apt upgrade -y ✅ Ожидаемый результат: все пакеты обновлены до последней версии. Laravel 12 требует минимум PHP 8.2. Мы установим PHP 8.3 для лучш
Оглавление

Примерное время: 30–45 минут
Сложность: средний уровень ⭐⭐
Система: Debian 13 (Trixie) / Ubuntu 24.04 LTS

Введение

Это руководство объясняет, как установить Laravel 12 (последняя версия) на Linux VPS с Debian 13 или Ubuntu 24.04. По завершении этого руководства у вас будет готовая рабочая среда со следующим:

  • ✅ PHP 8.3 (требуется для Laravel 12);
  • ✅ Composer (менеджер зависимостей PHP);
  • ✅ Nginx (высокопроизводительный веб‑сервер);
  • ✅ MariaDB (база данных);
  • ✅ Laravel 12 (PHP‑фреймворк).

Предварительные требования

Описание

🖥️ Linux VPSDebian 13 или Ubuntu 24.04 с доступом root

🔑 Доступ по SSH Подключение с правами root или sudo

🌐 Доменное имя (Опционально) Для доступа по URL

💾 ОЗУМинимум 1 ГБ (рекомендуется)

💿 Место на дискеМинимум 10 ГБ

Необходимая конфигурация для Laravel 12

Минимальная версия PHP8.2 (рекомендуется 8.3 или 8.4)

Composer 2.x

База данных MySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 10+ / SQLite 3.26+

🔄 Шаг 1. Обновление системы

Перед любой установкой обновите систему.

Подключение по SSH

ssh root@IP-адрес-вашего-сервера

Обновление пакетов

# Обновить список пакетов
apt update

# Обновить установленные пакеты
apt upgrade -y

Ожидаемый результат: все пакеты обновлены до последней версии.

🐘 Шаг 2. Установка PHP 8.3

Laravel 12 требует минимум PHP 8.2. Мы установим PHP 8.3 для лучшей производительности.

Для Debian 13

Debian 13 (Trixie) включает PHP 8.4 по умолчанию. Чтобы установить PHP 8.3, добавьте репозиторий Sury:

# Установить зависимости
apt install -y apt-transport-https lsb-release ca-certificates curl gnupg

# Скачать GPG‑ключ для репозитория Sury
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/sury-php.gpg

# Добавить репозиторий Sury
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list

# Обновить список пакетов
apt update

Для Ubuntu 24.04

Ubuntu 24.04 включает PHP 8.3 по умолчанию. Если нужна более новая версия, добавьте PPA Ondřej:

# Установить зависимости
apt install -y software-properties-common

# Добавить PPA для PHP (опционально для PHP 8.4)
add-apt-repository ppa:ondrej/php -y

# Обновить список пакетов
apt update

Установка PHP 8.3 и необходимых расширений

apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-common \
php8.3-mysql php8.3-pgsql php8.3-sqlite3 \
php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml \
php8.3-zip php8.3-bcmath php8.3-intl php8.3-readline \
php8.3-tokenizer php8.3-opcache

Расширение

  • php8.3-fpmFastCGI Process Manager (для Nginx)
  • php8.3-mysql Подключение к MySQL/MariaDB
  • php8.3-curl HTTP‑запросы
  • php8.3-gd Работа с изображениями
  • php8.3-mbstring Многобайтовые строки (UTF‑8)
  • php8.3-xml Обработка XML
  • php8.3-zip Сжатие ZIP
  • php8.3-bcmath Точные вычисления
  • php8.3-intl Интернационализация

Проверка установки

php -v

Ожидаемый результат

PHP 8.3.x (cli) (built: ...)
Copyright (c) The PHP Group
Zend Engine v4.3.x, Copyright (c) Technologies
with OPcache v8.3.x, Copyright (c), by Technologies

📦 Шаг 3. Установка Composer

Composer — менеджер зависимостей PHP, необходимый для Laravel.

Загрузка и установка Composer

# Скачать установщик
curl -sS https://getcomposer.org/installer -o composer-setup.php

# Установить Composer глобально
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

# Удалить установщик
rm composer-setup.php

Проверка установки

composer --version

Ожидаемый результат

Composer version 2.x.x 2024-xx-xx xx:xx:xx

🌐 Шаг 4. Установка Nginx

Nginx — высокопроизводительный веб‑сервер, идеально подходящий для Laravel.

Установка Nginx

apt install -y nginx

Запуск и включение Nginx

# Запустить Nginx
systemctl start nginx

# Включить при загрузке
systemctl enable nginx

# Проверить статус
systemctl status nginx

Ожидаемый результат

nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...

Тестирование Nginx

Откройте браузер и перейдите по адресу http://IP-адрес-вашего-сервера. Вы должны увидеть страницу Nginx по умолчанию.

🌐 Шаг 5. Установка MariaDB

MariaDB — высокопроизводительная база данных с открытым исходным кодом, совместимая с MySQL.

Установка MariaDB

apt install -y mariadb-server mariadb-client

Запуск и включение MariaDB

# Запустить MariaDB
systemctl start mariadb

# Включить при загрузке
systemctl enable mariadb

# Проверить статус
systemctl status mariadb

Защита установки

mysql_secure_installation

Ответы на вопросы:

Рекомендуемый ответ

Enter current password for root
Нажмите Enter (пусто) Switch to unix_socket authenticationn
Change the root password - Y, затем введите надёжный пароль
Remove anonymous users -Y
Disallow root login remotely -Y
Remove test database - Y
Reload privilege tables - Y

Создание базы данных для Laravel

# Подключиться к MariaDB
mysql -u root -p

-- Создать базу данных
CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Создать пользователя
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'ВашНадёжныйПароль123!';

-- Предоставить права
GRANT ALL PRIVILEGES ON laravel.* TO 'laravel_user'@'localhost';

-- Применить изменения
FLUSH PRIVILEGES;


-- Выйти
EXIT;

📝 Примечание: сохраните эту информацию для настройки Laravel:

  • База данных: laravel;
  • Пользователь: laravel_user;
  • Пароль: Ваш_Надёжный_Пароль123!.

🚀 Шаг 6. Установка Laravel 12

Создание директории проекта

# Создать папку для сайтов
mkdir -p /var/www

# Перейти в директорию
cd /var/www

Установка Laravel через Composer

composer create-project laravel/laravel monsite

💡 Замените monsite на имя вашего проекта.

Ожидаемый результат

Creating a "laravel/laravel" project at "./monsite"
Installing laravel/laravel (v12.x.x)
- Downloading laravel/laravel (v12.x.x)
- Installing laravel/laravel (v12.x.x): Extracting archive
...
Application ready! Build something amazing.

Структура проекта Laravel

📁 /var/www/monsite/
├── 📁 app/ ← Код приложения
├── 📁 bootstrap/ ← Файлы инициализации
├── 📁 config/ ← Конфигурация
├── 📁 database/ ← Миграции и сиды
├── 📁 public/ ← Точка входа в веб (index.php)
├── 📁 resources/ ← Представления, CSS, JS
├── 📁 routes/ ← Маршруты приложения
├── 📁 storage/ ← Сгенерированные файлы, логи, кеш
├── 📁 tests/ ← Юнит‑тесты
├── 📁 vendor/ ← Зависимости Composer
├── 📄 .env ← Переменные окружения
├── 📄 artisan ← CLI Laravel
└── 📄 composer.json ← Зависимости проекта

⚙️ Шаг 7. Настройка Laravel

Настройка файла .env

cd /var/www/monsite
nano .env

Измените следующие строки:

APP_NAME="Мой сайт на Laravel"
APP_ENV=production
APP_DEBUG=false
APP_URL=http://ваш-домен.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel_user
DB_PASSWORD=ВашНадёжныйПароль123!

⚠️ Важно: в продакшн‑среде установите APP_DEBUG=false, чтобы не раскрывать конфиденциальную информацию.

Генерация ключа приложения

php artisan key:generate

Ожидаемый результат

INFO Application key set successfully.

Запуск миграций

php artisan migrate

Ожидаемый результат

INFO Running migrations.

2024_01_01_000000_create_users_table ............... 45ms DONE
2024_01_01_000001_create_password_reset_tokens_table 12ms DONE
2024_01_01_000002_create_sessions_table ............ 18ms DONE
...

📁 Шаг 8. Настройка прав доступа

Laravel требует, чтобы некоторые директории были доступны для записи.

Установка владельца

# Изменить владельца на веб‑пользователя
chown -R www-data:www-data /var/www/monsite

Установка прав доступа

# Права для директорий
find /var/www/monsite -type d -exec chmod 755 {} \;

# Права для файлов
find /var/www/monsite -type f -exec chmod 644 {} \;

# Специальные права для storage и bootstrap/cache
chmod -R 775 /var/www/monsite/storage
chmod -R 775 /var/www/monsite/bootstrap/cache

🔧 Шаг 9. Настройка Nginx для Laravel

Создание конфигурации сайта

nano /etc/nginx/sites-available/monsite

Вставьте следующую конфигурацию:

nginx

server {
listen 80;
listen [::]:80;
# Замените на ваш домен или IP
server_name ваш-домен.com www.ваш-домен.com;
# Корень сайта (папка public Laravel)
root /var/www/monsite/public;
# Индексные файлы
index index.php index.html index.htm;
# Кодировка
charset utf-8;
# Логи
access_log /var/log/nginx/monsite.access.log;
error_log /var/log/nginx/monsite.error.log;
# Обработка запросов
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Статические файлы
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Ошибка 404 → Laravel
error_page 404 /index.php;
# Обработка PHP через PHP‑FPM
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
# Запрет доступа к скрытым файлам
location ~ /\.(?!well-known).* {
deny all;
}
}

Включение сайта

# Создать симлинк
ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/

# Отключить сайт по умолчанию (опционально)
rm /etc/nginx/sites-enabled/default

# Проверить конфигурацию
nginx -t

Ожидаемый результат

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапуск Nginx

systemctl restart nginx

✅ Шаг 10. Проверка установки

Доступ к сайту

Откройте браузер и перейдите по адресу:

  • http://IP-адрес-вашего-сервера (если нет домена);
  • http://ваш-домен.com (если домен настроен).

Вы должны увидеть главную страницу Laravel.

Проверка работоспособности приложения

Laravel 12 включает маршрут проверки работоспособности:

curl http://localhost/up

Ожидаемый результат:

HTTP‑код 200 (OK).

🔒 Шаг 11. Защита с помощью HTTPS (Let’s Encrypt)

Установка Certbot

apt install -y certbot python3-certbot-nginx

Получение SSL‑сертификата

certbot --nginx -d ваш-домен.com -d www.ваш-домен.com

Следуйте инструкциям:

  1. Введите вашу электронную почту.
  2. Примите условия.
  3. Выберите перенаправление HTTP на HTTPS (рекомендуется).

Проверка автоматического обновления

certbot renew --dry-run

Ожидаемый результат

Congratulations, all simulated renewals succeeded

✅ Теперь сайт доступен по адресу https://ваш-домен.com.

🛠️ Полезные команды Laravel

Artisan (CLI Laravel)

# Перейти в папку проекта
cd /var/www/mywebsite

# Посмотреть все доступные команды
php artisan list

# Очистить кеш
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Оптимизировать для продакшна
php artisan optimize


# Создать контроллер
php artisan make:controller NameController

# Создать модель с миграцией
php artisan make:model ModelName -m

# Запустить миграции
php artisan migrate

# Откат миграций
php artisan migrate:rollback

# Режим обслуживания
php artisan down
php artisan up

📊 Оптимизация для продакшна

Оптимизация Laravelcd /var/www/mywebsite

# Кешировать конфигурацию
php artisan config:cache

# Кешировать маршруты
php artisan route:cache

# Кешировать представления
php artisan view:cache

# Глобальная оптимизация
php artisan optimize

Настройка OPcache

nano /etc/php/8.3/fpm/conf.d/10-opcache.ini

Добавьте или измените следующие параметры:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
opcache.save_comments=1

Перезапуск PHP‑FPM

systemctl restart php8.3-fpm

🔧 Устранение неполадок

Ошибка 500 — Внутренняя ошибка сервера

Причина - Решение

Неправильные права доступа - chown -R www-data:www-data /var/www/mywebsite

Недоступная папка storage - chmod -R 775 /var/www/mywebsite/storage

Отсутствует APP_KEY - php artisan key:generate

Неверная конфигурация .env - Проверьте настройки базы данных

Просмотр ошибок Laravel

tail -f /var/www/mywebsite/storage/logs/laravel.log

Ошибка 502 Bad Gateway

Причина- Решение

PHP‑FPM не запущен - systemctl start php8.3-fpm

Неверный PHP‑сокет - Проверьте /var/run/php/php8.3-fpm.sock

Неверная версия - PHPupdate-alternatives --config php

Ошибка подключения к базе данных

Причина - Решение

MariaDB не запущена - systemctl start mariadb

Неверные учётные данные - Проверьте .env (DB_DATABASE, DB_USERNAME, DB_PASSWORD)

База данных не создана - Создайте базу данных с помощью mysql -u root -p

Проверка подключения

php artisan tinker
>>> DB::connection()->getPdo();

Белая страница

  1. Временно включите режим отладки:
nano /var/www/mywebsite/.env
# Измените APP_DEBUG=true
  1. Очистите кеш:
php artisan cache:clear
php artisan config:clear
  1. Проверьте логи:
tail -50 /var/www/mywebsite/storage/logs/laravel.log

📝 Краткий обзор команд

=== ОБНОВЛЕНИЕ СИСТЕМЫ ===

apt update && apt upgrade -y

=== УСТАНОВКА PHP 8.3 (Debian 13) ===

apt install -y apt-transport-https lsb-release ca-certificates curl gnupg
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/sury-php.gpg
echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
apt update
apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-common php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-intl

=== УСТАНОВКА COMPOSER ===

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

=== УСТАНОВКА NGINX ===

apt install -y nginx
systemctl enable nginx && systemctl start nginx

=== УСТАНОВКА MARIADB ===

apt install -y mariadb-server mariadb-client
systemctl enable mariadb && systemctl start mariadb
mysql_secure_installation

=== СОЗДАНИЕ БАЗЫ ДАННЫХ ===

mysql -u root -p -e "CREATE DATABASE laravel; CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'Password'; GRANT ALL ON laravel.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES;"

=== УСТАНОВКА LARAVEL ===

cd /var/www
composer create-project laravel/laravel mywebsite
cd mywebsite
php artisan key:generate
php artisan migrate

=== НАСТРОЙКА ПРАВ ДОСТУПА ===

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

=== HTTPS (Let’s Encrypt) ===

apt install -y certbot python3-certbot-nginx
certbot --nginx -d ваш-домен.com

🎉 Заключение

Поздравляем! Вы успешно установили:

  • ✅ PHP 8.3 со всеми необходимыми расширениями для Laravel;
  • ✅ Composer для управления зависимостями;
  • ✅ Nginx в качестве веб‑сервера;
  • ✅ MariaDB в качестве базы данных;
  • ✅ Laravel 12 — готовый фреймворк для разработки веб‑приложений.

Теперь у вас есть полностью настроенная среда для разработки и развёртывания приложений на Laravel. Вы можете начать создавать свои проекты или развернуть существующее приложение.