使用 Redis 清除 Nextcloud 的檔案鎖定警告
啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。
若要消除 Nextcloud 的事務性檔案鎖定警告,首先要確保已啟用鎖定,然後設定持久化的 Redis 相容後端,例如 Redis 或 Valkey。在小型實例上,Nextcloud 預設可以使用其資料庫鎖定後端;對於生產伺服器或共享工作負載,通常選擇 Redis 後端鎖定,因為它能減少對資料庫的鎖定流量。請勿將檔案鎖定指派給 Memcached:Nextcloud 會警告快取值可能會意外遺失。
事務性檔案鎖定可防止檔案操作因寫入衝突而發生,並在上傳或其他交易中斷時釋放鎖定。它有助於防止正常操作期間檔案損壞,包括涉及共用檔案和外部儲存的操作。它不會阻止兩人同時編輯同一文件或提供線上狀態指示;它控制的是同時保存操作。請參閱Nextcloud 35 事務性文件鎖定文件。
memcache.locking.對於小型家用伺服器,如果沒有鎖定警告且資料庫壓力不大,資料庫鎖定可能就足夠了。對於繁忙的實例、多個應用程式伺服器,或當您需要在資料庫之外處理檔案鎖定時,請選擇 Redis 或 Valkey。目前的Nextcloud 35 記憶體快取指南建議在常見的單一伺服器部署中使用 APCu 作為本機緩存,並使用 Redis 進行鎖定。叢集中的 Web 節點必須全部使用相同的 Redis 或 Valkey 端點或叢集。
找到目前 Nextcloud 的設定文件,它通常config/config.php位於 Nextcloud 安裝目錄下。修改前請先備份。搜尋 `<configuration_reference>`filelocking.enabled和 `<configuration_reference> memcache.locking`。配置參考預設啟用鎖定;如果找到明確的 false 值,請將其變更為 true 或刪除該覆蓋。
'filelocking.enabled' => true,
請勿新增現有密鑰的第二個副本。 PHP 配置數組中每個設定應僅包含一個有效值。如果您使用容器或託管主機面板,請透過其支援的配置機制進行更改,以確保這些變更在升級或重新部署後仍然有效。 Nextcloud 35 管理員警告參考文件中列出了鎖定警告,並提供了指向後端要求的連結。
在 Debian 或 Ubuntu 系統中,軟體包名稱通常類似於 `<package-name>`redis-server和 `<package-name>` php-redis;請使用發行版提供的軟體包,並確保 PHP 模組與 Web 伺服器使用的 PHP 版本相符。如果使用經典的 Redis 後端,請安裝並啟動 Redis 服務,並確認已為 Web SAPI 啟用 PHP Redis 擴充功能。僅支援 CLI 的 PHP 模組並不能證明 PHP-FPM 或 Apache 可以載入它。
將鎖定後端和連線詳細資訊新增至現有config.php陣列。此範例假設 Redis 運行在同一台機器上,監聽本機主機連接埠 6379,並且 Nextcloud PHP 進程可以存取它:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
如果您的 Redis 伺服器需要,請設定身份驗證詳細資訊。避免將 Redis 暴露在公共互聯網上;應將其限制在主機或私人網路中,並配置身份驗證和防火牆規則。對於 Unix 套接字,請使用套接字路徑作為 Redis 主機和連接埠 0,並確保 Web 伺服器使用者可以存取該套接字。除非 Redis 確實位於本地且共享一致,否則請勿將 localhost 設定複製到多伺服器部署中;所有 Nextcloud 應用程式節點都需要存取相同後端。
在 Nextcloud 34.0.2 或更高版本中,KeyValueCache 無需單獨安裝 PHP 擴充功能即可連接到 Redis 或 Valkey。請按如下方式配置後端和鍵值存儲,並將主機名稱和所有憑證替換為您環境中的值:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
請勿將 Redis 和 KeyValueCache 同時配置為相互競爭的鎖定提供者。有關憑證、TLS、套接字、Sentinel 或叢集拓撲方面的信息,請遵循 Nextcloud 文檔,而不是憑猜測照搬單伺服器範例。
如果您變更了 Redis 相容服務的配置,請重新啟動該服務;如果您安裝或啟用了 PHP 擴展,請重新啟動 Web 伺服器或 PHP-FPM 進程。使用發行版對應的服務名稱檢查服務狀態;例如,systemctl status redis-server在許多 Debian 或 Ubuntu 系統中,可以使用服務名稱。確認服務已啟動且 PHP 進程可以連線。容器部署應使用容器網路上的 Redis 服務名稱,而不是 localhost,除非這兩個服務共用同一個網路命名空間。
以管理員身分登入 Nextcloud 並重新整理管理概覽。當設定的後端可用且設定載入完畢後,事務性檔案鎖定警告應該會消失。上傳、下載並同步測試文件,然後查看 Nextcloud 和 PHP 日誌,確認是否出現 Redis 連線或權限錯誤。如果警告仍然存在,通常表示存在拼字錯誤、設定項目重複、PHP 擴充/SAPI 錯誤、網路連線被封鎖、套接字權限不正確或後端無法存取等問題。請修正具體原因,而不是停用鎖定。
對於部署特定的選項,在更改拓撲之前,請查閱版本化的官方參考資料:交易文件鎖定、記憶體快取和 Redis/Valkey 配置以及配置參數。
啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。
將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。
配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。
安全地執行 Nextcloud 的 OCC 修復程序,預覽資料庫更改,並檢查警告仍然存在的原因。
透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。
設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。
使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。