Когда WordPress работает на собственном VDS, вы полностью контролируете окружение. Можно самостоятельно выбирать версии PHP, настраивать базу данных, использовать кэширование и повышать безопасность сервера. Это даёт больше возможностей по сравнению с обычным виртуальным хостингом и позволяет получить более высокую производительность.
Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе
Перед установкой рекомендуется обновить систему.
Если вы работаете от пользователя root, то в командах не нужно использовать sudo
sudo dnf upgrade -y
После обновления система получит последние версии пакетов и исправления безопасности.
WordPress работает на связке веб-сервера, базы данных и PHP.
Про Apache есть отдельная статья:
Настройка Apache на VDS с CentOS
Устанавливаем Apache:
sudo dnf install httpd -y
Подробнее про dnf: Как установить и удалить программу в Linux через терминал
Запускаем сервис и добавляем его в автозагрузку:
sudo systemctl enable --now httpd
Проверяем:
systemctl status httpd
Если увидите статус active (running) — всё работает.
Подробнее о systemctl можно узнать из статьи:
Как перезапустить сервис в Linux
В CentOS вместо MySQL используется MariaDB, которая полностью совместима с WordPress.
Про неё подробно рассказано в статье:
Установка MySQL (MariaDB) на сервер Linux
Устанавливаем сервер:
sudo dnf install mariadb-server -y
Запускаем службу:
sudo systemctl enable --now mariadb
Выполняем первоначальную настройку безопасности:
sudo mysql_secure_installation
Если система задаёт вопросы, можно выбирать рекомендуемые безопасные параметры.
sudo dnf module reset php -y
sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
sudo dnf install php php-mysqlnd php-xml php-gd php-curl php-mbstring php-zip php-intl -y
Установка может занять несколько минут.
После установки перезапустите Apache:
sudo systemctl restart httpd
Подключаемся к серверу:
sudo mysql
Создаём базу данных и пользователя.
Password123!!! замените на собственный пароль.
CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'Password123!!!';
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Кодировка utf8mb4 полностью поддерживается WordPress и позволяет хранить любые символы.
Если появится ошибка:
Your password does not satisfy the current policy requirements
используйте более сложный пароль с буквами разного регистра, цифрами и специальными символами.
Переходим в каталог сайта:
cd /var/www/html
sudo rm -f index.html
rm — удаление файлов
Скачиваем WordPress:
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xvf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
mv — перемещение файлов
Назначаем владельца:
sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html
Подробнее о правах:
Мини-гайд по правам доступа в Linux
Создаём конфигурацию:
sudo nano /etc/httpd/conf.d/wordpress.conf
cat > /etc/httpd/conf.d/wordpress.conf << 'EOF'
<VirtualHost *:80>
ServerName 147.45.113.2
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/wp_error.log
CustomLog /var/log/httpd/wp_access.log combined
</VirtualHost>
EOF
Проверяем конфигурацию:
sudo apachectl configtest
Если получили сообщение:
Syntax OK

Отключите приветственную страницу Apache
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.disabled
перезапускаем Apache:
sudo systemctl reload httpd
.htaccessВ CentOS модуль mod_rewrite уже установлен.
Достаточно убедиться, что в конфигурации присутствует:
AllowOverride All
В CentOS по умолчанию включён SELinux, который может запретить Apache доступ к файлам WordPress.
Проверяем его состояние:
getenforce
Если вывод:
Enforcing
назначаем правильный контекст:
sudo chcon -R -t httpd_sys_content_t /var/www/html
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
Чтобы настройки сохранились после перезагрузки:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content(/.*)?"
sudo restorecon -Rv /var/www/html
Если команда semanage отсутствует:
sudo dnf install policycoreutils-python-utils -y
Если используется firewalld, откройте HTTP и HTTPS:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Откройте:
http://ваш-домен.ru

WordPress предложит завершить установку.

Укажите:
Устанавливаем Certbot:
sudo dnf install certbot python3-certbot-apache -y
Получаем сертификат:
sudo certbot --apache
После этого сайт автоматически станет доступен по HTTPS.
sudo dnf upgrade
Если он не используется, добавьте в .htaccess:
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
Для WordPress хорошо подходят: