Главная
» Как сделать
»
Настройка кэширования Nextcloud Redis в Ubuntu 24.04
Настройка кэширования Nextcloud Redis в Ubuntu 24.04
В Nextcloud 34.0.2 был добавлен встроенный KeyValueCacheбэкенд, совместимый с Redis, поэтому текущая версия Nextcloud может использовать Redis без установки расширения Redis для PHP. На одном сервере Ubuntu 24.04 используйте APCu для быстрого локального кэширования и Redis для распределенного кэширования и транзакционной блокировки файлов, подключенных через сокет Unix. Это позволяет отказаться от сетевого подключения Redis и предоставляет Nextcloud общий кэш, работающий со всеми запросами PHP.
Сначала выберите подходящий бэкэнд Redis.
В текущем руководстве администратора Nextcloud 35 описаны два пути к Redis. Для Nextcloud 34.0.2 и более поздних версий рекомендуется KeyValueCacheиспользовать Predis, входящий в состав Nextcloud; вы устанавливаете сервер Redis и настраиваете его memcache.kvstore, но не требуете php-redis. Более старые версии Nextcloud используют расширение PhpRedis и другой config.phpблок. Проверьте свою версию с помощью команды `npm sudo -u www-data php /var/www/nextcloud/occ statusinstall`, заменив путь, если ваша установка находится в другом месте.
В этом руководстве предполагается, что Nextcloud и Redis работают на одном хосте Ubuntu, веб-сервер работает как www-data, и вы управляете PHP и Redis напрямую. Если вы установили Nextcloud через Snap, AIO, Docker или другое устройство, следуйте соглашениям службы и файловой системы соответствующего пакета, а не применяйте команды на уровне хоста вслепую. APCu быстрее для локального кэширования, чем Redis, в то время как Redis подходит для распределенного кэширования и блокировки файлов. См. документацию Nextcloud по кэшированию в памяти .
Установите Redis и APCu.
Обновите индекс пакетов Ubuntu, установите сервер Redis и модуль APCu для PHP, а также включите Redis при загрузке системы:
Перед редактированием любого из конфигурационных файлов установите сервер Redis и пакеты APCu.
В Ubuntu 24.04 версия PHP по умолчанию — 8.3, а php-apcu— это имя пакета дистрибутива. Redis — это отдельная служба; APCu загружается PHP. После установки APCu перезапустите обработчик PHP, чтобы веб-процесс PHP загрузил модуль. Если вы используете PHP-FPM, это обычно php8.3-fpm; если Apache использует mod_php, перезапустите apache2. Перед перезапуском проверьте имена активных служб.
Сделайте Redis локальным для сервера.
Для этой однохостовой конфигурации используйте сокет Unix и отключите TCP-слушатель Redis. Отредактируйте файл /etc/redis/redis.conf. Обновите существующие активные директивы, вместо того чтобы оставлять несколько конфликтующих копий, затем установите:
port 0
unixsocket /run/redis/redis-server.sock
unixsocketperm 770
Используйте один и тот же путь к сокету в Redis и Nextcloud и ограничьте доступ для группы Redis.
port 0Отключает TCP-порт; Redis вместо этого прослушивает сокет. Режим разрешений 770позволяет владельцу и группе Redis получать доступ к сокету, запрещая доступ другим локальным пользователям. Добавьте учетную запись веб-сервера в группу Redis:
Перезапустите службу PHP-FPM или Apache после изменения членства в группах, поскольку запущенные процессы сохраняют свой старый список групп. Используйте службу, которая фактически запускает PHP Nextcloud. В документации Redis рекомендуется ограничивать доступ только доверенным клиентам; локальный сокет позволяет избежать раскрытия порта кэша на интерфейсе, доступном из интернета. См. рекомендации по безопасности Redis .
Направьте Nextcloud на сокет.
Создайте резервную копию config/config.php, затем добавьте эти записи в существующий массив конфигурации PHP. Не заменяйте остальную часть файла. Используйте путь, где находится ваша установка Nextcloud.
Оставьте APCu локальным и укажите в файле config.php как бэкенд кэширования Redis, так и хост сокета.
Косая черта в начале пути к хосту указывает KeyValueCache в Nextcloud использовать сокет Unix, поэтому настройка TCP-порта или протокола не требуется. Redis предоставляет оба варианта memcache.distributed; memcache.lockingпоследний переносит транзакционные блокировки файлов из базы данных. Используйте memcache.localAPCu для доступа к локальному кэшу с меньшей задержкой. Точные параметры и значения для сокета приведены в инструкциях Nextcloud по KeyValueCache и сокетам Unix, а также в руководстве по транзакционной блокировке файлов .
Проверьте подключение и устраните неполадки с правами доступа.
Сначала убедитесь, что служба Redis активна и что сокет отвечает:
sudo systemctl status redis-server
redis-cli -s /run/redis/redis-server.sock ping
Ответ PONG подтверждает, что Redis принимает локальное соединение через настроенный сокет.
Ожидаемый ответ на вторую команду — PONG. Затем войдите в Nextcloud и откройте обзор настроек администрирования. Убедитесь, что предупреждение о локальном кэше исчезло, и проверьте журнал Nextcloud, если предупреждение о Redis или кэше осталось. Вы также можете запустить команду, sudo -u www-data php /var/www/nextcloud/occ statusчтобы убедиться, что экземпляр по-прежнему загружается; эта команда проверяет доступность Nextcloud, а не сам кэш.
Если Redis сообщает об ошибке «Доступ запрещен» или Nextcloud не может подключиться, убедитесь, что сокет существует, www-dataпринадлежит группе redisи что группа и режим доступа сокета разрешают доступ. Перезапустите Redis и обработчик PHP после изменения членства в группе. Если Redis не может создать сокет, проверьте наличие опечатки в настроенном пути и выполните проверку sudo journalctl -u redis-server -n 50. Не решайте проблему с правами доступа к сокету, открывая Redis для публичной сети.
Более старая версия Nextcloud: используйте PhpRedis вместо неё.
Если ваша версия Nextcloud старше 34.0.2, установите расширение PHP Redis, соответствующее версии PHP, используемой в Nextcloud. В стандартной установке Ubuntu 24.04 с PHP 8.3 этот пакет называется php-redis; Ubuntu указывает его как расширение PHP 8.3 Redis. Перезапустите активный обработчик PHP после установки. В config.phpиспользуйте устаревшие классы Redis и блок подключения вместо указанных выше записей KeyValueCache:
Список пакетов Noble php-redis в Ubuntu подтверждает правильность сопоставления пакетов. Не настраивайте оба бэкенда одновременно. После сохранения соответствующей конфигурации повторите проверку пинга сокета и обзор административной панели Nextcloud.