В этом уроке вы узнаете, как установить LEMP стек на RHEL 8 и CentOS 8.
Содержание статьи
- 1 LEMP стек — это набор программного обеспечения, включающий операционную систему Linux, веб-сервер Nginx, базу данных MySQL или MariaDB и язык программирования PHP, который используется для создания и развертывания веб-приложений.
- 2 Требуемые условия
- 3 Установка веб-сервера Nginx на RHEL 8 или CentOS 8
- 4 Установка MariaDB на сервер с операционной системой RHEL 8 или CentOS 8.
- 5 Инсталляция PHP-FPM на RHEL 8 или CentOS 8
- 6 Проверка работы PHP
- 7 Автоматическая перезагрузка Nginx
- 8 Итоги подведены.
LEMP стек — это набор программного обеспечения, включающий операционную систему Linux, веб-сервер Nginx, базу данных MySQL или MariaDB и язык программирования PHP, который используется для создания и развертывания веб-приложений.
Программный стек представляет собой набор программных средств, объединённых для совместной работы. Аббревиатура LEMP обозначает Linux, Nginx (читается как engine X), MariaDB/MySQL и PHP — всё это компоненты с открытым исходным кодом. Данный стек является одним из наиболее популярных для поддержки динамических веб-сайтов и приложений. Linux выступает в роли операционной системы, Nginx — это веб-сервер, MariaDB или MySQL выполняют функции базы данных, а PHP служит серверным языком программирования, создающим динамические веб-страницы.
Требуемые условия
Вы можете загрузить и установить RHEL 8, воспользовавшись инструкцией ниже.
- Как бесплатно загрузить и установить RHEL 8
Вы можете зарегистрировать аккаунт на Vultr по моей реферальной ссылке и получить $50 на баланс в течение 30 дней, если вам нужен VPS (виртуальный частный сервер).
В этом уроке используется root-аккаунт для выполнения административных операций. Для перехода на root выполните следующую команду и введите пароль root.
Установка веб-сервера Nginx на RHEL 8 или CentOS 8
Nginx представляет собой высокоэффективный веб-сервер, который в настоящее время пользуется большой популярностью. Его можно использовать как обратный прокси-сервер и для кэширования. Для установки веб-сервера Nginx введите следующую команду.
yum install nginx - y
После завершения установки мы можем активировать Nginx, воспользовавшись следующей командой:
systemctl start nginx
Активируйте автоматический запуск Nginx при старте системы, введя следующую команду.
systemctl enable nginx
Теперь узнайте его текущее состояние.
systemctl status nginx
●nginx.service - Веб-сервер Nginx и сервер обратного проксирования. Статус загрузки: загружен (/usr/lib/systemd/system/nginx.service;включеноЗаводская настройка: отключено) Включено:деятельный (функционирует) с Ср 2018-12-05 02:04:00 EST; 7 секунд назад Главный PID: 5032 (nginx) Задачи: 2 (ограничение: 11512) Память: 8.4M CGroup: /system. slice/nginx.service ├─5032 nginx: главный процесс /usr/sbin/nginx └─5034 nginx: рабочий процесс
«Включено» свидетельствует о том, что автозапуск при старте системы активирован, и мы можем наблюдать, что Nginx функционирует. Имейте в виду, что указанная выше команда не завершит выполнение сразу после её выполнения. Вам потребуется нажать «q», чтобы выйти из режима выполнения команды.
Убедитесь в актуальности версии Nginx.
nginx - v
версия nginx: nginx/1.14.1
Чтобы установить LEMP на локальный компьютер с RHEL 8/CentOS 8, введите в адресной строке браузера 127.0.0.1 или localhost. Если всё настроено верно, вы увидите страницу «Welcome to Nginx», что подтверждает, что веб-сервер Nginx функционирует корректно.

В стандартной конфигурации RHEL 8/CentOS 8 ограничивает доступ к порту 80 для внешних пользователей. Чтобы разрешить другим устройствам доступ к веб-странице, необходимо разблокировать порт 80 в firewalld, который является динамическим менеджером брандмауэра для RHEL/CentOS. Для открытия порта 80 выполните следующую команду.
firewall-cmd --permanent --zone=public --add-service=http
Если в будущем вы планируете активировать HTTPS на Nginx, обязательно откройте порт 443.
firewall-cmd --permanent --zone=public --add-service=https
Опция —permanent сделает данное правило брандмауэра постоянным даже после перезагрузки системы. После этого перезапустите демон брандмауэра, чтобы изменения были применены.
systemctl reload firewalld
Теперь веб-страница Nginx стала общедоступной.
В конечном итоге необходимо установить пользователя nginx в качестве владельца веб-директории. По умолчанию владельцем выступает пользователь root.
chown nginx:nginx /usr/share/nginx/html - R
Установка MariaDB на сервер с операционной системой RHEL 8 или CentOS 8.
MariaDB представляет собой полную альтернативу MySQL. Этот проект разрабатывают бывшие участники команды MySQL, которые беспокоятся о том, что Oracle может сделать MySQL закрытым продуктом. Для установки MariaDB на RHEL 8/CentOS 8 используйте следующую команду.
yum install mariadb-server mariadb - y
После завершения установки необходимо запустить MariaDB.
systemctl start mariadb
Активируйте автоматический запуск при старте операционной системы.
systemctl enable mariadb
systemctl status mariadb
●mariadb.service - сервер базы данных MariaDB версии 10.3. Статус: активен (загружен из файла /usr/lib/systemd/system/mariadb.service).включенопредустановка от производителя: выключено) Включено:активно функционирует с Ср 2018-12-05 02:40:44 EST; 8 сек назад Документация: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Основной PID: 17582 (mysqld) Статус: "Обрабатываем ваши SQL-запросы." Задач: 30 (лимит: 11512) Память: 75.2M CGroup: /system. slice/mariadb.service └─17582 /usr/libexec/mysqld --basedir=/usr
«Включено» свидетельствует о том, что автозапуск при старте системы активирован, и сервер MariaDB функционирует. Теперь необходимо запустить скрипт безопасности.
mysql_secure_installation
При запросе ввода пароля root для MariaDB просто нажмите клавишу Enter, так как на данный момент пароль root не установлен. Затем введите букву y, чтобы задать новый пароль root для сервера MariaDB.

