Быстрая установка стека LEMP в CentOS 8

Этот мануал поможет вам установить все компоненты стека 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

При необходимости вы всегда можете снова создать этот файл.

Tags: , , , , , , ,