Categories: Шпаргалки

WordPress + NGINX + PHP + MariaDB на Rocky Linux

Используемые термины: WordPress , NGINX , PHP , MariaDB , 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!»:

* в зависимости от версии и типа 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.remontka.com.

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

vi /etc/nginx/conf.d/wordpress.remontka.com.conf

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

server {
listen 80;

server_name wordpress.remontka.com ;
root /var/www/wordpress.remontka.com ;

access_log /var/log/nginx/wordpress.remontka.com_access_log ;
error_log /var/log/nginx/wordpress.remontka.com_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:

Так как в нашем примере создан виртуальный домен, необходимо обратиться к порталу, именно, по его имени. Данное имя должно разрешаться в 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 и пароль wordpress123 . Мы не создавали отдельного сервера баз данных, поэтому в качестве его адреса указываем localhost . Префикс базы можно не менять.

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

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

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

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

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

Настройка https

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

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

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

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

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

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

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

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

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

vi /etc/nginx/conf.d/wordpress.remontka.com.conf

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


server {
listen 80;
listen 443 ssl;

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

ssl_certificate /etc/letsencrypt/live/wordpress.remontka.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wordpress.remontka.com/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 через базу данных .

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

4 дня ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

4 дня ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

4 дня ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

4 дня ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

4 дня ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

4 дня ago