使用 Redis 清除 Nextcloud 的檔案鎖定警告

若要消除 Nextcloud 的事務性檔案鎖定警告,首先要確保已啟用鎖定,然後設定持久化的 Redis 相容後端,例如 Redis 或 Valkey。在小型實例上,Nextcloud 預設可以使用其資料庫鎖定後端;對於生產伺服器或共享工作負載,通常選擇 Redis 後端鎖定,因為它能減少對資料庫的鎖定流量。請勿將檔案鎖定指派給 Memcached:Nextcloud 會警告快取值可能會意外遺失。

選擇適合您伺服器的鎖定後端

事務性檔案鎖定可防止檔案操作因寫入衝突而發生,並在上傳或其他交易中斷時釋放鎖定。它有助於防止正常操作期間檔案損壞,包括涉及共用檔案和外部儲存的操作。它不會阻止兩人同時編輯同一文件或提供線上狀態指示;它控制的是同時保存操作。請參閱Nextcloud 35 事務性文件鎖定文件。

  • 資料庫後端: Nextcloud 預設使用資料庫鎖定。這避免了添加額外服務,對於小型個人部署來說已經足夠,但資料庫鎖定會增加伺服器負載。如果您只是清除輕度使用伺服器上的警告,請先確認是否已明確停用資料庫鎖定。
  • Redis 與 phpredis:非常適合成熟的單一伺服器和叢集部署。它需要一台相容 Redis 的伺服器和 PHP Redis 擴展,以及 Nextcloud 中相應的連接設定。
  • 使用 Redis 或 Valkey 的鍵值快取:從 Nextcloud 34.0.2 版本開始可用。它使用 Nextcloud 自帶的程式庫,因此無需 PHP Redis 擴充功能。當 PHP Redis 擴充功能不可用時,此功能非常有用。不過,Nextcloud 指出,遠端鍵值伺服器可能會增加網路開銷。
  • Memcached:它可以用於分散式緩存,但不適用於事務性檔案鎖,因為快取值可能會被清除。請勿將其用於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 管理員警告參考文件中列出了鎖定警告,並提供了指向後端要求的連結。

在單一伺服器上配置 Redis 鎖定

在 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 應用程式節點都需要存取相同後端。

當 PHP Redis 擴充功能不可用時

在 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 配置以及配置參數。

留下評論

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。

清除 Nextcloud 缺少資料庫索引警告

清除 Nextcloud 缺少資料庫索引警告

安全地執行 Nextcloud 的 OCC 修復程序,預覽資料庫更改,並檢查警告仍然存在的原因。

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。

清除 Nextcloud Web 伺服器上的 PHP 記憶體警告

設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。

將 S3 相容存儲桶連接到 Nextcloud 外部存儲

使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。