Home » Как установить WordPress на последний CentOS
Как установить WordPress на последний CentOS

Как установить WordPress на последний CentOS

## Как WordPress работает на CentOS

WordPress на CentOS — это классическое решение для продакшена. CentOS (на базе Red Hat Enterprise Linux) славится стабильностью, а WordPress — самая популярная CMS в мире. Связка получается надёжная и предсказуемая.

Основные компоненты стека:
• **Apache/Nginx** — веб-сервер
• **MySQL/MariaDB** — база данных
• **PHP** — язык выполнения WordPress
• **WordPress** — собственно CMS


# Проверим версию CentOS
cat /etc/centos-release
# или для новых версий
cat /etc/redhat-release

Архитектура довольно простая: веб-сервер принимает запросы, передаёт их PHP-интерпретатору, который выполняет код WordPress и обращается к базе данных за контентом.

## Пошаговая установка WordPress на CentOS

Поехали по шагам. Буду показывать на примере CentOS 8/9 (Rocky Linux/AlmaLinux тоже подойдут).

### Шаг 1: Подготовка системы


# Обновляем систему
sudo dnf update -y

# Устанавливаем EPEL репозиторий
sudo dnf install epel-release -y

# Устанавливаем базовые утилиты
sudo dnf install wget curl vim unzip -y

### Шаг 2: Установка веб-сервера

Поставим Apache (можно и Nginx, но Apache проще для новичков):


# Устанавливаем Apache
sudo dnf install httpd -y

# Запускаем и добавляем в автозагрузку
sudo systemctl start httpd
sudo systemctl enable httpd

# Проверяем статус
sudo systemctl status httpd

### Шаг 3: Установка MariaDB


# Устанавливаем MariaDB
sudo dnf install mariadb-server mariadb -y

# Запускаем и добавляем в автозагрузку
sudo systemctl start mariadb
sudo systemctl enable mariadb

# Базовая настройка безопасности
sudo mysql_secure_installation

При выполнении `mysql_secure_installation` отвечаем:
• Set root password? **Y**
• Remove anonymous users? **Y**
• Disallow root login remotely? **Y**
• Remove test database? **Y**
• Reload privilege tables? **Y**

### Шаг 4: Установка PHP


# Устанавливаем PHP и необходимые модули
sudo dnf install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring php-json php-zip php-curl -y

# Перезапускаем Apache
sudo systemctl restart httpd

# Проверяем версию PHP
php -v

### Шаг 5: Создание базы данных для WordPress


# Входим в MySQL
sudo mysql -u root -p

# Создаём базу данных
CREATE DATABASE wordpress_db;

# Создаём пользователя
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'strong_password_here';

# Даём права
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';

# Применяем изменения
FLUSH PRIVILEGES;

# Выходим
EXIT;

### Шаг 6: Скачивание и установка WordPress


# Переходим в директорию временных файлов
cd /tmp

# Скачиваем WordPress
wget https://wordpress.org/latest.tar.gz

# Распаковываем
tar xzf latest.tar.gz

# Копируем файлы в веб-директорию
sudo cp -R wordpress/* /var/www/html/

# Устанавливаем права
sudo chown -R apache:apache /var/www/html/
sudo chmod -R 755 /var/www/html/

# Создаём конфигурационный файл
sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php

### Шаг 7: Настройка WordPress


# Редактируем конфигурацию
sudo vim /var/www/html/wp-config.php

Находим и заменяем:


define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'strong_password_here');
define('DB_HOST', 'localhost');

### Шаг 8: Настройка файрвола


# Открываем порты HTTP и HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Перезагружаем файрвол
sudo firewall-cmd --reload

### Шаг 9: Настройка SELinux


# Устанавливаем контекст SELinux для веб-файлов
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1

# Применяем правильные контексты
sudo restorecon -R /var/www/html/

Теперь можно зайти в браузер и открыть IP-адрес сервера — должен появиться мастер установки WordPress.

## Примеры конфигураций и кейсы

### Кейс 1: Оптимизация производительности

Часто после установки WordPress тормозит. Вот несколько твиков:


# Включаем mod_rewrite для красивых URL
sudo vim /etc/httpd/conf/httpd.conf

# Находим блок Directory /var/www/html и меняем:
AllowOverride All

Настройка кеша в `.htaccess`:


# Кеширование статики

ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"

### Кейс 2: Проблемы с правами доступа

Частая проблема — WordPress не может загружать файлы:


# Правильные права для WordPress
sudo chown -R apache:apache /var/www/html/
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
sudo chmod 600 /var/www/html/wp-config.php

### Кейс 3: Настройка SSL


# Устанавливаем SSL модуль
sudo dnf install mod_ssl -y

# Можно использовать Let's Encrypt
sudo dnf install certbot python3-certbot-apache -y
sudo certbot --apache

## Сравнение с альтернативными решениями

| Характеристика | CentOS + Apache | Ubuntu + Nginx | Docker контейнер |
|—|—|—|—|
| Стабильность | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Простота установки | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Производительность | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Управление | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Подходит для продакшена | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |

## Альтернативы и дополнительные инструменты

### Панели управления

Если лень настраивать руками, можно использовать:
• **cPanel/WHM** — платная, но удобная
• **Webmin** — бесплатная альтернатива
• **ISPConfig** — open source панель

### Инструменты для автоматизации


# Установка через WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# Теперь можно управлять WordPress из командной строки
wp core download
wp config create --dbname=wordpress_db --dbuser=wp_user --dbpass=strong_password_here
wp core install --url=yourdomain.com --title="My Blog" --admin_user=admin --admin_password=admin_pass --admin_email=admin@example.com

### Мониторинг и бекапы


# Простой скрипт бекапа
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
sudo tar -czf /backups/wordpress_$DATE.tar.gz /var/www/html/
mysqldump -u wp_user -p wordpress_db > /backups/database_$DATE.sql

## Автоматизация и скрипты

### Ansible playbook для автоматической установки


---
- hosts: centos_servers
  become: yes
  tasks:
    - name: Install LAMP stack
      dnf:
        name:
          - httpd
          - mariadb-server
          - php
          - php-mysqlnd
        state: present
    
    - name: Start and enable services
      systemd:
        name: "{{ item }}"
        state: started
        enabled: yes
      loop:
        - httpd
        - mariadb

### Terraform для инфраструктуры

Если используете облачные серверы, можно автоматизировать создание инфраструктуры:


resource "aws_instance" "wordpress" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t3.micro"
  
  user_data = <<-EOF
              #!/bin/bash
              dnf update -y
              dnf install -y httpd mariadb-server php php-mysqlnd
              systemctl start httpd mariadb
              systemctl enable httpd mariadb
              EOF
}

## Интересные факты и нестандартные способы

### Мультисайт на одном сервере

WordPress поддерживает мультисайт режим. Можно настроить несколько сайтов на одной установке:


# В wp-config.php добавляем
define('WP_ALLOW_MULTISITE', true);

# После активации через админку добавляем
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

### Интеграция с Redis для кеширования


# Устанавливаем Redis
sudo dnf install redis -y
sudo systemctl start redis
sudo systemctl enable redis

# Устанавливаем PHP Redis модуль
sudo dnf install php-redis -y
sudo systemctl restart httpd

### Использование с Kubernetes

Для высоконагруженных проектов можно деплоить WordPress в Kubernetes:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
spec:
  replicas: 3
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress:latest
        ports:
        - containerPort: 80

## Оптимизация и тонкая настройка

### Настройка PHP для WordPress


# Редактируем php.ini
sudo vim /etc/php.ini

# Увеличиваем лимиты
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000

### Настройка MariaDB для WordPress


# Создаём /etc/my.cnf.d/wordpress.cnf
[mysqld]
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
query_cache_size = 64M
query_cache_limit = 2M

### Логирование и мониторинг


# Включаем логирование WordPress
# В wp-config.php добавляем
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

# Логи будут в /var/www/html/wp-content/debug.log

## Решение частых проблем

### Проблема: "Error establishing a database connection"


# Проверяем статус MariaDB
sudo systemctl status mariadb

# Проверяем доступность базы
mysql -u wp_user -p -h localhost wordpress_db

# Проверяем настройки в wp-config.php
sudo grep -A 10 "DB_NAME" /var/www/html/wp-config.php

### Проблема: 500 Internal Server Error


# Смотрим логи Apache
sudo tail -f /var/log/httpd/error_log

# Проверяем права доступа
sudo ls -la /var/www/html/

# Проверяем синтаксис .htaccess
sudo apachectl configtest

### Проблема: Cannot modify header information

Обычно это связано с пробелами в wp-config.php:


# Проверяем на наличие пробелов до < ? php
sudo head -1 /var/www/html/wp-config.php | hexdump -C

## Безопасность WordPress на CentOS

### Скрытие версий и технической информации


# В wp-config.php добавляем
define('WP_DEBUG', false);
remove_action('wp_head', 'wp_generator');

# В functions.php темы
function remove_version_info() {
    return '';
}
add_filter('the_generator', 'remove_version_info');

### Настройка файрвола для WordPress


# Создаём правила для защиты от брутфорса
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" accept limit value="25/m"'
sudo firewall-cmd --reload

### Защита конфигурационных файлов


# Создаём .htaccess для защиты wp-config.php
sudo vim /var/www/html/.htaccess

# Добавляем

order allow,deny
deny from all

Если нужен надёжный сервер для WordPress, можно взять VPS или выделенный сервер — на них это всё прекрасно работает.

## Заключение и рекомендации

WordPress на CentOS — это проверенное временем решение для серьёзных проектов. Да, установка может показаться сложной по сравнению с shared хостингом, но зато ты получаешь полный контроль над системой.

**Когда использовать:**
• Для продакшн-сайтов с высокой нагрузкой
• Когда нужен полный контроль над сервером
• Для корпоративных проектов, где важна стабильность
• Когда планируешь кастомную настройку и оптимизацию

**Когда НЕ использовать:**
• Для простых личных блогов (овёркилл)
• Если нет опыта администрирования Linux
• Для быстрых прототипов и тестов

**Основные преимущества:**
• Стабильность и надёжность CentOS
• Полный контроль над конфигурацией
• Возможность тонкой настройки производительности
• Подходит для энтерпрайз-решений

**Альтернативы стоит рассмотреть:**
• Ubuntu Server — если нужны более свежие пакеты
• Docker-контейнеры — для микросервисной архитектуры
• Управляемые WordPress-хостинги — для быстрого старта

Главное — не забывай про бекапы, мониторинг и безопасность. WordPress на CentOS может работать годами без перебоев, если правильно настроен и обслуживается.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked