Установка Laravel с Nginx, PHP-FPM 7.1 и MariaDB на CentOS 7
В этом руководстве показано, как установить фреймворк Laravel на CentOS 7 с использованием веб-сервера Nginx, PHP-FPM 7.1 и сервера базы данных MariaDB. Пошаговые инструкции покрывают подготовку репозиториев, установку и настройку сервисов, конфигурацию SELinux и тестирование сайта.
Важно: Laravel требует PHP версии не ниже 5.6.4; в примере используется PHP 7.1, совместимый с Laravel 5.4.
Зачем это руководство
Primary intent: установка Laravel на CentOS 7 под LEMP. Варианты: установка Laravel под Apache, установка на Ubuntu, развёртывание в контейнере Docker, продакшен-конфигурация с SSL и балансировкой.
Кому полезно: системным администраторам и разработчикам, которые развёртывают Laravel-проекты на CentOS 7.
Содержание
- Предварительные требования
- Установка EPEL
- Установка и запуск Nginx
- Установка PHP-FPM 7.1 и расширений
- Установка MariaDB
- Установка Composer
- Настройка виртуального хоста Nginx для Laravel
- Установка Laravel проектом через Composer
- Конфигурация SELinux
- Тестирование и проверка
- Рекомендации по безопасности, отладке и альтернативы
Предварительные требования
- Сервер с CentOS 7
- Доступ root (или sudo)
- Подключение к интернету для установки пакетов
Шаг 1 - Установка репозитория EPEL
EPEL (Extra Packages for Enterprise Linux) содержит дополнительные пакеты, включая Nginx.
Установите EPEL:
yum -y install epel-releaseПосле выполнения репозитория он будет доступен для установки пакетов.
Шаг 2 - Установка Nginx
Мы используем Nginx как часть LEMP-стека.
Установите Nginx из EPEL:
yum -y install nginxЗапустите сервис и добавьте в автозапуск:
systemctl start nginx
systemctl enable nginxПроверьте прослушиваемые порты:
netstat -plntu
Если netstat отсутствует, установите net-tools:
yum -y install net-toolsImportant: убедитесь, что никакой другой сервис не занимает порт 80.
Шаг 3 - Установка и настройка PHP-FPM 7.1
Laravel требует PHP >= 5.6.4; здесь используется PHP 7.1 из стороннего репозитория webtatic.
Добавьте webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановите PHP-FPM и необходимые расширения:
yum install -y php71w php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zipОтредактируйте основной конфиг PHP (/etc/php.ini) и установите:
# откройте файл
vim /etc/php.ini
# найдите и установите
cgi.fix_pathinfo=0Отредактируйте конфигурацию PHP-FPM (/etc/php-fpm.d/www.conf):
vim /etc/php-fpm.d/www.confЗадайте пользователя и группу для процесса:
user = nginx
group = nginxПереключитесь на сокет вместо TCP-порта:
listen = /run/php-fpm/php-fpm.sockУстановите владельца и права сокета:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660Укажите переменные окружения, полезные для процессов:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmpЗапустите и включите PHP-FPM:
systemctl start php-fpm
systemctl enable php-fpmПроверьте наличие сокета:
netstat -pl | grep php-fpm.sockNotes: Если используете SELinux, убедитесь, что контекст сокета и прав доступа совместимы с Nginx.
Шаг 4 - Установка MariaDB
Можно использовать MySQL или PostgreSQL; в этом руководстве — MariaDB.
Установите сервер MariaDB:
yum -y install mariadb mariadb-serverЗапустите и добавьте в автозапуск:
systemctl start mariadb
systemctl enable mariadbПроверьте прослушивание порта 3306:
netstat -plntu
Защитите установку и задайте пароль root:
mysql_secure_installationСледуйте подсказкам (установите пароль root, удалите анонимных пользователей, запретите удалённый доступ для root, удалите тестовую базу, перезагрузите таблицы прав).
Шаг 5 - Установка Composer
Composer — менеджер пакетов для PHP. Установите его в /usr/bin:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composerПроверьте работу команды:
composer
Composer будет использоваться для создания проекта Laravel.
Шаг 6 - Настройка виртуального хоста Nginx для Laravel
Создадим корень веб-приложения и конфигурацию для Nginx.
mkdir -p /var/www/laravel
cd /etc/nginx
vim conf.d/laravel.confВставьте в файл конфигурацию:
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-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}Проверьте конфигурацию и перезапустите Nginx:
nginx -t
systemctl restart nginx
Совет: замените server_name на ваш реальный домен или настройте локальную запись /etc/hosts для тестирования.
Шаг 7 - Установка Laravel
Установите утилиту unzip, перейдите в корень веб-проекта и создайте проект через Composer:
yum -y install unzip
cd /var/www/laravel
composer create-project laravel/laravel .
После завершения установки измените владельца и права:
chown -R nginx:root /var/www/laravel
chmod 755 /var/www/laravel/storageImportant: в продакшене права на каталоги storage и bootstrap/cache обычно дают более строгие ограничения, но web-процессу нужен доступ на запись.
Шаг 8 - Конфигурация SELinux
Если SELinux в режиме Enforcing, нужно настроить контексты для каталогов сайта, чтобы Nginx и PHP-FPM могли читать и писать необходимые файлы.
Проверьте статус SELinux:
sestatus
Установите инструменты управления SELinux:
yum -y install policycoreutils-pythonПримените контексты к необходимым каталогам:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/public(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/app(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/bootstrap(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/database(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/resources(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/routes(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/vendor(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/tests(/.*)?'
restorecon -Rv '/var/www/laravel/'
Notes: если selinux-policy не поддерживает semanage, установите пакет policycoreutils-python-utils.
Шаг 9 - Тестирование Laravel
Откройте браузер и перейдите по адресу вашего домена (или по IP). Если Nginx и Laravel настроены корректно, вы увидите стартовую страницу Laravel.

Поздравляем — базовая установка завершена.
Дополнения: безопасность и эксплуатация
Минимальные рекомендации по безопасности
- Не храните реальные секреты в репозитории. Файл .env должен быть доступен только серверу.
- Ограничьте права доступа: storage и bootstrap/cache — запись только для веб-процесса.
- Включите HTTPS (Let’s Encrypt) и перенаправляйте HTTP на HTTPS.
- Регулярно обновляйте пакеты и зависимости Composer.
- Отключите показ ошибок в продакшене (APP_DEBUG=false).
Настройка .env
- Настройте DB_HOST, DB_DATABASE, DB_USERNAME и DB_PASSWORD.
- Установите APP_KEY через artisan:
php artisan key:generateРезервное копирование
- Периодически экспортируйте дампы базы данных и архивируйте файлы проекта.
- Храните бэкапы вне сервера приложения.
Отладка и распространённые проблемы
- 502 Bad Gateway при обращении к PHP: проверьте, работает ли php-fpm и соответствует ли путь сокета в конфиге Nginx.
- 403 Forbidden: проверьте права на каталоги и SELinux контексты.
- Команды Composer зависают: убедитесь, что у сервера есть доступ в интернет и корректные DNS.
Альтернативные подходы
- Apache + mod_php или Apache + php-fpm вместо Nginx.
- Установка PHP 7.2/7.3/7.4 или 8.0 через Remi или SCL вместо webtatic.
- Контейнеризация: Docker-образ с Nginx+PHP-FPM и отдельным контейнером БД.
- Хостинг на управляемых PaaS (Forge, Vapor, Platform.sh).
Таблица совместимости (основные моменты)
- Laravel 5.4: совместим с PHP >= 5.6.4; в примере использован PHP 7.1.
- CentOS 7: стабильная платформа, SELinux включён по умолчанию.
- MariaDB: совместима как замена MySQL; используйте текущую стабильную ветку из репозитория CentOS.
Быстрая методология развёртывания (мини-метод)
- Подготовка сервера: обновление и необходимые репозитории.
- Установка и запуск Nginx, PHP-FPM, MariaDB.
- Настройка виртуального хоста и прав доступа.
- Установка Laravel через Composer.
- Настройка SELinux, HTTPS, мониторинга и резервного копирования.
Рольовые контрольные списки
Системный администратор:
- Установить и обновить ОС и репозитории.
- Настроить Nginx, PHP-FPM, MariaDB.
- Настроить SELinux и права файлов.
Разработчик:
- Настроить .env и APP_KEY.
- Проверить зависимости Composer.
- Запустить миграции и сиды базы данных.
Критерии приёмки
- Главная страница Laravel открывается по URL.
- PHP-FPM отвечает через сокет, нагрузка в норме.
- База данных доступна и корректно принимает подключения.
- Логи Nginx и Laravel не содержат критических ошибок.
Когда этот подход не подходит
- Требуется Windows-сервер или специфичный стек (IIS).
- Нужно использовать более новые версии PHP, которые недоступны в текущих репозиториях — лучше применить Remi/SCL или контейнеры.
- Высоконагруженные продакшен-системы: потребуется масштабирование, балансировка и продвинутый мониторинг.
Короткая памятка по безопасности и производительности
- Use HTTPS, disable APP_DEBUG, set correct file permissions, run composer install –no-dev в продакшене.
- Кэшируйте конфигурацию и маршруты: php artisan config:cache и php artisan route:cache.
Ссылки
- Официальная документация Laravel: https://laravel.com/docs/5.4/installation
Итого: следуя этому руководству, вы получите работающее окружение Laravel на CentOS 7 с Nginx, PHP-FPM и MariaDB. Проверьте безопасность, настройки SELinux и настройте HTTPS перед размещением в продакшен.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента