Гид по технологиям

Установка Laravel 5.6 на Ubuntu 18.04 с Nginx, PHP-FPM 7.2 и MariaDB

• 6 min read • DevOps • Обновлено 23 Nov 2025
Laravel 5.6 на Ubuntu 18.04 (Nginx, PHP-FPM, MariaDB)
Laravel 5.6 на Ubuntu 18.04 (Nginx, PHP-FPM, MariaDB)

Что мы сделаем

  1. Обновим репозитории и пакеты Ubuntu
  2. Установим Nginx
  3. Установим PHP 7.2 и PHP-FPM
  4. Установим MariaDB
  5. Установим PHP Composer
  6. Настроим виртуальный хост Nginx для Laravel
  7. Установим Laravel
  8. Протестируем установку

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

  • Сервер Ubuntu 18.04
  • root-привилегии или доступ через sudo
  • Доступ по SSH к серверу

Шаг 1 — Обновление Ubuntu

Перед началом установки обновите базу пакетов и сами пакеты. Подключитесь к серверу по SSH:

ssh root@ip

Обновите репозитории и установленные пакеты:

sudo apt update  
sudo apt upgrade

Перезагрузите сервер и снова подключитесь по SSH.

Шаг 2 — Установка Nginx

Установим Nginx (версия 1.14 доступна в репозитории Ubuntu 18.04). Выполните:

sudo apt install nginx -y

Запустите сервис и добавьте автозапуск при загрузке:

systemctl start nginx  
systemctl enable nginx

Nginx слушает порт 80 — проверьте сетевые сокеты:

netstat -plntu

Включение и запуск веб-сервера Nginx

Или проверьте заголовки локально:

curl -I localhost

Важно: если netstat не установлен, можно использовать ss: ss -plntu.

Шаг 3 — Установка PHP 7.2 и PHP-FPM

Установим PHP 7.2 и необходимые расширения для Laravel:

sudo apt install php7.2 php7.2-curl php7.2-common php7.2-cli php7.2-mysql php7.2-mbstring php7.2-fpm php7.2-xml php7.2-zip -y

Откройте конфигурацию PHP-FPM и отредактируйте php.ini:

cd /etc/php/7.2/  
vim fpm/php.ini

Найдите и установите значение:

cgi.fix_pathinfo=0

Сохраните и выйдите.

Запустите PHP-FPM и включите автозапуск:

systemctl start php7.2-fpm  
systemctl enable php7.2-fpm

Проверьте сокет PHP-FPM (обычно unix-сокет):

netstat -pl | grep php7.2-fpm

После этого PHP и PHP-FPM 7.2 готовы.

Шаг 4 — Установка MariaDB

Если ваш проект использует MySQL/MariaDB, установите MariaDB (в репозитории Ubuntu 18.04 доступна ветка 10.1+). Выполните:

sudo apt install mariadb-server mariadb-client -y

Запустите сервис и включите автозапуск (в оригинале была опечатка — используйте systemctl):

systemctl start mysql  
systemctl enable mysql

MariaDB слушает порт 3306 — проверьте:

netstat -plntu

Запуск и проверка MariaDB

Затем выполните защитную настройку и задайте пароль root:

mysql_secure_installation

Ответьте на вопросы: установите пароль root, удалите анонимных пользователей, запретите удалённый вход root и удалите тестовую базу.

После подтверждений MariaDB будет базово защищена.

Шаг 5 — Установка PHP Composer

Composer — менеджер пакетов для PHP. На Ubuntu 18.04 он доступен в репозитории:

sudo apt install composer -y

Проверьте работу команды:

composer

Установка PHP Composer

Composer установлен.

Шаг 6 — Настройка виртуального хоста Nginx для Laravel

Решите, где будет храниться проект. В примере используется /var/www/laravel. Создайте директорию:

mkdir -p /var/www/laravel

Создайте файл виртуального хоста в /etc/nginx/sites-available/laravel:

cd /etc/nginx/  
vim sites-available/laravel

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

server {
         listen 80;
         listen [::]:80 ipv6only=on;
 
         # Log files for Debugging
         access_log /var/log/nginx/laravel-access.log;
         error_log /var/log/nginx/laravel-error.log;
 
         # Webroot Directory for Laravel project
         root /var/www/laravel/public;
         index index.php index.html index.htm;
 
         # Your Domain Name
         server_name laravel.hakase-labs.co;
 
         location / {
                 try_files $uri $uri/ /index.php?$query_string;
         }
 
         # PHP-FPM Configuration Nginx
         location ~ \.php$ {
                 try_files $uri =404;
                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
                 fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                 fastcgi_index index.php;
                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                 include fastcgi_params;
         }
 }

Сохраните файл и активируйте сайт:

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

Перезапустите Nginx:

systemctl restart nginx

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

Примечание: замените server_name на реальное доменное имя или используйте IP во время тестирования.

Шаг 7 — Установка Laravel

Убедитесь, что установлен unzip (нужен Composer при распаковке):

sudo apt install unzip -y

Перейдите в директорию проекта:

cd /var/www/laravel

Установка через Composer — рекомендуемый способ. Выполните:

composer create-project laravel/laravel .

Дождитесь завершения установки.

Установка Laravel

После установки установите владельца и права. В оригинале используется www-data:root и chmod 755 для storage. Рекомендуется назначить владельца www-data и группу www-data, а для директорий storage и bootstrap/cache дать корректные права:

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

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

Laravel установлен.

Шаг 8 — Тестирование

Откройте в браузере домен, указанный в конфигурации, например:

http://laravel.hakase-labs.co/

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

Laravel успешно установлен

Поздравляем — установка Laravel 5.6 на Ubuntu 18.04 с Nginx, PHP-FPM 7.2 и MariaDB завершена.

Часто встречающиеся проблемы и их устранение

  • Nginx возвращает 502 Bad Gateway: проверьте, что php7.2-fpm запущен и путь к сокету совпадает с fastcgi_pass. Команда для статуса:
systemctl status php7.2-fpm
  • Ошибки прав: если Laravel не может записывать в storage или cache, проверьте владельца и права на эти папки.

  • Composer зависает или падает: проверьте версию PHP и доступность сети; можно увеличить memory_limit в php.ini для CLI или запускать composer с флагом --no-dev при продакшн-установке.

  • MariaDB недоступна: проверьте статус systemctl и лог /var/log/mysql/error.log.

Альтернативные подходы

  • Apache вместо Nginx: если вы предпочитаете Apache, можно развернуть стек LAMP и подключать PHP через mod_php или php-fpm.
  • Использовать PHP 7.3/7.4: для Laravel 5.6 PHP 7.1.3+ достаточно, но в продакшене желательно актуальная поддерживаемая версия PHP; для более новых Laravel потребуется более новый PHP.
  • Docker-контейнеры: собрать контейнеры nginx + php-fpm + mariadb в docker-compose — удобно для изоляции и локальной разработки.

Чек-лист ролей (sysadmin / разработчик / DevOps)

  • Sysadmin:
    • Обновить систему и установить зависимости
    • Настроить бэкапы баз данных и файлов
    • Настроить мониторинг сервисов
  • Разработчик:
    • Настроить .env и миграции
    • Проверить наличие расширений PHP
    • Запустить php artisan migrate и seed при необходимости
  • DevOps:
    • Настроить CI/CD для деплоя
    • Настроить SSL (Let’s Encrypt)
    • Настроить nginx конфиг для production (gzip, HSTS, rate limiting)

Мини-методология развертывания

  1. Подготовка сервера и резервное копирование
  2. Установка системных пакетов и зависимостей
  3. Настройка виртуального хоста и PHP-FPM
  4. Установка приложения через Composer
  5. Настройка прав и переменных окружения
  6. Тестирование в staging, затем rollout в production

Критерии приёмки

  • Страница Laravel доступна по указанному домену
  • PHP-FPM отвечает и Nginx проксирует запросы без ошибок 5xx
  • Доступ к базе данных возможен из приложения
  • Логи ошибок не содержат критических исключений при загрузке главной страницы

Команды-справочник (cheat sheet)

  • Обновление системы:
sudo apt update && sudo apt upgrade -y
  • Установка Nginx:
sudo apt install nginx -y
systemctl enable --now nginx
  • Проверка статуса сервиса:
systemctl status nginx
systemctl status php7.2-fpm
systemctl status mysql
  • Проверка портов:
ss -plntu

Безопасность и рекомендации по харднингу

  • Включите UFW и откройте только нужные порты (80, 443, 22 по необходимости):
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
  • Настройте SSL через Let’s Encrypt (certbot) и автоматическое обновление сертификатов.
  • Запретите доступ к конфигурационным файлам и .env извне.
  • Ограничьте доступ к SSH по ключам и измените стандартный порт.

Совместимость и миграция

  • Laravel 5.6 совместим с PHP 7.1.3+, но исправно работает с 7.2 (рекомендовано для Ubuntu 18.04).
  • Для перехода на более новую версию Laravel проверяйте совместимость пакетов и версий PHP.

Отказоустойчивость и откат

  • Перед обновлением приложения делайте бэкап базы данных и текущей версии кода.
  • План отката: вернуть предыдущую версию кода, восстановить дамп БД, перезапустить сервисы.
  • Используйте rollbacks в системе контроля версий + CI/CD для автоматизации.

Примеры тест-кейсов (базовая проверка)

  • Открыть корневую страницу: HTTP 200 и содержимое с текстом Laravel
  • Проверить доступ к /storage через приложение (должен быть закрыт)
  • Выполнить миграцию: php artisan migrate без ошибок

Локальные альтернативы и подводные камни

  • На локальной машине используйте Homestead или Valet (macOS) для удобной разработки.
  • В продакшне избегайте использования встроенного PHP-сервера (php artisan serve).

Краткое резюме

  • Следуйте шагам: обновление → Nginx → PHP-FPM → MariaDB → Composer → виртуальный хост → Laravel
  • Проверьте права и владельцев, корректность сокета PHP-FPM и DNS/hosts на тестовой машине
  • Добавьте SSL, мониторинг и регулярные бэкапы для продакшн-сервера

Полезные ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро