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

Установка Laravel 5.4 на Ubuntu 16.04 с Nginx, PHP-FPM 7.0 и MariaDB

• 6 min read • DevOps • Обновлено 26 Nov 2025
Установка Laravel 5.4 на Ubuntu 16.04 | Nginx + PHP-FPM 7.0
Установка Laravel 5.4 на Ubuntu 16.04 | Nginx + PHP-FPM 7.0

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

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

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

  • Сервер с Ubuntu 16.04
  • Права root или sudo
  • Доступ по SSH к серверу

Контекст и намерение

Основная цель: развернуть Laravel 5.4 на LEMP-стеке, пригодном для разработки и тестирования. Варианты развёртывания для продакшена описаны в разделе безопасность и рекомендации по SSL.

Фактбокс — ключевые версии

  • ОС: Ubuntu 16.04
  • Nginx: 1.10 (из репозитория Ubuntu 16.04)
  • PHP-FPM: 7.0
  • MariaDB: 10.0
  • Laravel: 5.4

Важно: версии перечислены для соответствия данному руководству; для новых систем (Ubuntu 18.04/20.04 и PHP 7.4/8) команды и пути могут отличаться.


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

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

ssh [email protected]

sudo apt-get update
sudo apt-get upgrade

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

sudo reboot

Важно: всегда проверяйте, что критичные сервисы готовы к перезагрузке (например, базы данных, репликация и т.д.).

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

Установите Nginx из стандартного репозитория Ubuntu 16.04:

sudo apt-get install -y nginx

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

sudo systemctl start nginx
sudo systemctl enable nginx

Проверьте, что Nginx слушает порт 80:

netstat -plntu

Или проверьте локально с помощью curl:

curl localhost

Проверка запуска Nginx и ответ сервера

Примечание: если netstat не установлен, установите пакет net-tools:

sudo apt-get install -y net-tools

Шаг 3 — Установка PHP-FPM 7.0 и расширений

Установите PHP 7.0 и расширения, которые требуются Laravel 5.4 (curl, mbstring, xml, zip, mysql и т.д.):

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

Откройте конфигурацию PHP-FPM и измените параметр cgi.fix_pathinfo для безопасности (важно для Nginx):

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

Найдите строку и установите:

cgi.fix_pathinfo=0

Сохраните и перезапустите сервис:

sudo systemctl start php7.0-fpm
sudo systemctl enable php7.0-fpm

Проверьте сокет PHP-FPM:

netstat -pl | grep php7.0-fpm

Если сокет доступен, в конфигурации Nginx нужно указывать путь к нему, например /var/run/php/php7.0-fpm.sock.

Важно: cgi.fix_pathinfo=0 предотвращает обработку неизвестных путей как PHP-скриптов и уменьшает риск обхода через неверно сконфигурированные URI.

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

Если приложение использует MySQL/MariaDB, установите MariaDB из репозитория:

sudo apt-get install -y mariadb-server mariadb-client

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

sudo systemctl start mysql
sudo systemctl enable mysql

Проверьте, что MariaDB слушает порт 3306:

netstat -plntu | grep 3306

Запуск и тест MariaDB

Далее запустите скрипт безопасной настройки:

sudo mysql_secure_installation

Следуйте подсказкам: установите пароль root, удалите анонимных пользователей, запретите удалённый вход root, удалите тестовую БД и перезагрузите таблицы привилегий.

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

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

Composer — менеджер пакетов PHP. В Ubuntu 16.04 он доступен в репозитории:

sudo apt-get install -y composer

Проверьте установку:

composer

Результат установки Composer

Если вы предпочитаете глобальную установку по официальной схеме, можно скачать установщик с getcomposer.org, но установка из репозитория удобна для тестовых серверов.

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

Создайте директорию для проекта, например /var/www/laravel:

sudo mkdir -p /var/www/laravel
sudo chown -R $USER:$USER /var/www/laravel

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

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

Вставьте конфигурацию (скорректируйте server_name под ваш домен):

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:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

Активируйте виртуальный хост и проверьте конфигурацию Nginx:

sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

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

Совет: для локального тестирования добавьте запись в /etc/hosts на вашей машине: 127.0.0.1 laravel.hakase-labs.co

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

Убедитесь, что unzip установлен:

sudo apt-get install -y unzip

Перейдите в директорию проекта и установите Laravel 5.4 через composer:

cd /var/www/laravel
composer create-project laravel/laravel .

Ожидайте завершения установки — composer загрузит зависимости и создаст структуру проекта.

После установки установите владельца файлов на системного веб-пользователя (www-data) и задайте права для каталога storage:

sudo chown -R www-data:www-data /var/www/laravel
sudo find /var/www/laravel -type f -exec chmod 644 {} \;
sudo find /var/www/laravel -type d -exec chmod 755 {} \;
sudo chmod -R 775 /var/www/laravel/storage /var/www/laravel/bootstrap/cache

Пояснение: каталог storage и bootstrap/cache должны быть доступны для записи процессом PHP-FPM (пользователь www-data). Использование 775 и владельца www-data реализует баланс безопасности и функциональности.

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

Откройте в браузере домен, указанный в server_name, например http://laravel.hakase-labs.co/. Вы должны увидеть стартовую страницу Laravel.

Главная страница Laravel после установки

Если страница не отображается, проверьте логи Nginx и Laravel:

sudo tail -n 100 /var/log/nginx/laravel-error.log
sudo tail -n 100 /var/log/nginx/laravel-access.log
sudo tail -n 100 /var/www/laravel/storage/logs/laravel.log

Частые проблемы и решения:

  • 502 Bad Gateway — проверьте, запущен ли php7.0-fpm и совпадает ли путь сокета в конфигурации (fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;).
  • 500 Internal Server Error — проверьте права на storage и bootstrap/cache.
  • 404 при запросе index.php — убедитесь, что директива try_files настроена корректно.

Дополнительные улучшения и рекомендации

SSL и HTTPS

Для продакшена обязательно используйте HTTPS. Установите сертификат Let’s Encrypt и автоматический редирект с HTTP на HTTPS:

sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

После установки сертификата добавьте перенаправление на 301 и настройку HSTS при необходимости.

Фаервол и безопасность

Откройте только нужные порты в фаерволе (ufw):

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'   # 80 and 443
sudo ufw enable

Ограничьте доступ к MySQL/MariaDB по сети или используйте привязку 127.0.0.1, если БД локальна.

Настройки производительности

  • Включите opcode cache (OPcache) для PHP.
  • Добавьте настройку worker_processes и worker_connections в Nginx согласно ресурсам сервера.
  • Настройте кэширование (Redis/Memcached) для сессий/кэша Laravel при необходимости.

Резервное копирование

Настройте регулярные бэкапы базы данных и кода. Для MariaDB используйте mysqldump или бинарные бэкапы.


Руководство по отладке — чеклист для ролей

Администратор (DevOps):

  • Проверил, что сервисы nginx, php7.0-fpm и mysql запущены и включены в автозапуск.
  • Настроил файлы конфигурации и проверил nginx -t.
  • Настроил бэкапы и firewall.

Разработчик:

  • Проверил, что composer установил зависимости без ошибок.
  • Проверил права на storage и bootstrap/cache.
  • Протестировал маршруты и middleware на локальной машине.

QA/Тестировщик:

  • Открыл стартовую страницу и основные эндпоинты.
  • Прогнал smoke tests: 200/301/404/500 ответы на ключевые URL.
  • Проверил авторизацию и работу сессий при включённом HTTPS.

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

  • Главная страница Laravel доступна по указанному домену.
  • Nginx возвращает 200 OK на /.
  • PHP-FPM успешно обрабатывает PHP-скрипты (нет 502).
  • Каталоги storage и bootstrap/cache доступны для записи процессу веб-сервера.

Тестовые сценарии

  1. Запрос к / возвращает 200 и содержит маркер Laravel.
  2. Попытка записи в storage/logs создаёт/дополняет файл лога.
  3. Перезапуск php7.0-fpm не приводит к 502 при корректном сокете.
  4. При отключенном сокете nginx возвращает 502 и в логах присутствуют ошибки соединения.

Советы по миграции и совместимости

  • Для Ubuntu 18.04+ и PHP 7.2/7.4 пути к сокету и названия пакетов изменяются (например, php7.2-fpm или php7.4-fpm). Корректируйте fastcgi_pass и директории /etc/php/7.x/.
  • Laravel 5.4 совместим с PHP 5.6.4+ и PHP 7.x, но некоторые сторонние пакеты требуют более новых версий.

Безопасность приложения Laravel

  • Не храните чувствительные данные в public/. Используйте .env и управление секретами.
  • Установите правильные права доступа (см. шаг 7).
  • Отключите режим отладки APP_DEBUG=false в .env на продакшене.
  • Ограничьте доступ к /storage и настройте правильные заголовки безопасности через Nginx.

Список ключевых команд — шпаргалка

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y nginx php7.0-fpm php7.0-mbstring php7.0-mysql mariadb-server composer unzip
sudo systemctl start nginx php7.0-fpm mysql
sudo systemctl enable nginx php7.0-fpm mysql
sudo mysql_secure_installation
composer create-project laravel/laravel /var/www/laravel
sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 775 /var/www/laravel/storage /var/www/laravel/bootstrap/cache

Глоссарий (одна строка каждый)

  • LEMP: Linux, Nginx (Engine X), MySQL/MariaDB, PHP-FPM.
  • PHP-FPM: FastCGI Process Manager для PHP.
  • Composer: менеджер зависимостей для PHP.
  • .env: файл конфигурации окружения Laravel.

Частые ошибки и их решения

  • Ошибка синтаксиса в конфигурации Nginx: исправьте файл и выполните nginx -t.
  • 403 Forbidden: проверьте права на папки и индексные файлы.
  • Composer зависает: проверьте доступ в интернет с сервера и при необходимости обновите CA сертификаты.

Примечание

Это руководство ориентировано на тестовую или staging-среду. Для продакшена дополнительно требуется настройка мониторинга, бэкапов, автоматизированных деплоев и плана отката.

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

Установка Laravel 5.4 на Ubuntu 16.04 включает обновление системы, установку Nginx, PHP-FPM 7.0, MariaDB, Composer и настройку виртуального хоста. После установки Laravel убедитесь в корректных правах на каталоги и настройках безопасности (SSL, firewall, отключение APP_DEBUG).

Важное

  • Проверьте пути к сокетам PHP-FPM и права на storage.
  • На продакшене используйте HTTPS и отключите режим отладки.

Ссылки

Поделиться: 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 быстро