Удалите предупреждение Nextcloud о блокировке файлов с помощью Redis.
Включите надежную блокировку файлов в Nextcloud, выберите подходящий бэкенд Redis или Valkey и убедитесь, что предупреждение исчезает без риска одновременного изменения файлов.
Чтобы устранить предупреждение Nextcloud о блокировке файлов при транзакциях, сначала убедитесь, что блокировка включена, а затем настройте постоянный бэкенд, совместимый с Redis, например, Redis или Valkey. На небольших экземплярах Nextcloud может по умолчанию использовать свой бэкенд блокировки базы данных; для производственного сервера или общей рабочей нагрузки обычно выбирают блокировку на основе Redis, поскольку это уменьшает трафик блокировок к базе данных. Не назначайте блокировки файлов Memcached: Nextcloud предупреждает, что кэшированные значения могут неожиданно исчезнуть.
Транзакционная блокировка файлов защищает операции с файлами от конфликтующих операций записи и может снимать блокировки при прерывании загрузки или другой транзакции. Она помогает предотвратить повреждение данных во время нормальной работы, включая работу с общими файлами и внешними хранилищами. Она не препятствует одновременному редактированию одного и того же документа двумя пользователями и не предоставляет индикаторы присутствия; она контролирует одновременное сохранение. См. документацию по транзакционной блокировке файлов Nextcloud 35 .
memcache.locking.Для небольшого домашнего сервера блокировки базы данных может быть достаточно, если нет предупреждений о блокировке и нет перегрузки базы данных. Для загруженных экземпляров, нескольких серверов приложений или когда требуется обработка блокировок файлов вне базы данных, следует выбрать Redis или Valkey. В текущих рекомендациях Nextcloud 35 по кэшированию в памяти рекомендуется использовать APCu для локального кэша и Redis для блокировок в распространенных односерверных развертываниях. Все кластерные веб-узлы должны использовать одну и ту же конечную точку или кластер Redis или Valkey.
Найдите активный конфигурационный файл Nextcloud, обычно config/config.phpон находится в каталоге установки Nextcloud. Перед внесением изменений сделайте его резервную копию. Найдите файлы filelocking.enabledи memcache.locking. В конфигурационном файле по умолчанию включена блокировка; если вы обнаружите явное значение false, измените его на true или удалите это переопределение.
'filelocking.enabled' => true,
Не добавляйте вторую копию существующего ключа. Массивы конфигурации PHP должны содержать одно эффективное значение для каждой настройки. Если вы используете контейнер или панель управляемого хостинга, вносите изменения через поддерживаемый механизм конфигурации, чтобы они сохранялись после обновлений или повторного развертывания. В справочнике предупреждений администратора Nextcloud 35 указано предупреждение о блокировке и приведены ссылки на требования к бэкэнду.
В Debian или Ubuntu имена пакетов обычно выглядят как redis-serverи php-redis; используйте пакеты вашего дистрибутива и сопоставьте модуль PHP с версией PHP, используемой веб-сервером. Если вы используете классический бэкенд Redis, установите и запустите службу Redis и убедитесь, что расширение PHP Redis включено для веб-SAPI. Модуль PHP, доступный только через командную строку, не доказывает, что PHP-FPM или Apache могут его загрузить.
Добавьте в существующий config.phpмассив информацию о блокирующем бэкенде и данные для подключения. В этом примере предполагается, что Redis работает на той же машине, прослушивает порт 6379 на localhost и доступен для процесса Nextcloud PHP:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Укажите данные аутентификации, если ваш сервер Redis этого требует. Избегайте доступа к Redis из общедоступного интернета; ограничьте его использование хостом или частной сетью и настройте правила аутентификации и брандмауэра. Для сокета Unix используйте путь к сокету в качестве хоста Redis и порта 0 и убедитесь, что пользователь веб-сервера имеет доступ к этому сокету. Не копируйте настройки localhost в многосерверную конфигурацию, если Redis не является действительно локальным и не используется совместно; все узлы приложения Nextcloud должны обращаться к одному и тому же бэкэнду.
В Nextcloud 34.0.2 и более поздних версиях KeyValueCache может подключаться к Redis или Valkey без отдельно установленного расширения PHP. Настройте бэкэнд и хранилище ключ-значение следующим образом, заменив хост и любые учетные данные значениями вашей среды:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
Не следует настраивать Redis и KeyValueCache как конкурирующие поставщики блокировки. Для настройки учетных данных, TLS, сокетов, Sentinel или топологии кластера следуйте документации Nextcloud, а не адаптируйте пример для одного сервера методом проб и ошибок.
Перезапустите совместимую с Redis службу, если вы изменили ее конфигурацию, а затем перезапустите веб-сервер или процесс PHP-FPM, если вы установили или включили расширение PHP. Проверьте состояние службы, используя имя службы для вашего дистрибутива; например, systemctl status redis-serverво многих системах Debian или Ubuntu. Убедитесь, что служба активна и что процесс PHP может подключиться. При развертывании в контейнерах следует использовать имя службы Redis в сети контейнера, а не localhost, если только обе службы не используют одно и то же сетевое пространство имен.
Войдите в Nextcloud как администратор и обновите обзор администрирования. Предупреждение о блокировке транзакционных файлов должно исчезнуть, когда настроенный бэкэнд станет доступен и параметр будет загружен. Загрузите, скачайте и синхронизируйте тестовый файл, затем просмотрите журналы Nextcloud и PHP, если появится ошибка подключения к Redis или ошибка доступа. Оставшееся предупреждение обычно указывает на опечатку, дублирующийся ключ конфигурации, неправильное расширение PHP/SAPI, заблокированное сетевое соединение, некорректные права доступа к сокету или недоступный бэкэнд. Устраните конкретную причину, а не отключайте блокировку.
Для получения информации о параметрах, специфичных для конкретного развертывания, перед изменением топологии ознакомьтесь с официальными справочными материалами по версиям: блокировка транзакционных файлов , кэширование в памяти и конфигурация Redis/Valkey , а также параметры конфигурации .
Включите надежную блокировку файлов в Nextcloud, выберите подходящий бэкенд Redis или Valkey и убедитесь, что предупреждение исчезает без риска одновременного изменения файлов.
Устраните распространенные ошибки сканирования Nextcloud с помощью текущих обновлений, HTTPS и HSTS, точного доверия к обратному прокси-серверу и проверок на общедоступном сервере.
Настройте Nextcloud SSE для необходимого вам хранилища, защитите ключи шифрования и измерьте влияние на передачу данных и загрузку процессора перед шифрованием существующих файлов.
Подключите поиск файлов Nextcloud к Elasticsearch, проиндексируйте содержимое документов и выберите конфигурацию, соответствующую вашим потребностям в отношении сервера и безопасности.
Настройте Nextcloud так, чтобы он удалял удалённые файлы по истечении заданного периода хранения, надёжно планировал фоновые задачи и избегал команд, очищающих корзину каждого пользователя.
Запустите функцию восстановления OCC в Nextcloud в безопасных условиях, просмотрите изменения в базе данных и выясните, почему предупреждение может оставаться.
Разрешите загрузку файлов больших размеров через браузер Nextcloud, согласовав параметры PHP, Nginx или Apache, временного хранилища и тайм-аута, а также проверьте, какое ограничение блокирует файл.
Установите ограничение на объем памяти, фактически используемый Nextcloud для PHP, перезапустите нужную службу и подтвердите значение 512 МБ в разделе «Обзор администратора».
Подключите совместимый сегмент объектного хранилища в Nextcloud, используя его бэкэнд S3, с указанием правильной конечной точки, учетных данных, области доступа и этапов проверки.
Безопасное перемещение каталога данных Linux Nextcloud на внешний диск с использованием постоянного монтирования UUID, режима обслуживания, проверенной копии и символической ссылки на исходный путь.