如何在 Ubuntu 24.04 上為 Nextcloud 配置 Redis 快取

Nextcloud 目前的管理手冊仍然記錄了用於 Redis 快取和事務性檔案鎖定的 PhpRedis 擴充功能。它還記錄了 Nextcloud 34.0.2 中新增的、無需擴展的 KeyValueCache 後端。本指南使用已建立的 PhpRedis 配置,因為 Ubuntu 24.04 提供了 PHP 8.3 Redis 擴充包。如果您的 Nextcloud 版本支持,則可以選擇使用新的後端,但其配置鍵有所不同;請勿混用這兩個範例。

最終將提供一個僅供 Nextcloud 主機存取的本地 Redis 服務、基於 Redis 的分散式快取和檔案鎖定,以及用於更快本地快取的 APCu。這是一種常見的單一伺服器配置。如果您的 Web 伺服器和 PHP 伺服器分佈在不同的主機上,請使用具有適當網路控制的共用 Redis 端點,而不是使用下方的 localhost 設定。

Redis 在 Nextcloud 安裝中會帶來哪些變化

Redis 為 Nextcloud 提供鍵值服務,用於分散式快取條目和事務性檔案鎖定。這些鎖有助於防止多個請求同時操作文件時發生衝突。 Redis 並不會取代 Nextcloud 的資料庫、檔案儲存、PHP OPcache 或備份方案。在單一伺服器上,APCu 通常速度更快,尤其適用於本地進程內緩存,而 Redis 則負責處理共享快取和鎖。 Nextcloud 也提醒用戶,不建議將 Redis 用作本地緩存,尤其是在使用多台 Web 伺服器的情況下。

Nextcloud 最新手冊將 Redis 列為支援的後端,並指定基於擴展的方法需要 PhpRedis 2.2.6 或更高版本。 Ubuntu 24.04 的軟體套件檔案包含 PhpRedisphp8.3-redis和 PhpRedis redis-server。軟體套件版本會隨著 Ubuntu 發布更新而變化,因此請從已配置的 Ubuntu 軟體倉庫安裝,而不是固定使用從舊指南複製的版本。參考資料(2026 年 10 月 6 日查閱):Nextcloud 記憶體快取文件、Ubuntu 24.04 PhpRedis 軟體包清單和Ubuntu 24.04 Redis 伺服器軟體包清單。

開始之前

  • 確認 Nextcloud 安裝目錄和網站使用的 PHP 執行環境。以下命令假設已安裝標準的 Ubuntu 軟體包,並安裝了 PHP 8.3、Apache 或 PHP-FPM 以及 Web 服務帳戶www-data。
  • 備份config/config.php並記下恢復方法。特定路徑可能有所不同:例如,軟體包安裝可能使用 `/etc/apt/installation/` /var/www/nextcloud/config/config.php,而手動安裝的檔案可能位於其他位置。
  • 如果伺服器正在處理活躍的檔案上傳,請使用維護視窗。重新啟動 Apache 或 PHP-FPM 會短暫中斷 Web 請求。

1. 安裝 Redis、PhpRedis 和 APCu

更新軟體包元資料並安裝守護程式和 PHP 擴充功能:

sudo apt update
sudo apt install redis-server php-redis php-apcu

Ubuntu 的php-redis軟體套件會根據已安裝的 PHP 版本選擇擴充功能。如果您維護多個 PHP 版本或使用第三方 PHP 軟體倉庫,請確保已為 Nextcloud 運行所需的 PHP 版本安裝相應的擴充功能。即使僅在命令列 PHP 運行時環境中啟用了模組,也無法保證 Apache 或 PHP-FPM 能夠載入它。

啟用 Redis 開機啟動並立即啟動它,然後檢查其服務狀態:

sudo systemctl enable --now redis-server
sudo systemctl status redis-server --no-pager
redis-cli ping

本地 Redis 對上一條指令的正常回應是PONG:。如果服務處於非活動狀態,請sudo journalctl -u redis-server -n 50 --no-pager在變更 Nextcloud 設定之前進行檢查。

2. 將 Redis 監聽器放在本地

對於單主機安裝,Redis 不需要監聽公共介面。 Ubuntu 的預設配置通常是為本機存取和保護模式設計的;/etc/redis/redis.conf修改前請先檢查配置:

sudo grep -E '^(bind|protected-mode|port|unixsocket)' /etc/redis/redis.conf

