Wordpress + NGINX + PHP + MariaDB на Rocky Linux

Обновлено и опубликовано Опубликовано:

Используемые термины: WordPressNGINXPHPMariaDB, Rocky.

Рассмотрим простой пример, как быстро развернуть веб-сервер для запуска Wordpress. Наша система будет работать с использованием следующих компонентов:

  • Веб-сервер NGINX.
  • Интерпретатор PHP.
  • СУБД MariaDB.

Установка и настройка данных компонентов будет выполнено под операционной системой Rocky Linux версии 9.

Подготовка системы

Прежде чем перейти к развертыванию системы, выполним подготовительные работы.

Системные требования

На сайте Wordpress изучаем системные требования. Необходимо убедиться, что наш сервер будет соответствовать версиям программных продуктов, которые требуются для его работы. Обращаем внимание на:

  1. Версию PHP.
  2. Версию СУБД.
  3. Веб сервер.

Фиксируем данные требования. Нам понадобится данная информация позже.

В нашем примере будет рассмотрена связка NGINX, PHP 8.0 и MariaDB 10.5.

Брандмауэр

Для работы веб-сервера нам понадобится порт 80. Открываем его командой:

firewall-cmd --permanent --add-service=http

Применяем настройку:

firewall-cmd --reload

Настройка веб-сервера

Предполагается, что мы будем использовать веб-сервер NGINX, PHP и MariaDB. Рассмотрим установку данных компонентов по очереди.

NGINX

Выполняем установку:

dnf install nginx

Стартуем сервис nginx и разрешаем его автозапуск:

systemctl enable nginx --now

Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://<IP-адрес сервера>. В итоге мы должны увидеть заголовок «Welcome to nginx!»:

Заголовок Welcome to nginx!

* в зависимости от версии и типа Linux, данная страница может отличаться. Однако, это должна быть приветственная страница nginx, указывающая, что веб-сервер в рабочем состоянии.

PHP

Устанавливаем PHP и необходимые для работы Wordpress компоненты:

dnf install php php-fpm php-curl php-dom php-imagick php-mbstring php-zip php-gd php-intl

В моем случае была выполнена установке PHP версии 8.0. При желании, мы можем посмотреть это командой:

php -v

Вывод будет, примерно, такого вида:

PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies

Разрешаем и запускаем php-fpm:

systemctl enable php-fpm --now

NGINX + PHP

Настроим виртуальный домен в NGINX и связку последнего с PHP. Предположим, что у нас сайт будет wordpress.dmosk.ru.

Создадим конфигурационный файл для настройки домена:

vi /etc/nginx/conf.d/wordpress.dmosk.ru.conf

upstream php {
    server unix:/run/php-fpm/www.sock;
}

server {
    listen 80;
    
    server_name wordpress.dmosk.ru;
    root /var/www/wordpress.dmosk.ru;

    access_log /var/log/nginx/wordpress.dmosk.ru_access_log;
    error_log /var/log/nginx/wordpress.dmosk.ru_error_log;

    index index.php;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

* за основу данной конфигурации взят пример с официальной страницы wordpress. Необходимо обратить внимание на следующее (выделено желтым):

  • server_name — имя домена, на котором будет работать сайт Wordpress.
  • root — путь до директории на сервере, где будут находиться скрипты сайта.
  • access_log — путь до логов доступа.
  • error_log — путь до логов с ошибками.

Проверяем конфигурацию nginx и перечитываем ее:

nginx -t && nginx -s reload

Создаем каталог, в котором должны находиться файлы Wordpress (то, что мы указали в директиве root):

mkdir -p /var/www/wordpress

Создадим в данном каталоге скрипт index.php:

echo "<?php phpinfo(); ?>" > /var/www/wordpress/index.php

* скрипт будет выводить информацию о PHP.

Открываем браузер и вводим адрес сайта (тот, что указан в директиве server_name). В итоге мы должны увидеть полную информацию об интерпретаторе PHP:

Страница с информацией о PHP

Так как в нашем примере создан виртуальный домен, необходимо обратиться к порталу, именно, по его имени. Данное имя должно разрешаться в IP-адрес сервера, где мы развернули веб-сервер. Для этого необходимо настроить DNS или использовать локальный файл hosts.

MariaDB

Устанавливаем СУБД и расширение для PHP:

dnf install mariadb-server php-mysqli

Разрешаем автозапуск сервиса mariadb и стартуем его:

systemctl enable mariadb --now

Также перезапустим php-fpm, чтобы появилась информация о расширении работы с mysql:

systemctl restart php-fpm

Заходим в оболочку SQL:

mysql

Создаем базу данных:

> CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* в данном примере создастся база с названием wordpress. Однако, если сайтов на одном сервере будет несколько, лучше давать имена базам в соответствии с названием сайта.

Создадим пользователя и предоставим ему доступ к базе данных wordpress:

> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress123';

> GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpress'@'localhost';

* мы создадим пользователя wordpress, которому разрешено подключаться только с локального хоста (@localhost) и паролем wordpress123.

Выходим из SQL:

> quit

Проверим, что php видит расширение mysqlnd:

php -i | grep mysqlnd

Среди всего вывода мы должны увидеть такую строку:

mysqlnd => enabled

Веб-сервер готов для установки wordpress.

Установка wordpress

Скачиваем самый свежий архив CMS:

curl -sLO https://ru.wordpress.org/latest-ru_RU.tar.gz

Распаковываем его в каталог, созданный для wordpress:

tar -zxf latest-ru_RU.tar.gz -C /var/www/wordpress/ --strip-components 1

Зададим владельца на распакованные файлы:

chown -R apache:apache /var/www/wordpress

Открываем снова браузер и переходим на страницу сайта. Мы должны увидеть приветственное сообщение от wordpress. Нажимаем кнопку Вперед:

На странице приветствия wordpress нажимаем кнопку Вперед

На следующей странице заполняем данные для подключения к базе данных:

Заполняем формы для подключения к базе данных

* нами были созданы база данных wordpress, пользователь wordpress и пароль wordpress123. Мы не создавали отдельного сервера баз данных, поэтому в качестве его адреса указываем localhost. Префикс базы можно не менять.

Кликаем по Отправить. Если мастер установки успешно подключится к базе, мы должны увидеть следующую страницу. Нажимаем на ней Запустить установку:

Если подключение к базе выполнено успешно, запускаем установку CMS

Укажем название нашего сайта, а также зададим имя пользователя и пароль для доступа к панели управления:

На последнем шаге установки называем сайт и создаем пользователя

Готово. Мастер сообщаем, что установка завершена. Переходим по ссылке Войти, чтобы оказаться на странице входа в панель управления:

Установка вордпресса завершена

Вводим логин и пароль для входа в CMS. Переходим на страницу Инструменты - Здоровье сайта:

Переходим на страницу проверки качества настройки сервера для сайта

Необходимо убедиться, что нет критических ошибок. При желании, можно выполнить рекомендации системы.

Настройка https

Для настройки https нам нужно:

  • Поменять URL в Wordpress.
  • Получить сертификат.
  • Настроить NGINX.
  • Открыть порт в брандмауэре.

Заходим в панель администрирования CMS. Переходим в Настройки - Общие:

Заходим в общие настройки wordpress

Меняем настройки для:

  • Адрес WordPress (URL).
  • Адрес сайта (URL).

Необходимо заменить http на https. Нажимаем Сохранить.

Получаем сертификат одним из способов:

  1. Купить.
  2. Получить бесплатно в Let's Encrypt.
  3. Сгенерировать самоподписанный (подходит только для тестирования).

Файлы сертификата должны быть скопированы на сервер. После открываем конфигурационный файл nginx:

vi /etc/nginx/conf.d/wordpress.dmosk.ru.conf

Вносим изменения (выделено желтым):

...
server {
    listen       80;
    listen       443 ssl;
    ...

    if ($scheme = 'http') {
        return 301 https://$host$request_uri;
    }

    ssl_certificate     /etc/letsencrypt/live/wordpress.dmosk.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wordpress.dmosk.ru/privkey.pem;
    ...

* мы добавили директиву прослушивания 443 порта (listen), настроили редирект с http на https и прописали пути до файлов сертификатов (в вашем случае пути будут другими).

Проверяем корректность настройки nginx и перечитываем конфигурацию:

nginx -t && nginx -s reload

Открываем порт для https:

firewall-cmd --permanent --add-service=https

Применяем настройку:

firewall-cmd --reload

Готово.

Читайте также

Другие полезные инструкции:

1. Как вручную обновить Wordpress.

2. Получение бесплатного SSL сертификата Let's Encrypt.

3. Развертывание Wordpress в Docker и установка его в командной строке.

4. Создание или редактирование администратора в различных CMS через базу данных.

# Rocky Linux # Интернет # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет