In Nextcloud gibt es verschiedene Möglichkeiten des Memory-Cachings. Bislang war hier PHP-APCu das Mitel der Wahl. Mittlerweile schwenkt Nextcloud aber auf die Redis-Datenbank für das Memory-Caching um. Redis ist als vielseitig einsetzbare Open-Source-Datenbank bekannt.
Folgende Anleitung ist auf Basis einer Nextcloud 28.0.1 auf Ubuntu 22.04 LTS mit Apache 2, MariaDB 10.6 und PHP 8.3 erstellt worden.
Seit Nextcloud 27 erhält man in der Administrationsübersicht immer folgende ständige Warnung:
Die Datenbank wird für transaktionale Dateisperren verwendet. Um die Leistung zu verbessern, konfigurieren Sie bitte Memcache, falls verfügbar. Weitere Informationen findest du in der Dokumentation ↗.
Damit diese (nervige) Meldung verschwindet, installieren wir jetzt die Redis-Datenbank und konfigurieren sie für Nextcloud.
Zuerst installierst Du Redis und das entsprechende PHP-Modul:
sudo apt install redis php-redis
Jetzt prüfst Du, ob in der Redis-Konfiguration der richtige Wert für den Port gesetzt ist:
sudo vi /etc/redis/redis.conf
Suche in der Datei nach folgendem Wert:
port 6379
Außerdem solltest Du prüfen, ob folgende beiden Werte auskommentiert sind:
# unixsocket /var/run/redis/redis-server.sock
# unixsocketperm 700
Danach den Redis-Server einmal neu durchstarten:
sudo systemctl restart redis.service
Im Anschluss daran muss die Konfiguration noch in der Nextcloud gesetzt werden.
Das kann man entweder über die Bash direkt setzen (bitte den Pfad entsprechend anpassen):
sudo -u www-data php /var/www/nextcloud/occ config:system:set filelocking.enabled --value "true"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.distributed --value "\\OC\\Memcache\\Redis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.locking --value "\\OC\\Memcache\\Redis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis host --value "localhost"
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis port --value "6379"
Oder man fügt in der Konfiguration direkt ein (auch hier den Pfad direkt anpassen). Zunächst öffnet man die config.php
:
sudo vi /var/www/nextcloud/config/config.php
Und anschließend fügt man vor dem die Datei abschließenden );
folgendes ein:
'filelocking.enabled' => true,
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
Jetzt kurz in der Administrationsübersicht prüfen, ob alles passt. Wenn nicht, hilft in jedem Fall ein Reboot:
sudo reboot now
Hi, tolle einfache und schnelle Anleitung. Ich habe es nun auf mehreren Seiten so gelegen und auch alle Schritte befolgt, leider funktioniert es bei mir nicht.
Entweder meldet nextcloud immer noch die Memcache Fehlermeldung, obwohl alles aktiviert ist. Und sobald Dein Tutorial nehme oder die offizielle Anleitung für die Einträge in der config.php, dann bekomme ich beim Aufruf der nextcloud immer nur „Internal Server Error“.
Hi, danke für Deine Rückmeldung. Wie sagen denn die Logs?
Hi Martin, ich habe nach der Apfelsaft Anleitung mein Glück versucht.
Proxmox VM mit Ubuntu Server 22 LTE und NC 28.0.1
Ich bin an der Stelle mit den 5 Befehlen sudo -u www-data php /var/www/nextcloud/occ config:system:set f……
gescheitert. Fehlermeldungen siehe unten.
Als Alternative hast Du die Editierung der config.php (sudo vi /var/www/nextcloud/config/config.php) geschrieben.
bei mir ist ganz am Ende in der letzten Zeile eine runde Klammer mit Semikolon. );
bei Dir am Ende Eckige Klammer mit Komma. nicht ganz links ],
Wo und mit welchem Einrücken sollen die Zeilen eingefügt werden?
Viele Grüße
Michael
Fehlermeldung der Befehlsserie:
An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery()
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(184): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/App/AppManager.php(128): OC\AppConfig->getValues()
#10 /var/www/nextcloud/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/nextcloud/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/nextcloud/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/nextcloud/lib/base.php(1200): OC::init()
#15 /var/www/nextcloud/console.php(48): require_once(‚…‘)
#16 /var/www/nextcloud/occ(11): require_once(‚…‘)
#17 {main}An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery()
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(184): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/App/AppManager.php(128): OC\AppConfig->getValues()
#10 /var/www/nextcloud/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/nextcloud/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/nextcloud/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/nextcloud/lib/base.php(1200): OC::init()
#15 /var/www/nextcloud/console.php(48): require_once(‚…‘)
#16 /var/www/nextcloud/occ(11): require_once(‚…‘)
#17 {main}An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery()
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(184): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/App/AppManager.php(128): OC\AppConfig->getValues()
#10 /var/www/nextcloud/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/nextcloud/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/nextcloud/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/nextcloud/lib/base.php(1200): OC::init()
#15 /var/www/nextcloud/console.php(48): require_once(‚…‘)
#16 /var/www/nextcloud/occ(11): require_once(‚…‘)
#17 {main}An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery()
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(184): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/App/AppManager.php(128): OC\AppConfig->getValues()
#10 /var/www/nextcloud/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/nextcloud/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/nextcloud/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/nextcloud/lib/base.php(1200): OC::init()
#15 /var/www/nextcloud/console.php(48): require_once(‚…‘)
#16 /var/www/nextcloud/occ(11): require_once(‚…‘)
#17 {main}An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /var/www/nextcloud/lib/private/DB/Connection.php:139
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1654): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1081): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /var/www/nextcloud/lib/private/DB/Connection.php(261): Doctrine\DBAL\Connection->executeQuery()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(337): OC\DB\Connection->executeQuery()
#4 /var/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(377): Doctrine\DBAL\Query\QueryBuilder->executeQuery()
#5 /var/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#6 /var/www/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
#7 /var/www/nextcloud/lib/private/AppConfig.php(184): OC\AppConfig->loadConfigValues()
#8 /var/www/nextcloud/lib/private/AppConfig.php(374): OC\AppConfig->getApps()
#9 /var/www/nextcloud/lib/private/App/AppManager.php(128): OC\AppConfig->getValues()
#10 /var/www/nextcloud/lib/private/App/AppManager.php(149): OC\App\AppManager->getInstalledAppsValues()
#11 /var/www/nextcloud/lib/private/legacy/OC_App.php(231): OC\App\AppManager->getInstalledApps()
#12 /var/www/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php(90): OC_App::getEnabledApps()
#13 /var/www/nextcloud/lib/base.php(700): OC\AppFramework\Bootstrap\Coordinator->runInitialRegistration()
#14 /var/www/nextcloud/lib/base.php(1200): OC::init()
Hallo,
die Konfiguration musst Du in der config.php in der Zeile vor
);
(also damit in der vorletzten Zeile) einfügen, weil damit das Config-Array geschlossen wird.Die Fehlermeldung in Deinen Logs sieht für mich so aus, als dass das PHP-Paket für mysql nicht installiert ist. Das einfach mit
sudo apt install php-mysql
nachholen. Ggf. musst du nachphp
noch die Version angeben (also:sudo apt install php8.1-mysql
).Viele Grüße
Erik
Hi Eric, das mit der config.php hat jetzt gut geklappt. Ich habe festgestellt , dass auch eine php8.3 neben der php 8.2 vorhanden ist. ich habe manuell auf 8.2 umgestellt.
Gerade läuft der rsync….
Viele Grüße
Michael
Wunderbar! Freut mich, dass es funktioniert!
Danke für die Anleitung
Für mein Nextcloud Setup PHP8.2 musste ich die Installation ändern:
sudo apt install redis php8.2-redis
Dadurch wurde der Fehler behoben:
„Memcache OC\Memcache\Redis not available for distributed cache (Is the matching PHP module installed and enabled?)
Das für den Hinweis! Je nach Distribution greift bei der Umstellung auf eine neuere Version das auch bei der Paketverwaltung. Wenn man die Versionsnummer angibt, ist man in jedem Fall immer auf der sicheren Seite.
Vielen Dank.
ich habe die Anleitung mit Debian 12 gemacht. Nextcloud 28.0.1, Php8.2.
Funktioniert ohne Probleme.
Freut mich!
Danke für die Anleitung. Bei Nextcloud 29 auf Ubuntu 24.04 musste ich in der config.php noch die Zeile
‚memcache.local‘ => ‚\\OC\\Memcache\\Redis‘,
einfügen. Sonst kam weiterhin die Meldung, dass kein Memory Cache konfiguriert ist.
Spannend, was für ein System hast Du?
Danke. Das hat geholfen.
Habe statt php-redis wie Reinhard vorschlug php8.3-redis installiert. Alles andere exakt wie beschrieben (die Pfade passten alle).
Nextcloud 29.0.4 mit php8.3.9 auf Ubuntu server 24.04 LTS auf nem Intel N100 Minirechner