Установка Laravel 5.4 на Ubuntu 16.04 с Nginx, PHP-FPM 7.0 и MariaDB
Что мы сделаем
- Обновим Ubuntu
- Установим Nginx
- Установим PHP-FPM 7.0 и необходимые расширения
- Установим MariaDB
- Установим PHP Composer
- Настроим виртуальный хост Nginx для Laravel
- Установим Laravel
- Протестируем установку
Предварительные требования
- Сервер с 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
Примечание: если 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
Далее запустите скрипт безопасной настройки:
sudo mysql_secure_installationСледуйте подсказкам: установите пароль root, удалите анонимных пользователей, запретите удалённый вход root, удалите тестовую БД и перезагрузите таблицы привилегий.
Примечание: если MariaDB используется в продакшене, рассмотрите создание отдельного пользователя для приложения с ограниченными привилегиями.
Шаг 5 — Установка Composer
Composer — менеджер пакетов PHP. В Ubuntu 16.04 он доступен в репозитории:
sudo apt-get install -y 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.

Если страница не отображается, проверьте логи 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 доступны для записи процессу веб-сервера.
Тестовые сценарии
- Запрос к / возвращает 200 и содержит маркер Laravel.
- Попытка записи в storage/logs создаёт/дополняет файл лога.
- Перезапуск php7.0-fpm не приводит к 502 при корректном сокете.
- При отключенном сокете 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 и отключите режим отладки.
Ссылки
- Официальная документация: https://laravel.com/docs/5.4/installation
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента