Примерное время: 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
Следуйте инструкциям:
- Введите вашу электронную почту.
- Примите условия.
- Выберите перенаправление 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();
Белая страница
- Временно включите режим отладки:
nano /var/www/mywebsite/.env
# Измените APP_DEBUG=true
- Очистите кеш:
php artisan cache:clear
php artisan config:clear
- Проверьте логи:
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. Вы можете начать создавать свои проекты или развернуть существующее приложение.