В этом руководстве вы узнаете, как установить LAMP-стек на CentOS 8 и RHEL 8.
Содержание статьи
- 1 LAMP — это набор программного обеспечения, включающий операционную систему Linux, веб-сервер Apache, систему управления базами данных MySQL и язык программирования PHP. Этот стек используется для создания и развертывания динамических веб-сайтов и приложений.
- 2 Начальные условия
- 3 Произведите обновление программных пакетов
- 4 Установите веб-сервер Apache на операционных системах CentOS 8 или RHEL 8.
- 5 Установите сервер базы данных MariaDB на CentOS 8 или RHEL 8.
- 6 Установите PHP на CentOS 8 или RHEL 8.
- 7 Проверка работы PHP
- 8 Автоматизированный перезапуск Apache
- 9 Разрешение Apache на выполнение исходящих сетевых запросов.
- 10 Завершение
LAMP — это набор программного обеспечения, включающий операционную систему Linux, веб-сервер Apache, систему управления базами данных MySQL и язык программирования PHP. Этот стек используется для создания и развертывания динамических веб-сайтов и приложений.
Программный стек представляет собой совокупность программных инструментов, работающих вместе. LAMP расшифровывается как Linux, Apache, MariaDB/MySQL и PHP — все они являются программами с открытым исходным кодом. Этот стек программ чаще всего используется для поддержки динамических веб-сайтов и приложений. Linux служит операционной системой, Apache выполняет функции веб-сервера, MariaDB/MySQL обрабатывает базы данных, а PHP отвечает за создание динамических страниц на стороне сервера.
Начальные условия
Вы можете загрузить и установить RHEL 8, воспользовавшись инструкцией ниже.
- Как бесплатно загрузить и установить RHEL 8
Если вам нужен виртуальный частный сервер (VPS), вы можете создать аккаунт на Vultr через мою реферальную ссылку и получить $50 на счёт в виде бесплатного кредита на 30 дней.
В этом руководстве для выполнения административных задач используется учетная запись root. Для перехода на root выполните следующую команду и введите пароль root.
Произведите обновление программных пакетов
Перед установкой стека LAMP целесообразно выполнить команду для обновления репозитория и программного обеспечения.
dnf update
Установите веб-сервер Apache на операционных системах CentOS 8 или RHEL 8.
Для установки веб-сервера Apache введите следующую команду. Пакет httpd-tools обеспечит установку нескольких полезных утилит, включая инструмент для бенчмаркинга Apache HTTP server (ab).
dnf install httpd httpd-tools
Параметр —permanent позволит сохранить данное правило брандмауэра после перезагрузки системы. Затем необходимо перезапустить демон брандмауэра, чтобы изменения начали действовать.
systemctl reload firewalld
Веб-страница Apache теперь открыта для общего доступа.
Необходимо назначить пользователя apache владельцем веб-директории, так как по умолчанию её владелец — пользователь root.
chown apache:apache /var/www/html - R
По умолчанию сервер Apache применяет имя хоста вашей системы в роли глобального ServerName. Если имя хоста не удается разрешить в системе DNS, то после выполнения команды…
sudo apachectl configtest
Скорее всего, вы столкнетесь с данной ошибкой.
AH00558: apache2: Не удалось надежно определить полное доменное имя сервера, используется 127.0.0.1. Установите директиву 'ServerName' глобально, чтобы подавить это сообщение
Для решения этой задачи можно задать глобальный ServerName в Apache. Установите текстовый редактор командной строки Nano и воспользуйтесь им для создания нового конфигурационного файла.
sudo dnf install nano sudo nano /etc/httpd/conf.d/servername.conf
Включите следующую строку в данный файл.
ServerName localhost
Сохраните и закройте документ. Для сохранения файла в текстовом редакторе Nano нажмите Ctrl+O, затем подтвердите действие, нажав Enter. Чтобы выйти из редактора, используйте сочетание Ctrl+X. Перезагрузите Apache, чтобы изменения начали действовать.
sudo systemctl reload httpd
Теперь, если вы снова введёте команду
sudo apachectl configtest
Вы не столкнетесь с указанным сообщением об ошибке.
Установите сервер базы данных MariaDB на CentOS 8 или RHEL 8.
MariaDB представляет собой альтернативу MySQL и была создана бывшими участниками команды MySQL, которые выразили опасения, что Oracle может сделать MySQL закрытым программным продуктом. Чтобы установить MariaDB на CentOS 8 или RHEL 8, выполните следующую команду.
dnf install mariadb-server mariadb - y
После установки необходимо активировать программу.
systemctl start mariadb
Активируйте автоматический запуск при старте системы.
systemctl enable mariadb
systemctl status mariadb
●mariadb.service - Сервер базы данных MariaDB версии 10.3
Статус загрузки: загружен (/usr/lib/systemd/system/mariadb.service; включен; параметр по умолчанию: отключен)
Состояние:активно функционирует с Сбт 2019-10-12 09:02:53 UTC; 33с назад Документация: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Основной PID: 18608 (mysqld) Статус: "Принимаю ваши SQL-запросы." Задачи: 30 (лимит: 5092) Память: 77.0M CGroup: /system. slice/mariadb.service └─18608 /usr/libexec/mysqld --basedir=/usr
Термин «Включено» обозначает, что функция автозапуска при старте активирована, и мы наблюдаем, что сервер MariaDB функционирует. Теперь необходимо активировать скрипт безопасности.
mysql_secure_installation
Когда вам будет предложено ввести пароль root для MariaDB, просто нажмите Enter, так как пароль еще не задан. Затем введите букву y, чтобы установить пароль для root на сервере MariaDB.

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

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