將 Redis 綁定到回環位址(通常為 12344127.0.0.1和::112344),並啟用保護模式。對於此本地設置,請勿將連接埠暴露6379給互聯網或綁定到 12344。0.0.0.0每次變更 Redis 配置後,請重新啟動服務並重複上述步驟redis-cli ping。

本指南使用本機上的 TCP 協議,以最大程度地減少套接字權限的變更。 Unix 套接字是另一個支援的本機選項,可減少連線開銷,但 Redis 套接字路徑、群組擁有權、權限和 Nextcloud 設定必須完全符合。如果您特意選擇這種方式,請參考 Nextcloud 手冊中的套接字範例。

3. 確認 PHP 可以載入這兩個擴充

檢查命令列 PHP 模組:

php -m | grep -Ei '^(apcu|redis)$'

你應該可以看到這兩個名稱。如果缺少其中一個,請檢查已啟用的模組文件,php --ini並安裝與您的 PHP 版本相符的軟體包。重新啟動網站使用的 PHP 處理程序,以便其工作進程載入新模組。對於使用 mod_php 的 Apache 伺服器,請執行 `npm install` sudo systemctl restart apache2。使用 PHP 8.3 的 PHP-FPM 安裝,請執行 ` sudo systemctl restart php8.3-fpmnpm install`;根據部署需求重新啟動或重新載入 Web 伺服器。

CLI 檢查只是一個有用的初步訊號,並不能完全證明 Web 運作時是否正常運作。之後,請使用 Nextcloud 的管理設定及其伺服器資訊或 PHP 資訊檢視來驗證 Web 進程是否識別快取模組。

4. 將快取設定加入到 Nextcloud

用編輯器開啟現有文件config/config.php。先備份文件,然後在關閉文件之前將這些條目合併到現有的 PHP 陣列中);。不要替換整個文件,也不要添加已存在的按鍵的重複副本。

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
],

明確回環位址與本機 Redis 服務相符。如果您使用 Unix 套接字,請將套接字路徑用作 Redis 主機,並配置守護程序和權限以進行匹配。如果 Redis 需要驗證,請將正確的 Redis ACL 使用者名稱和密碼新增至陣列中redis,並相應地設定 Redis;切勿將真實密碼貼到共用範例或公開支援貼文中。

保持現有設定不變,例如instanceid資料庫憑證、受信任網域和資料目錄。 PHP 數組語法很重要:條目之間用逗號分隔,並確保每個設定只出現一次。

5. 驗證快取和檔案鎖定情況

以 web 服務使用者身份,從安裝目錄執行 Nextcloud 的命令列狀態檢查。如果您的安裝位置在其他位置,請替換範例路徑:

cd /var/www/nextcloud
sudo -u www-data php occ status

檢查 Web管理設定下的介面,查看是否有設定警告,並確認 Redis 和 APCu 模組在 Web PHP 執行時可見。然後使用一個較小的非關鍵檔案測試正常的檔案操作:上傳、重新命名、下載和刪除該檔案。如果本地快取配置正確,管理頁面應該不再報告記憶體快取缺失。

測試成功PONG僅證明 Redis 能夠回應本地 CLI 用戶端。 Nextcloud 管理員檢查和常規檔案操作有助於同時驗證 PHP 擴充功能、Web 伺服器權限、Redis 連線設定和應用程式設定。不要將一次測試中頁面載入速度的提升視為效能提升的證明;工作負載、儲存、資料庫和 PHP 工作進程的容量都會影響回應時間。

常見問題排除

管理頁面仍然顯示沒有記憶體快取。

檢查是否有重複或拼字錯誤的快取鍵,確認其memcache.local指向 APCu,然後重新啟動正確的 Apache 或 PHP-FPM 服務。僅透過命令列介面 (CLI) 安裝的 PHP 可能與網站使用的 PHP 執行時間環境不同。

Redis正在運行,但Nextcloud報告連接錯誤

將 ` hostand`與監聽器進行port比較。使用 `command` 確認本地存取權限,並查看 Redis 和 Web 伺服器日誌。如果您使用套接字或密碼,請驗證其路徑或憑證在兩端是否符合。config.php/etc/redis/redis.confredis-cli -h 127.0.0.1 -p 6379 ping

更改後文件操作失敗。

