- Home »

Как установить 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 может работать годами без перебоев, если правильно настроен и обслуживается.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.