Redis на VPS с HestiaCP нужен WordPress как постоянный object cache: результаты повторяющихся запросов к базе, опции и транзиенты лежат в оперативке, и PHP не ходит за ними в MySQL на каждом открытии страницы. Сама панель Redis не ставит и не настраивает, всё делается из консоли под root. Ниже порядок, по которому я ставил Redis на свой сервер с Hestia, с поправками на то, как всё устроено сейчас.
По README HestiaCP панель поддерживает Debian 13, 12 и 11 и Ubuntu 26.04, 24.04 и 22.04 LTS. Команды ниже на всех этих системах одинаковые.
Шаг 1. Ставим redis-server
apt update apt install redis-server
Проверяем, на каком адресе Redis слушает порт 6379. Утилиты netstat на свежих системах часто нет, поэтому удобнее ss:
ss -lntp | grep 6379
В стандартном redis.conf уже стоят bind 127.0.0.1 -::1 и protected-mode yes. Открывать 6379 наружу ради WordPress на этом же сервере не нужно, а если Redis нужен с другой машины, то только с паролем или ACL и правилом в файрволе.
Шаг 2. maxmemory и allkeys-lru в redis.conf
Как пишет документация Redis, на 64-битных системах maxmemory по умолчанию равен нулю, то есть памяти Redis может взять сколько угодно. Политика вытеснения по умолчанию noeviction: когда память кончится, Redis начнёт отвечать ошибкой на запись новых ключей. Для кэша нужно наоборот: задать потолок и выкидывать то, что давно не читали. Это политика allkeys-lru.
nano /etc/redis/redis.conf
maxmemory 256mb maxmemory-policy allkeys-lru
После правки перезапускаем Redis и смотрим, что настройки применились. Подробнее про лимит памяти и политики я писал в заметке про maxmemory в Redis.
systemctl restart redis-server redis-cli config get maxmemory redis-cli config get maxmemory-policy
Шаг 3. Расширение PHP под каждую версию PHP
В документации HestiaCP модули PHP ставят обычным apt, в примере как раз php-redis. Тонкость в том, что пакет php-redis ставит расширение только для версии PHP, которая в системе стоит по умолчанию. А Hestia держит несколько версий PHP сразу, и у каждого домена своя.
Если сайт работает на другой версии, ставим пакет именно для неё и перезапускаем её PHP-FPM. Версию PHP домена видно в панели, в настройках веб-домена: шаблон бэкенда PHP-FPM вида PHP-8_3. Проверять модуль лучше тем же бинарником, а не просто php -m: так покажется только CLI по умолчанию.
apt install php8.3-redis systemctl restart php8.3-fpm php8.3 -m | grep -i redis
Шаг 4. Проверяем Redis
redis-cli ping
Шаг 5. Плагин Redis Object Cache
Со стороны сайта проще всего взять Redis Object Cache от Till Krüss. Сейчас это версия 3.0.0, больше 500 000 активных установок, проверена с WordPress 7.1.3, нужен PHP 7.2 или новее. Плагин работает через PhpRedis, а если расширения нет, через встроенную библиотеку Predis. Но раз мы уже поставили php-redis, будет использоваться оно.
По инструкции плагина без настроек он подключается к 127.0.0.1:6379 и базе 0. Если на сервере несколько сайтов, каждому лучше дать свой префикс и свою базу, чтобы ключи не перемешались. Константы пишутся в wp-config.php выше строки /* That's all, stop editing! */:
define( 'WP_REDIS_HOST', '127.0.0.1' ); define( 'WP_REDIS_PORT', 6379 ); define( 'WP_REDIS_PREFIX', 'example.site:' ); define( 'WP_REDIS_DATABASE', 0 ); // 0-15, у каждого сайта своя define( 'WP_REDIS_TIMEOUT', 1 ); define( 'WP_REDIS_READ_TIMEOUT', 1 );
WP_CACHE для object cache не нужен. Эта константа включает страничный кэш через advanced-cache.php, её ставят плагины вроде WP Fastest Cache. Object cache WordPress подхватывает через файл object-cache.php, который плагин кладёт в wp-content при включении.
Дальше активируем плагин, открываем Настройки → Redis и жмём Enable Object Cache. Статус должен стать Connected. Если там Not connected, проверяем по порядку: запущен ли redis-server, есть ли php-redis именно у той версии PHP, на которой работает сайт, и нет ли опечаток в wp-config.php. С WP-CLI то же самое делается так:
wp plugin install redis-cache --activate wp redis enable wp redis status
Короткий чеклист
redis-serverустановлен и слушает 127.0.0.1:6379- в
redis.confзаданы maxmemory и allkeys-lru, Redis перезапущен phpX.Y -m | grep redisпоказывает модуль для версии PHP сайтаredis-cli pingотвечает PONG- в
wp-config.phpсвои WP_REDIS_PREFIX и WP_REDIS_DATABASE, плагин в статусе Connected
Если не хочется разбираться с сервером самому, настройку VPS под ключ (Linux, Nginx, PHP, кэш, бэкапы) делаю от 10 000 ₽, это есть в моём прайс-листе. Зачем вообще WordPress нужен object cache, я разбирал в заметке про Redis и WordPress.
В итоге Redis на HestiaCP ставится за несколько команд: redis-server из репозитория, лимит памяти с allkeys-lru, расширение php-redis под каждую версию PHP, на которой живут сайты, и плагин Redis Object Cache со своим префиксом и базой для каждого сайта. Главная ловушка тут одна: php-redis ставится только для PHP по умолчанию.