Этот мануал поможет вам установить все компоненты стека LEMP на сервер CentOS 8. Хотя пакет MySQL есть в стандартном репозитории системы CentOS 8, мы установим MariaDB.
Более подробная версия мануала находится по этой ссылке.
Требования
Для работы вам нужен сервер CentOS 8, настроенный согласно этому мануалу.
1: Установка Nginx
Поскольку это первое взаимодействие с менеджером dnf в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx.
sudo dnf update
sudo dnf install nginx
После завершения установки введите эту команду, чтобы включить и запустить сервер:
sudo systemctl start nginx
Если ранее вы включили брандмауэр firewalld, нужно разблокировать порт 80 для HTTP соединений на постоянной основе:
sudo firewall-cmd --permanent --add-service=http
Перезапустите брандмауэр, чтобы изменения вступили в силу:
sudo firewall-cmd --reload
Добавив новое правило брандмауэра, нужно проверить, работает ли сервер. Попробуйте открыть стандартную страницу в браузере по доменному имени или IP-адресу сервера. На экране должна появиться стандартная посадочная страница Nginx:
Welcome to Nginx on Red Hat Enterprise Linux!
2: Установка MariaDB
Чтобы установить MariaDB, поддерживаемый сообществом форк MySQL, введите:
sudo dnf install mariadb-server
Когда установка завершится, включите и запустите сервис MariaDB:
sudo systemctl start mariadb
После установки MariaDB требует дополнительной настройки. Чтобы защитить установку, можно запустить простой скрипт безопасности, который удалит потенциально рискованные параметры. Запустите скрипт:
sudo mysql_secure_installation
Сначала скрипт предложит указать root-пароль MariaDB. Вы установили MariaDB только что и еще не внесли никаких изменений в конфигурацию, этого пароля пока у вас нет, поэтому просто нажмите Enter.
В следующем окне скрипт предложит настроить root пароль для базы данных. Введите N и нажмите клавишу Enter. Вместо пароля MariaDB использует для root более надежный метод аутентификации, поэтому пароль сейчас можно не устанавливать.
На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MariaDB.
После этого откройте командную строку MariaDB в терминале:
sudo mysql
Вы подключитесь к серверу MariaDB в качестве root пользователя базы данных. Вы должны увидеть примерно такой результат:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Чтобы создать новую БД, введите следующую команду из консоли MariaDB:
CREATE DATABASE example_database;
Теперь вы можете создать нового пользователя и передать ему все права на новую БД.
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Сбросьте привилегии, чтобы новые настройки вступили в силу в текущей сессии:
FLUSH PRIVILEGES;
Затем выйдите из оболочки MariaDB:
exit
3: Установка PHP-FPM
Чтобы установить пакеты php-fpm и php-mysqlnd, введите эту команду (базовые пакеты PHP будут автоматически установлены как зависимости):
sudo dnf install php-fpm php-mysqlnd
После установки нужно открыть файл /etc/php-fpm.d/www.conf и внести внего несколько поправок.
Вместо текстового редактора vi вы можете установить более удобный редактор, например nano:
sudo dnf install nano
Откройте файл в этом редакторе:
sudo nano /etc/php-fpm.d/www.conf
Найдите директивы user и group. В nano можно выполнить поиск по открытому файлу с помощью клавиш CTRL+W. Вместо apache введите значение nginx.
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
Сохраните и закройте файл (Ctrl + X, Y и Enter).
Чтобы включить и запустить сервис php-fpm, введите:
sudo systemctl start php-fpm
Перезапустите Nginx, чтобы он добавил конфигурацию установки php-fpm:
sudo systemctl restart nginx
4: Тестирование взаимодействия PHP и Nginx
В CentOS 8 стандартная установка php-fpm автоматически создает конфигурационные файлы, с помощью которых веб-сервер Nginx сможет обрабатывать файлы .php в корневом каталоге /usr/share/nginx/html. Вам не нужно вносить изменения в конфигурацию Nginx, чтобы PHP смог работать корректно.
Единственное изменение, которое нужно внести, – это в привилегии на корневой каталог Nginx. Это даст вам возможность создавать и редактировать файлы в этом каталоге в сессии своего обычного пользователя без необходимости использовать префикс sudo.
sudo chown -R 8host.8host /usr/share/nginx/html/
Чтобы убедиться, что веб-сервер успешно обслуживает файлы PHP, создайте тестовый файл info.php в каталоге document root.
nano /usr/share/nginx/html/info.php
Вставьте в этот файл следующий код:
<?php
phpinfo();
Сохраните и закройте файл.
Теперь попробуйте открыть его в браузере:
http://your_domain/info.php
На экране появится страница, содержащая информацию о сервере. Если такая страница появилась, Nginx правильно обслуживает файлы PHP.
После проверки обязательно удалите этот файл, иначе любой посторонний пользователь сможет получить доступ к конфиденциальным данным о вашем сервере.
rm /usr/share/nginx/html/info.php
При необходимости вы всегда можете снова создать этот файл.