WordPress
Самая популярная в мире CMS: около 40% всех сайтов интернета. Открытый движок на PHP и MySQL, на котором делают все - от блога и визитки до интернет-магазина на WooCommerce. Self-hosted вариант означает, что сайт, тема, плагины и данные живут на вашем сервере, а не в чужом конструкторе. Мы развернули WordPress в Docker на сервере Fatmetal, прошли установку и замерили реальный аппетит стека.
Вердикт
- нужен полноценный сайт, блог или магазин на своем сервере с полным контролем над темами, плагинами и данными - без комиссий и ограничений конструктора
- важен РФ-хостинг: сайт и база на своем сервере в России, оплата в рублях, данные не в чужом облаке
- нужна огромная экосистема готовых тем и плагинов под любой сценарий, от формы до WooCommerce
- сайт - простая статичная визитка без частых правок: статический генератор дешевле, быстрее и безопаснее
- нужен именно блог с платными подписками и рассылками - Ghost для этого современнее и легче
- не готовы следить за обновлениями ядра и плагинов: WordPress - самая атакуемая CMS именно из-за популярности, гигиена обязательна
Что это и какую задачу решает
Когда нужен сайт, выбор обычно между конструктором-SaaS (просто, но данные и сайт у платформы, ежемесячная плата и потолок возможностей) и своим движком на своем сервере. WordPress - второй путь, доведенный до предела удобства: открытая CMS, на которой работает около 40% всех сайтов интернета. Блог, корпоративный сайт, портал, интернет-магазин - все закрывается темами и плагинами, а сайт и база остаются вашими.
Важно не путать два WordPress. WordPress.com - это SaaS-хостинг с тарифами и ограничениями. WordPress.org (о нем и речь) - тот самый открытый движок, который вы ставите на свой сервер: полный доступ к коду, любые плагины и темы, свой домен, своя база данных. Это и есть self-hosted вариант.
Когда WordPress, а когда что-то другое
Конструкторы (Tilda, Wix) - проще для одностраничной визитки, но сайт и данные у платформы, есть ежемесячная плата и потолок кастомизации. WordPress дает полный контроль и любые плагины ценой того, что сервером управляете вы.
Ghost - если задача именно блог с платными подписками и рассылками, Ghost современнее и легче (у нас есть отдельный разбор). WordPress универсальнее: магазин, портал, произвольная структура.
Статические генераторы (Hugo, Astro) - быстрее и безопаснее для контент-сайтов без динамики, но требуют сборки и не дают админки для не-разработчика. WordPress выигрывает там, где контент правят обычные редакторы.
Сила WordPress - экосистема: десятки тысяч тем и плагинов. Она же источник рисков: чем больше сторонних плагинов, тем больше поверхность атаки и тем тяжелее сайт. Ставьте только нужное и от поддерживаемых авторов.
Стек и админка
WordPress - это PHP-приложение плюс база данных MySQL или MariaDB. В нашем деплое это два контейнера: сам WordPress (PHP-Apache) и MariaDB, наружу их отдает Caddy с TLS. Управление - через веб-консоль wp-admin: записи, страницы, медиа, темы, плагины, пользователи, настройки.
Первичную настройку можно пройти мастером install.php в браузере (язык, название сайта, учетная запись администратора) или без рук через WP-CLI - мы использовали WP-CLI, чтобы установка прошла одной командой.
Минимальная конфигурация
Пустой WordPress на старте удивительно легкий: связка WordPress и MariaDB в простое держит около 198 МиБ RAM, а главная отдается за десятки миллисекунд. Тяжелеет сайт не от ядра, а от темы, числа плагинов и трафика. Для старта и типового сайта хватает тарифа CPU2-RAM4-DISK50.
| Образы | wordpress ~1.09 ГБ + mariadb ~466 МБ |
| RAM WordPress в простое | ~98 МиБ |
| RAM MariaDB в простое | ~100 МиБ |
| RAM всей VM с ОС в простое | ~780 МБ |
| Отклик главной | ~0.077 с (HTTPS) |
| Диск | ~4.9 ГБ занято из 48 |
| Рекомендуемый тариф | CPU2-RAM4-DISK50 (для старта и типового сайта) |
С ростом трафика, тяжелой темой и десятком плагинов имеет смысл взять тариф пошире и добавить кеширование. Но само ядро - легкое.
В маркетплейсе Fatmetal
Не хотите ставить руками?
WordPress есть в маркетплейсе Fatmetal - можно не поднимать Docker, базу и TLS вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный сертификат и готовую CMS - остается пройти мастер настройки в браузере и наполнять сайт.
Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес
Развертывание на Fatmetal
Ставим двумя контейнерами через docker compose: WordPress и MariaDB. Наружу интерфейс отдает Caddy с автоматическим TLS на magic-DNS хосте.
Поднять WordPress и базу
docker-compose.yml с двумя сервисами. Пароли задаете своими. Порт WordPress держим на localhost - наружу отдаст Caddy.
services: db: image: mariadb:11 environment: MARIADB_DATABASE: wordpress MARIADB_USER: wordpress MARIADB_PASSWORD: СВОЙ_ПАРОЛЬ MARIADB_RANDOM_ROOT_PASSWORD: "yes" volumes: [db_data:/var/lib/mysql] wordpress: image: wordpress:php8.3-apache depends_on: [db] environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: СВОЙ_ПАРОЛЬ WORDPRESS_DB_NAME: wordpress ports: ["127.0.0.1:8080:80"] volumes: [wp_data:/var/www/html] volumes: { db_data: {}, wp_data: {} }Поставить Caddy для TLS
Caddyfile из двух строк. Caddy сам получит и продлит сертификат Let's Encrypt и передаст WordPress заголовок X-Forwarded-Proto.
<ip-с-дефисами>.fatmetal.net { reverse_proxy 127.0.0.1:8080 }Научить WordPress работать за HTTPS-прокси
WordPress за reverse-proxy не знает, что снаружи HTTPS, и уходит в редирект-петли. В wp-config добавьте разбор заголовка от прокси (или задайте через WORDPRESS_CONFIG_EXTRA в compose).
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; }Пройти установку
Откройте адрес по HTTPS и пройдите мастер install.php (язык, название, администратор) либо запустите установку одной командой через WP-CLI. После этого открывается сайт и консоль wp-admin.
На нашем стенде WordPress поднялся на magic-DNS хосте с валидным сертификатом Let's Encrypt, установка прошла через WP-CLI, главная отдается за ~77 мс, консоль wp-admin работает.
Что измерили после запуска
Все цифры сняты с живого стенда CPU2-RAM4-DISK50 с чистым сайтом на дефолтной теме.
- Стек в простое - около 198 МиБ RAM (WordPress ~98 МиБ + MariaDB ~100 МиБ). Пустой WordPress легкий.
- Вся VM в простое - около 780 МБ RAM с учетом ОС. На 4 ГБ тарифе большой запас.
- Образы - WordPress около 1.09 ГБ, MariaDB около 466 МБ.
- Отклик главной - около 0.077 с по HTTPS на пустом сайте.
- Диск - около 4.9 ГБ занято из 48.
- TLS - Caddy выписал валидный сертификат на magic-DNS хосте, сайт открывается по HTTPS.
Где может сломаться
Редирект-петли за reverse-proxy
За TLS-прокси WordPress не понимает, что снаружи HTTPS, и уходит в бесконечный редирект или отдает mixed content. Лечится разбором X-Forwarded-Proto в wp-config (см. шаг 3 развертывания). Caddy шлет этот заголовок сам.
Плагины - главный источник дыр и тормозов
WordPress - самая атакуемая CMS именно из-за популярности, и почти все взломы идут через устаревшие плагины и темы. Ставьте только нужное, от поддерживаемых авторов, и держите все обновленным. Лишние плагины еще и замедляют сайт.
Обновления нельзя откладывать
Ядро, темы и плагины обновляются часто и не просто так - многие релизы закрывают уязвимости. Настройте регулярные обновления и бэкапы базы и каталога wp-content до них.
Безопасность и обновления
Весь сайт, база и загрузки - на вашем сервере. Бэкапьте базу данных и каталог wp-content (темы, плагины, медиа) - это все содержимое сайта. Вход в wp-admin закрывайте сильным паролем и по возможности двухфакторной аутентификацией (плагин), снаружи все идет по HTTPS. Не оставляйте учетную запись с логином admin по умолчанию на боевом сайте.
Обновление ядра, тем и плагинов - штатная и обязательная часть эксплуатации: большинство релизов безопасности закрывают реальные уязвимости. Обновляйте регулярно, но с бэкапом до обновления. В Docker-варианте ядро обновляется сменой тега образа, содержимое переживает пересоздание в томах.
Когда это НЕ ваш выбор
Если сайт - простая статичная визитка без частых правок, статический генератор (Hugo, Astro) даст быстрее, дешевле и безопаснее - нет базы и админки, которые надо защищать. Если нужен именно блог с платными подписками и рассылками, посмотрите на Ghost - он для этого современнее и легче. И если вы не готовы следить за обновлениями плагинов и ядра, WordPress лучше не ставить на боевой сайт - заброшенный WordPress взламывают быстро. Во всех остальных сценариях - от корпоративного сайта до магазина - это рабочая лошадка с гигантской экосистемой.
Частые вопросы
Чем WordPress.org отличается от WordPress.com?
WordPress.org - открытый движок, который вы ставите на свой сервер: полный контроль, любые плагины, свой домен и база. WordPress.com - SaaS-хостинг этого движка с тарифами и ограничениями. Self-hosted - это .org.
Насколько это тяжело для сервера?
Пустой WordPress легкий: связка с MariaDB в простое держит около 198 МиБ RAM, главная отдается за десятки миллисекунд. Тяжелеет сайт от темы, числа плагинов и трафика, а не от ядра. Для старта хватает CPU2-RAM4-DISK50.
Можно ли сделать интернет-магазин?
Да, через плагин WooCommerce - это стандартный путь для магазина на WordPress. Под нагрузку магазина берите тариф пошире и добавьте кеширование.
Почему все говорят, что WordPress небезопасен?
Само ядро развивается аккуратно, а взломы идут в основном через устаревшие сторонние плагины и темы. Держите все обновленным, ставьте только нужное от поддерживаемых авторов и делайте бэкапы - тогда рисков немного.
Данные сайта правда остаются у меня?
Да. Файлы, тема, плагины и база лежат на вашем сервере в томах. Никакой платформы-посредника и комиссий - вы владеете сайтом целиком.
Итог
WordPress - самая популярная CMS в мире: сайт, блог или магазин на своем сервере с полным контролем над темами, плагинами и данными. Пустой движок удивительно легкий (стек с MariaDB ~198 МиБ RAM, отклик ~77 мс), тяжелеет от темы, числа плагинов и трафика. Главное в эксплуатации - гигиена обновлений и плагинов; при ней это рабочая лошадка под любой сайт, от визитки до магазина на WooCommerce.
Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe
Не хотите устанавливать вручную?
Запустите WordPress на этой конфигурации автоматически - от 450 ₽/мес.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.