Поиск по сайту:

Как настроить кэширование Redis для ускорения WordPress в Ubuntu 14.04


Введение

Redis — это хранилище значений ключей с открытым исходным кодом, которое может работать как в памяти, так и в качестве кэша. Redis — это сервер структуры данных, который можно использовать как сервер базы данных сам по себе или в паре с реляционной базой данных, такой как MySQL, для ускорения работы, как мы делаем в этом руководстве.

В этом руководстве Redis будет настроен как кеш для WordPress, чтобы облегчить избыточные и трудоемкие запросы к базе данных, используемые для отображения страницы WordPress. В результате сайт WordPress работает намного быстрее, использует меньше ресурсов базы данных и обеспечивает настраиваемый постоянный кеш. Это руководство относится к Ubuntu 14.04.

Хотя все сайты разные, ниже приведен пример эталонного теста домашней страницы установки Wordpress по умолчанию с Redis и без него, как настроено из этого руководства. Для тестирования использовались инструменты разработчика Chrome с отключенным кешированием браузера.

Домашняя страница WordPress по умолчанию без Redis:

время загрузки страницы 804 мс

Домашняя страница WordPress по умолчанию с Redis:

449 мс время загрузки страницы

Примечание. Эта реализация кэширования Redis для WordPress основана на хорошо прокомментированном, но стороннем скрипте. Скрипт размещен на сервере активов DigitalOcean, но был разработан сторонней организацией. Если вы хотите сделать свою собственную реализацию кэширования Redis для WordPress, вам нужно будет проделать дополнительную работу на основе представленных здесь концепций.

Redis против Memcached

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

Как работает кеширование?

При первой загрузке страницы WordPress на сервере выполняется запрос к базе данных. Redis запоминает или кэширует этот запрос. Таким образом, когда другой пользователь загружает страницу Wordpress, результаты предоставляются из Redis и из памяти без необходимости запрашивать базу данных.

Реализация Redis, используемая в этом руководстве, работает как постоянный кеш объектов для WordPress (без срока действия). Кэш объектов работает путем кэширования SQL-запросов в памяти, которые необходимы для загрузки страницы WordPress.

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

Если значение обновляется в базе данных (например, в WordPress создается новая запись или страница), значение Redis для этого запроса становится недействительным, чтобы предотвратить представление неверных кэшированных данных.

Если у вас возникли проблемы с кэшированием, кэш Redis можно очистить с помощью команды flushall из командной строки Redis:

redis-cli

Как только вы увидите приглашение, введите:

flushall

Дополнительная справка: Документация по кешу объектов WordPress

Предпосылки

Прежде чем приступить к этому руководству, вам необходимо настроить пользователя sudo и установить WordPress.

  • Ubuntu 14.04 Droplet (рекомендуется 1 ГБ или больше)
  • Добавить пользователя sudo
  • Установите WordPress. Это руководство было проверено с помощью этих инструкций, хотя существует множество способов установки WordPress.

Шаг 1 — Установите Redis

Чтобы использовать Redis с WordPress, необходимо установить два пакета: redis-server и php5-redis. Пакет redis-server предоставляет сам Redis, а пакет php5-redis предоставляет расширение PHP для приложений PHP, таких как WordPress, для связи с Redis.

Установите программное обеспечение:

sudo apt-get install redis-server php5-redis

Шаг 2 — Настройте Redis как кеш

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

Отредактируйте файл /etc/redis/redis.conf и добавьте следующие строки внизу:

sudo nano /etc/redis/redis.conf

Добавьте эти строки в конец файла:

maxmemory 256mb
maxmemory-policy allkeys-lru

После внесения изменений сохраните и закройте файл.

Шаг 3 — Получите бэкенд-скрипт Redis Cache

Этот PHP-скрипт для WordPress изначально был разработан Эриком Манном. Это серверная часть кэша объектов Redis для WordPress.

Загрузите скрипт object-cache.php. Эта загрузка с сервера активов DigitalOcean, но это сторонний скрипт. Вы должны прочитать комментарии к сценарию, чтобы увидеть, как это работает.

Загрузите PHP-скрипт:

wget https://assets.linux-console.net/articles/wordpress_redis/object-cache.php

Переместите файл в каталог /wp-content вашей установки WordPress:

sudo mv object-cache.php /var/www/html/wp-content/

В зависимости от вашей установки WordPress ваше местоположение может отличаться.

Шаг 4 — Включите настройки кеша в wp-config.php

Затем отредактируйте файл wp-config.php, чтобы добавить соль ключа кеша с именем вашего сайта (или любой другой строкой, которую вы хотите).

nano /var/www/html/wp-config.php

Добавьте эту строку в конец раздела * Authentication Unique Keys and Salts.:

define('WP_CACHE_KEY_SALT', 'example.com');

Вы можете использовать свое доменное имя или другую строку в качестве соли.

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

Кроме того, добавьте следующую строку после строки WP_CACHE_KEY_SALT, чтобы создать постоянный кеш с помощью плагина кеша объектов Redis:

define('WP_CACHE', true);

В целом ваш файл должен выглядеть так:

 * Authentication Unique Keys and Salts.
 
. . .
 
define('NONCE_SALT',       'put your unique phrase here');

define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

Сохраните и закройте файл.

Шаг 5 — Перезапустите Redis и Apache

Наконец, перезапустите redis-service и apache2.

Перезапустите Редис:

sudo service redis-server restart

Перезапустите Апач:

sudo service apache2 restart

Перезапустите php5-fpm, если вы его используете; это не является частью базовой установки DigitalOcean:

sudo service php5-fpm restart 

Вот и все! Ваш сайт WordPress теперь использует кэширование Redis. Если вы проверите скорость загрузки вашей страницы и использование ресурсов, вы заметите улучшения.

Мониторинг Redis с помощью redis-cli

Для мониторинга Redis используйте команду redis-cli следующим образом:

redis-cli monitor

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

Ниже приведен пример вывода сайта WordPress, настроенного в соответствии с этим руководством с использованием Redis:

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

Нажмите CTRL-C, чтобы остановить вывод.

Это полезно для просмотра того, какие именно запросы обрабатывает Redis.

Заключение

Следуя этому руководству, WordPress теперь будет настроен на использование Redis в качестве кеша в Ubuntu 14.04.

Ниже приведены некоторые дополнительные руководства по безопасности и администрированию WordPress, которые могут представлять интерес:

Как настроить безопасные обновления и установки в WordPress на Ubuntu

Как использовать WPScan для проверки уязвимых плагинов и тем в Wordpress

Как использовать WP-CLI для управления сайтом WordPress из командной строки