如果執行個體無法使用,請暫時還原備份config.php,然後檢查 PHP 和 Web 伺服器日誌。檢查數組標點符號,確認 Redis 服務已激活,並驗證防火牆或自訂 Redis ACL 是否封鎖了 Web 進程。避免將清除 Redis 資料作為首要故障排除步驟;在刪除快取或鎖定條目之前,請先調查連線和配置。

此方案未涵蓋的內容

這是一個單一伺服器配置,並非高可用性 Redis 設計。它沒有配置 Redis 複製、Sentinel、TLS、遠端快取主機、會話儲存或叢集式 Nextcloud 部署。多伺服器 Nextcloud 節點必須共用同一個分散式快取和鎖定後端;每個節點上的 localhost 會建立獨立的 Redis 實例,從而違反此要求。對於遠端或叢集拓撲,請遵循對應的 Nextcloud 配置部分,並為此環境配置 Redis 通訊安全性。

配置穩定後,監控 Redis 記憶體使用量和 Nextcloud 管理後台概覽。為快取和鎖定活動分配足夠的內存,避免使用未經審核的驅逐策略(這些策略可能會丟棄鎖定資料),並定期備份資料庫和檔案。 Redis 快取可以減少快取和鎖定的開銷,但它只是 Nextcloud 正常運作的一部分,不能取代容量規劃。

留下評論

10 款最佳 Ping 掃描工具,協助您尋找網路上的設備

10 款最佳 Ping 掃描工具,協助您尋找網路上的設備

比較 10 款 ping 掃描工具,它們可用於快速發現區域網路、跨平台掃描和 IP 位址管理。了解掃描可以告訴您什麼,以及不能告訴您什麼。

用於追蹤效能的 6 款最佳網路管理工具

用於追蹤效能的 6 款最佳網路管理工具

比較六款網路管理工具的效能監控功能,包括 SNMP 覆蓋範圍、映射、警報、部署模型和成本權衡。

適用於 Windows、iOS 和 Android 的最佳 Wi-Fi 分析器

適用於 Windows、iOS 和 Android 的最佳 Wi-Fi 分析器

比較適用於 Windows、iPhone 和 Android 的 Wi-Fi 分析器,包括頻道擁塞、訊號覆蓋範圍、熱圖和網路故障排除工具。

Ping 監控:7 款免費開源的網路可用性工具

Ping 監控:7 款免費開源的網路可用性工具

比較七款免費開源的 ping 監視器,從完整的網路套件到專注於延遲探測的工具,選擇最適合可用性、丟包率和歷史記錄的工具。

網路中的服務品質 (QoS):服務品質的角色和工作原理

網路中的服務品質 (QoS):服務品質的角色和工作原理

了解 QoS 在網路中的意義,DSCP 標記和流量佇列如何對語音、視訊和業務應用程式進行優先排序,以及 QoS 無法解決的問題。

最佳SFTP伺服器軟體,實現安全檔案傳輸

最佳SFTP伺服器軟體,實現安全檔案傳輸

比較適用於 Windows 和 Linux 的可靠 SFTP 伺服器軟體,包括 OpenSSH、Bitvise、SolarWinds 和 SFTPGo。尋找最適合您的安全性和文件傳輸需求的軟體。

適用於網路團隊的 7 款最佳 IP 位址管理工具

適用於網路團隊的 7 款最佳 IP 位址管理工具

比較七款 IP 位址管理工具,包括子網路發現、DNS 和 DHCP 協調、網路清單和開源 IPAM。

網路監控最佳實務:監控哪些內容以及使用哪些工具

網路監控最佳實務:監控哪些內容以及使用哪些工具

建置實用的網路監控,提供清晰的設備覆蓋範圍、有用的效能指標、可操作的警報,並對 SolarWinds NPM、PRTG 和 OpManager 進行比較。

十大最佳網路掃描工具,幫助您發現裝置和 IP 位址

十大最佳網路掃描工具,幫助您發現裝置和 IP 位址

比較網路掃描工具,以實現快速設備發現、跨平台 IP 掃描和企業級 IPAM,並指導如何將每個選項與您的網路相符。

如何使用 Nmap 進行路由追蹤並讀取網路路徑

如何使用 Nmap 進行路由追蹤並讀取網路路徑

使用 Nmap 的 --traceroute 選項將躍點對應到授權主機,了解躍點和 RTT 輸出,並在不進行過度掃描的情況下排查缺失的回應。