Теперь вы можете нажать Enter, чтобы ответить на все оставшиеся вопросы, что приведет к удалению анонимного пользователя, отключению удаленного доступа для root и удалению тестовой базы данных. Этот шаг является важным условием для обеспечения безопасности базы данных MariaDB. (Имейте в виду, что буква Y написана заглавной, что указывает на то, что это значение по умолчанию.)

Теперь у вас есть возможность ввести следующую команду и указать пароль root для MariaDB, чтобы получить доступ к оболочке MariaDB.
mysql - u root - p

exit;
Инсталляция PHP-FPM на RHEL 8 или CentOS 8
Для установки PHP и необходимых модулей используйте следующую команду:
yum install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring - y
После завершения установки нужно выполнить запуск программы.
systemctl start php-fpm
Активируйте автоматический запуск при старте операционной системы.
systemctl enable php-fpm
systemctl status php-fpm
●Служба php-fpm.service - Менеджер процессов PHP FastCGI
Загружено: загружено (/usr/lib/systemd/system/php-fpm.service;enabled; vendor preset: disable> Active: активен (в работе) since Wed 2018-12-05 03:06:01 EST; 22s ago Main PID: 18631 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 11512) Memory: 29.6M CGroup: /system. slice/php-fpm.service ├─18631 php-fpm: master process (/etc/php-fpm.conf) ├─18632 php-fpm: pool www
«Enabled» означает, что автозапуск при старте системы активирован, и мы видим, что PHP-FPM функционирует. Теперь нужно внести изменения в конфигурационный файл PHP-FPM.
nano /etc/php-fpm.d/www.conf
По умолчанию PHP-FPM запускается от имени пользователя apache. Поскольку мы используем веб-сервер Nginx, необходимо это настроить. Найдите следующие две строки.
user = apache group = apache
user = nginx group = nginx
В данном файле содержится следующая строка.
listen = /run/php-fpm/www. sock
Это означает, что PHP-FPM использует Unix-сокет вместо TCP/IP-сокета, что является положительным моментом. Сохраните изменения и закройте файл. Перезапустите PHP-FPM, чтобы применить обновления.
systemctl reload php-fpm
Проверка работы PHP
Пакет Nginx, установленный по умолчанию на RHEL 8/CentOS 8, включает настройки для PHP-FPM, которые находятся в файлах /etc/nginx/conf.d/php-fpm.conf и /etc/nginx/default. d/php.conf.Для проверки работы PHP-FPM с Nginx необходимо создать файл info.php в корневом каталоге документов.
nano /usr/share/nginx/html/info.php
Добавьте данный PHP-код в файл.
Закройте и сохраните файл. Если вы установили стек LEMP на локальном сервере RHEL 8 или CentOS 8, введите 127.0.0.1/info.php или localhost/info.php в адресную строку браузера. На экране должна отобразиться информация о PHP вашего сервера. Это подтверждает, что PHP-скрипты работают правильно с веб-сервером Nginx.
Если RHEL 8 или CentOS запущены на удалённом сервере, введите в адресную строку браузера server-ip-address/info.php, при этом заменив server-ip-address на реальный IP-адрес.

Если браузер не показывает информацию о PHP и предлагает скачать файл info.php, просто перезагрузите Nginx и PHP-FPM.
sudo systemctl restart nginx php-fpm
После этого у вас появится возможность просмотреть информацию о PHP в веб-браузере.
Автоматическая перезагрузка Nginx
В случае, если процесс Nginx остановился по какой-либо причине, вам необходимо выполнить команду для его перезапуска.
sudo systemctl restart nginx
Вместо ручного ввода этой команды, мы можем настроить автоматический перезапуск Nginx, изменив файл службы nginx.service в systemd. Для того чтобы изменить стандартные настройки службы systemd, создадим отдельную папку.
sudo mkdir - p /etc/systemd/system/nginx.service.d/
После этого создайте документ в данной папке.
sudo nano /etc/systemd/system/nginx.service.d/restart.conf
Включите в файл следующие команды, чтобы Nginx автоматически перезапускался через 5 секунд после выявления ошибки.
[Service] Restart=always RestartSec=5s
Сохраните изменения в файле и закройте его. После этого выполните перезагрузку systemd.
sudo systemctl daemon-reload
Чтобы убедиться в этом, остановите процесс Nginx с помощью:
sudo pkill nginx
После этого проверьте состояние Nginx. Вы заметите, что он перезапустился автоматически.
systemctl status nginx
Итоги подведены.
Поздравляем! Вы успешно настроили Nginx, MariaDB и PHP 7.2 на Red Hat 8 или CentOS 8. Для повышения безопасности вашего сервера рекомендуется удалить файл info.php, чтобы избежать потенциального доступа хакеров.
rm /usr/share/nginx/html/info.php
Надеюсь, этот урок оказался для вас информативным. Если вам понравилась статья, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций. Всего наилучшего!

