Настройка кэширования 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 при загрузке системы:

sudo apt update
sudo apt install redis-server php-apcu
sudo systemctl enable --now redis-server
В терминале Ubuntu отображается вывод команды `pt update` и установка `redis-server` и `php-apcu`.
Перед редактированием любого из конфигурационных файлов установите сервер 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 отображается отключенный TCP и путь к сокету Unix с режимом 770.
Используйте один и тот же путь к сокету в Redis и Nextcloud и ограничьте доступ для группы Redis.

port 0Отключает TCP-порт; Redis вместо этого прослушивает сокет. Режим разрешений 770позволяет владельцу и группе Redis получать доступ к сокету, запрещая доступ другим локальным пользователям. Добавьте учетную запись веб-сервера в группу Redis:

sudo usermod -aG redis www-data
sudo systemctl restart redis-server

Перезапустите службу PHP-FPM или Apache после изменения членства в группах, поскольку запущенные процессы сохраняют свой старый список групп. Используйте службу, которая фактически запускает PHP Nextcloud. В документации Redis рекомендуется ограничивать доступ только доверенным клиентам; локальный сокет позволяет избежать раскрытия порта кэша на интерфейсе, доступном из интернета. См. рекомендации по безопасности Redis .

Направьте Nextcloud на сокет.

Создайте резервную копию config/config.php, затем добавьте эти записи в существующий массив конфигурации PHP. Не заменяйте остальную часть файла. Используйте путь, где находится ваша установка Nextcloud.

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\KeyValueCache',
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
    'server' => [
        'host' => '/run/redis/redis-server.sock',
    ],
],
Редактор файла config.php Nextcloud отображает записи локального кэша APCu и KeyValueCache, использующие сокет Redis.
Оставьте 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
В терминале Ubuntu запущен redis-cli, подключенный к сокету Nextcloud Redis, и отображается PONG.
Ответ 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:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '/run/redis/redis-server.sock',
    'port' => 0,
],

Список пакетов Noble php-redis в Ubuntu подтверждает правильность сопоставления пакетов. Не настраивайте оба бэкенда одновременно. После сохранения соответствующей конфигурации повторите проверку пинга сокета и обзор административной панели Nextcloud.

Оставить комментарий

Настройте публичный URL-адрес Nextcloud, чтобы он мог быть доступен сам себе.

Устраните предупреждение Nextcloud об отсутствии исходящего адреса, установив канонический URL-адрес и проверив маршрутизацию DNS, HTTPS и обратного прокси-сервера непосредственно на самом сервере.

Настройка кэширования Nextcloud Redis в Ubuntu 24.04

Настройка кэширования Nextcloud Redis в Ubuntu 24.04

Настройка APCu и Redis через локальный Unix-сокет для кэширования и блокировки файлов в Nextcloud, с пошаговыми инструкциями для текущих и более старых версий Nextcloud.

Настройте автоматический запуск Cron в Nextcloud с помощью таймера Systemd.

Проверьте режим cron в Nextcloud, восстановите работу службы systemd и таймера, а также убедитесь, что фоновые задачи запускаются после запуска системы и каждые пять минут.

Удалите предупреждение Nextcloud о блокировке файлов с помощью Redis.

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

Что нужно, чтобы получить рейтинг безопасности Nextcloud A+

Что нужно, чтобы получить рейтинг безопасности Nextcloud A+

Устраните распространенные ошибки сканирования Nextcloud с помощью текущих обновлений, HTTPS и HSTS, точного доверия к обратному прокси-серверу и проверок на общедоступном сервере.

Внедрите серверное шифрование Nextcloud с измеримым эффектом.

Настройте Nextcloud SSE для необходимого вам хранилища, защитите ключи шифрования и измерьте влияние на передачу данных и загрузку процессора перед шифрованием существующих файлов.

Добавьте полнотекстовый поиск Elasticsearch в Nextcloud.

Подключите поиск файлов Nextcloud к Elasticsearch, проиндексируйте содержимое документов и выберите конфигурацию, соответствующую вашим потребностям в отношении сервера и безопасности.

Настройте надежную политику истечения срока действия для удаленных файлов в Nextcloud.

Настройте надежную политику истечения срока действия для удаленных файлов в Nextcloud.

Настройте Nextcloud так, чтобы он удалял удалённые файлы по истечении заданного периода хранения, надёжно планировал фоновые задачи и избегал команд, очищающих корзину каждого пользователя.

Удалите предупреждение Nextcloud об отсутствии индексов в базе данных.

Удалите предупреждение Nextcloud об отсутствии индексов в базе данных.

Запустите функцию восстановления OCC в Nextcloud в безопасных условиях, просмотрите изменения в базе данных и выясните, почему предупреждение может оставаться.

Увеличьте лимит загрузки веб-страниц в Nextcloud до более чем 2 ГБ.

Увеличьте лимит загрузки веб-страниц в Nextcloud до более чем 2 ГБ.

Разрешите загрузку файлов больших размеров через браузер Nextcloud, согласовав параметры PHP, Nginx или Apache, временного хранилища и тайм-аута, а также проверьте, какое ограничение блокирует файл.