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

Установка Laravel с Nginx, PHP-FPM 7.1 и MariaDB на CentOS 7

6 min read DevOps Обновлено 26 Nov 2025
Laravel на CentOS 7: Nginx, PHP-FPM 7.1, MariaDB
Laravel на CentOS 7: Nginx, PHP-FPM 7.1, MariaDB

В этом руководстве показано, как установить фреймворк 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

Скриншот установки Nginx на CentOS 7

Если netstat отсутствует, установите net-tools:

yum -y install net-tools

Important: убедитесь, что никакой другой сервис не занимает порт 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.sock

Notes: Если используете SELinux, убедитесь, что контекст сокета и прав доступа совместимы с Nginx.

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

Можно использовать MySQL или PostgreSQL; в этом руководстве — MariaDB.

Установите сервер MariaDB:

yum -y install mariadb mariadb-server

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

systemctl start mariadb
systemctl enable mariadb

Проверьте прослушивание порта 3306:

netstat -plntu

Скриншот установки MariaDB на CentOS 7

Защитите установку и задайте пароль 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 на CentOS 7

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

Скриншот конфигурации Nginx для Laravel

Совет: замените server_name на ваш реальный домен или настройте локальную запись /etc/hosts для тестирования.

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

Установите утилиту unzip, перейдите в корень веб-проекта и создайте проект через Composer:

yum -y install unzip
cd /var/www/laravel
composer create-project laravel/laravel .

Скриншот установки Laravel на CentOS 7

После завершения установки измените владельца и права:

chown -R nginx:root /var/www/laravel
chmod 755 /var/www/laravel/storage

Important: в продакшене права на каталоги storage и bootstrap/cache обычно дают более строгие ограничения, но web-процессу нужен доступ на запись.

Шаг 8 - Конфигурация SELinux

Если SELinux в режиме Enforcing, нужно настроить контексты для каталогов сайта, чтобы Nginx и PHP-FPM могли читать и писать необходимые файлы.

Проверьте статус SELinux:

sestatus

Скриншот статуса SELinux на CentOS 7

Установите инструменты управления 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/'

Скриншот SELinux для Laravel

Notes: если selinux-policy не поддерживает semanage, установите пакет policycoreutils-python-utils.

Шаг 9 - Тестирование Laravel

Откройте браузер и перейдите по адресу вашего домена (или по IP). Если Nginx и Laravel настроены корректно, вы увидите стартовую страницу Laravel.

Скриншот работающего Laravel с Nginx, PHP-FPM и MariaDB на CentOS 7

Поздравляем — базовая установка завершена.


Дополнения: безопасность и эксплуатация

Минимальные рекомендации по безопасности

  • Не храните реальные секреты в репозитории. Файл .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.

Быстрая методология развёртывания (мини-метод)

  1. Подготовка сервера: обновление и необходимые репозитории.
  2. Установка и запуск Nginx, PHP-FPM, MariaDB.
  3. Настройка виртуального хоста и прав доступа.
  4. Установка Laravel через Composer.
  5. Настройка 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 на CentOS 7 с Nginx, PHP-FPM и MariaDB. Проверьте безопасность, настройки SELinux и настройте 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 быстро