exit;
Установите PHP на CentOS 8 или RHEL 8.
Установите PHP и несколько распространённых модулей, воспользовавшись следующей командой.
dnf install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring - y
В операционных системах CentOS 8 и RHEL 8 веб-сервер Apache по умолчанию применяет PHP-FPM для обработки PHP-кода, а не mod_php. Поэтому в приведенной команде мы также включили установку php-fpm.После завершения установки требуется запустить данный сервис.
systemctl start php-fpm
Активируйте автоматический запуск при старте системы.
systemctl enable php-fpm
systemctl status php-fpm
●php-fpm.service — Менеджер процессов PHP FastCGI
Статус: загружен (/usr/lib/systemd/system/php-fpm.service; включен; предустановка от поставщика: отключена)
Состояние: активен:активно функционирует с Сбт 2019-10-12 09:54:37 UTC; 3 сек. назад Главный PID: 19755 (php-fpm) Статус: "Готов к обработке соединений" Задачи: 6 (лимит: 5092) Память: 24.5M CGroup: /system. slice/php-fpm.service ├─19755 php-fpm: главный процесс (/etc/php-fpm.conf) ├─19757 php-fpm: пул www ├─19758 php-fpm: пул www ├─19759 php-fpm: пул www ├─19760 php-fpm: пул www └─19761 php-fpm: пул www
«Статус ‘Включено’ свидетельствует о том, что автозапуск при старте системы активирован, и мы можем наблюдать, что PHP-FPM функционирует. Установка пакета php-fpm создает файл php.conf в папке /etc/httpd/conf.d/, поэтому для запуска PHP-кода необходимо перезапустить веб-сервер Apache.»
systemctl restart httpd
Также нужно выполнить следующую команду, чтобы разрешить SELinux Apache исполнять PHP-код через PHP-FPM.
setsebool - P httpd_execmem 1
Проверка работы PHP
Для тестирования PHP-FPM с Apache, необходимо создать файл info.php в корневой папке документации.
nano /var/www/html/info.php
Поместите следующий код PHP в файл.
Закройте и сохраните файл. Если вы настроили LAMP-стек на локальном сервере с CentOS 8 или RHEL 8, введите 127.0.0.1/info.php либо localhost/info.php в адресную строку браузера. На экране должна появиться информация о версии PHP вашего сервера, что подтверждает корректную работу PHP-скриптов с Apache.
Если на удалённом сервере установлена RHEL 8/CentOS, введите в строке браузера server-ip-address/info.php, заменив server-ip-address на реальный IP-адрес вашего сервера.

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

