Nextcloud Redis-Caching unter Ubuntu 24.04 einrichten
Nextcloud 34.0.2 führte ein integriertes, Redis-kompatibles KeyValueCacheBackend ein, sodass aktuelle Nextcloud-Versionen Redis nutzen können, ohne die Redis-Erweiterung für PHP installieren zu müssen. Auf einem einzelnen Ubuntu-24.04-Server wird APCu für den schnellen lokalen Cache und Redis für verteiltes Caching und transaktionale Dateisperrung verwendet. Die Verbindung erfolgt über einen Unix-Socket. Dadurch bleibt Redis vom Netzwerk getrennt und Nextcloud erhält einen gemeinsamen Cache, der für alle PHP-Anfragen nutzbar ist.
Wählen Sie zuerst das richtige Redis-Backend aus.
Das aktuelle Nextcloud 35-Administrationshandbuch beschreibt zwei Redis-Pfade. Für Nextcloud 34.0.2 und höher wird die KeyValueCacheVerwendung des mit Nextcloud mitgelieferten Predis empfohlen. Sie installieren den Redis-Server und konfigurieren ihn memcache.kvstore, benötigen aber keine weitere Konfiguration. Ältere Nextcloud-Versionen verwenden die PhpRedis-Erweiterung und einen anderen Block. Überprüfen Sie Ihre Version mit php-redisdem Befehl `npm install --version` und ersetzen Sie den Pfad, falls Ihre Installation an einem anderen Ort liegt.config.phpsudo -u www-data php /var/www/nextcloud/occ status
Diese Anleitung setzt voraus, dass Nextcloud und Redis auf demselben Ubuntu-Host laufen, der Webserver als Hostname ausgeführt wird www-dataund Sie PHP und Redis direkt verwalten. Wenn Sie Nextcloud über Snap, AIO, Docker oder eine andere Appliance installiert haben, befolgen Sie die Service- und Dateisystemkonventionen des jeweiligen Pakets, anstatt Host-Befehle unreflektiert anzuwenden. APCu ist für lokales Caching schneller als Redis, während Redis für verteiltes Caching und Dateisperren geeignet ist. Weitere Informationen finden Sie in der Nextcloud-Dokumentation zum Speicher-Caching .
Installieren Sie Redis und APCu.
Aktualisieren Sie den Paketindex von Ubuntu, installieren Sie den Redis-Server und das APCu-PHP-Modul und aktivieren Sie Redis beim Systemstart:
Installieren Sie die Redis-Server- und APCu-Pakete, bevor Sie eine der Konfigurationsdateien bearbeiten.
Unter Ubuntu 24.04 ist die Standard-PHP-Version 8.3 und php-apcuentspricht dem Paketnamen der Distribution. Redis ist ein separater Dienst; APCu wird von PHP geladen. Starten Sie den PHP-Handler nach der Installation von APCu neu, damit der webbasierte PHP-Prozess das Modul lädt. Bei Verwendung von PHP-FPM ist dies üblicherweise der Befehl `php --help` php8.3-fpm; bei Apache mit mod_php starten Sie den Befehl `php --help` neu apache2. Überprüfen Sie vor dem Neustart die Namen Ihrer aktiven Dienste.
Redis lokal auf dem Server installieren
Für diese Einzelhost-Konfiguration verwenden Sie einen Unix-Socket und deaktivieren den TCP-Listener von Redis. Bearbeiten Sie die Konfigurationsdatei /etc/redis/redis.conf. Aktualisieren Sie die vorhandenen aktiven Direktiven, anstatt mehrere widersprüchliche Kopien zu hinterlassen, und legen Sie dann Folgendes fest:
port 0
unixsocket /run/redis/redis-server.sock
unixsocketperm 770
Verwenden Sie in Redis und Nextcloud denselben Socket-Pfad und beschränken Sie den Zugriff auf die Redis-Gruppe.
port 0Der TCP-Port wird deaktiviert; Redis lauscht stattdessen über den Socket-Pfad. Der Berechtigungsmodus 770ermöglicht dem Redis-Besitzer und der Redis-Gruppe den Zugriff auf den Socket, während anderen lokalen Benutzern der Zugriff verweigert wird. Fügen Sie das Webserver-Konto der Redis-Gruppe hinzu:
Starten Sie den PHP-FPM-Dienst oder Apache nach einer Änderung der Gruppenzugehörigkeit neu, da laufende Prozesse ihre alte Gruppenliste beibehalten. Verwenden Sie den Dienst, der tatsächlich das PHP von Nextcloud ausführt. Die Redis-Dokumentation empfiehlt, den Zugriff auf vertrauenswürdige Clients zu beschränken; ein lokaler Socket vermeidet die Offenlegung eines Cache-Ports auf einer öffentlich zugänglichen Schnittstelle. Siehe die Sicherheitsrichtlinien von Redis .
Nextcloud an die Steckdose anlegen
Sichern Sie die Datei config/config.phpund fügen Sie diese Einträge anschließend in das bestehende PHP-Konfigurationsarray ein. Überschreiben Sie dabei nicht den restlichen Inhalt der Datei. Verwenden Sie den Pfad zu Ihrer Nextcloud-Installation.
Halten Sie APCu lokal und legen Sie sowohl das Redis-Cache-Backend als auch den Socket-Host in der config.php fest.
Der führende Schrägstrich im Hostpfad weist Nextclouds KeyValueCache an, einen Unix-Socket zu verwenden, sodass keine TCP-Port- oder Protokolleinstellung erforderlich ist. Redis stellt sowohl `APCu` memcache.distributedals auch `APCu` bereit memcache.locking; letzteres verlagert Transaktionsdateisperren von der Datenbank weg. Aktivieren Sie memcache.localAPCu für einen lokalen Cache-Zugriff mit geringerer Latenz. Die genauen Einträge und Socket-Optionen finden Sie in den Anweisungen zu Nextclouds KeyValueCache und Unix-Sockets sowie im Leitfaden zu Transaktionsdateisperren .
Überprüfen Sie die Verbindung und beheben Sie Probleme mit den Berechtigungen.
Prüfen Sie zunächst, ob der Redis-Dienst aktiv ist und ob die Socket-Verbindung antwortet:
sudo systemctl status redis-server
redis-cli -s /run/redis/redis-server.sock ping
Eine PONG-Antwort bestätigt, dass Redis eine lokale Verbindung über den konfigurierten Socket akzeptiert.
Die erwartete Antwort auf den zweiten Befehl lautet „“ PONG. Melden Sie sich anschließend bei Nextcloud an und öffnen Sie die Übersicht der Administrationseinstellungen. Prüfen Sie, ob die Warnung zum lokalen Cache nicht mehr angezeigt wird, und überprüfen Sie das Nextcloud-Protokoll, falls weiterhin eine Redis- oder Cache-Warnung vorliegt. Sie können auch den Befehl ausführen, sudo -u www-data php /var/www/nextcloud/occ statusum zu überprüfen, ob die Instanz noch geladen wird. Dieser Befehl prüft die Nextcloud-Verfügbarkeit, nicht den Cache selbst.
Wenn Redis „Zugriff verweigert“ meldet oder Nextcloud keine Verbindung herstellen kann, prüfen Sie, ob der Socket existiert, www-datazur redisrichtigen Gruppe gehört und ob Gruppe und Modus des Sockets den Zugriff erlauben. Starten Sie Redis und den PHP-Handler nach einer Änderung der Gruppenzugehörigkeit neu. Kann Redis den Socket nicht erstellen, prüfen Sie den konfigurierten Pfad auf Tippfehler und untersuchen Sie die Konfiguration sudo journalctl -u redis-server -n 50. Beheben Sie Socket-Berechtigungsprobleme nicht, indem Sie Redis für das öffentliche Netzwerk freigeben.
Ältere Nextcloud-Versionen: Verwenden Sie stattdessen phpRedis.
Wenn Ihre Nextcloud-Version älter als 34.0.2 ist, installieren Sie die PHP-Redis-Erweiterung, die zur PHP-Version Ihres Nextcloud-Systems passt. Unter Ubuntu 24.04 mit PHP 8.3 lautet das Paket ` php-redis<Paketname>`; Ubuntu listet es als PHP-8.3-Redis-Erweiterung auf. Starten Sie den aktiven PHP-Handler nach der Installation neu. config.phpVerwenden Sie in `<Konfigurationsdatei>` die älteren Redis-Klassen und den Verbindungsblock anstelle der oben genannten KeyValueCache-Einträge.
Die Paketliste von Noble php-redis unter Ubuntu bestätigt die Paketzuordnung. Konfigurieren Sie nicht beide Backends gleichzeitig. Nach dem Speichern der korrekten Konfiguration wiederholen Sie den Socket-Ping und die Überprüfung der Nextcloud-Admin-Übersicht.