По умолчанию кеш Drupal находится в основной базе данных, что может несколько замедлять ее использование.
Для повышения производительности сайта можно кеш вынести в специализированные сервера и не нагружать PostgreSQL обращениями за кешем.
В Drupal множество баз для кеширования, в самом простом случае можно использовать APCu, но при перезагрузке сервера такой кеш будет сброшен.
Для решения этой проблемы можно использовать кеширование серверами, умеющими сохранять кеш на диск, а отдавать из ОЗУ. Одним из вариантов такого сервера является Redis.
Установка Redis[править]
Зайти на сервер по SSH
# dnf install redis # pecl install redis
Создать файл /etc/php.d/40-redis.ini со следующим содержимым:
extension=redis.so
Перезагрузить PHP-FPM
# systemctl restart php-fpm
Запустить Redis сейчас, включить автозагрузку при старте ОС.
# systemctl start redis # systemctl enable redis
Настройка Redis[править]
Если сервер Redis используется только ELiS, в файле /etc/redis.conf можно включить следующие настройки.
Максимальный размер кеша (поставьте исходя из размера вашей базы данных):
maxmemory 4g
Автоматическое удаление редко используемого кеша для всех данных при превышении объема хранения:
maxmemory-policy allkeys-lru
Для применения выполните:
# systemctl restart redis
Настройка Drupal[править]
Зайдите на admin/reports/status/php и поиском по странице убедитесь, что можете найти расширение redis.
Перед включением кеширования полностью очистите старый кеш на странице admin/config/development/performance нажав "очистка кеша". В дальнейшем перед отключением Redis и после отключения кеш также надо очистить во избежания ситуации, что из-за смены кеширующего сервера сайт выдаст протухший кеш с другого сервера кеширования.
Установите и включите модуль Redis.
# cd /var/www/vh/library # su elis $ drush en redis $ exit
Отредактируйте файл конфигурации
# chmod 0640 /var/www/vh/library/sites/default/settings.php # vi /var/www/vh/library/sites/default/settings.php
Добавьте в конце файла строки:
#redis cache $conf['redis_client_interface'] = 'PhpRedis'; // Can be "Predis". $conf['redis_client_host'] = '127.0.0.1'; // Your Redis instance hostname. $conf['lock_inc'] = 'sites/all/modules/redis/redis.lock.inc'; $conf['path_inc'] = 'sites/all/modules/redis/redis.path.inc'; $conf['cache_backends'][] = 'sites/all/modules/redis/redis.autoload.inc'; $conf['cache_default_class'] = 'Redis_Cache'; $conf['redis_perm_ttl'] = "3 months";
Проверьте работает ли сайт, если не работает, то закомментируйте добавленные в settings.php строки.
Отключение Redis[править]
Закомментируйте добавленные в /var/www/vh/library/sites/default/settings.php строки про кеширование Redis
Отключите модуль Redis в Drupal (командой drush dis redis или со страницы admin/modules).
Остановите сервер Redis
# systemctl stop redis # systemctl disable redis