Nextcloud mit PHP 8.2: Erweiterung Redis wird immer wieder deaktiviert

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
370
Punkte für Reaktionen
65
Punkte
28
Bei mir läuft die Nextcloud 27.0.1 mit PHP 8.2 nativ per Webstation auf DSM 7.2.

Ich bekomme immer nach einem Neustart der Diskstation (manchmal auch einfach ohne Neustart) die Warnung angezeigt:

Es gibt einige Warnungen bei deiner Systemkonfiguration.
  • Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der Dokumentation ↗.

Ich habe redis in der config.php aktiviert und in der Datei

/var/packages/WebStation/etc/php_profile/{Profilordner_des_PHP-Profils_für_Nextcloud}/conf.d/user_settings.ini

den Eintrag

extension = redis.so

eingetragen. Dann verschwindet die Warnung in der Nextcloud und ich bekomme den "grünen Haken". Aber irgendwann wird der Redis-Eintrag in der user_settings.ini vom System wieder gelöscht.

Ich vermute mal, das liegt daran, weil man die Erweiterung "redis" nicht über die GUI für das PHP-Profil aktivieren kann (unter "Erweiterungen"), sondern es manuell eintragen muss.

Gibt es noch einen anderen Weg, wie ich die Redis-Erweiterung dauerhaft aktivieren kann? Bisher helfe ich mir halt damit, dass ich den Eintrag in der user_settings.ini dann immer wieder manuell eintrage, wenn er mal wieder weg ist. Aber das System legt die user_settings.ini scheinbar immer wieder neu an und schmeisst dann manuell eingetragene Werte raus. Nur die Erweiterungen, die per GUI aktiviert wurden, bleiben offenbar drin.

So richtig schlimm ist die Warnung ja sicherlich auch nicht, da die Nextcloud dadurch nicht merkbar langsamer wird. Aber es nervt trotzdem etwas, wenn man wieder mal manuell die user_settings.ini korrigieren muss. ;-)

Merkwürdigerweise kann man die Erweiterung apcu.so auch nicht über die GUI aktivieren, aber der Eintrag "extension = apcu.so" fliegt nicht aus der Datei.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.982
Punkte für Reaktionen
576
Punkte
134
Ich hatte ähnliches bei meiner Docker-Installation.

Ich musste zusätzlich einen Redis-Container an Nextcloud anflanschen. Wie das bei einer Webstation-Installation aussieht, entzieht sich meiner Kenntnis.

Bei mir hat sich das Fehlen bei der Datei-Synchronisation bemerkbar gemacht, die lief nicht mehr korrekt.
 
  • Like
Reaktionen: MattCB

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
Hast du in

volumeX/\@appstore/PHP8.2/misc/extension_list.json
den Eintrag für Redis in der GUI drin?
Code:
"redis": { "enable_default": true, "desc": "The phpredis extension provides an API for communicating with the Redis key-value store." },
 
  • Like
Reaktionen: Tuxnet und MattCB

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.982
Punkte für Reaktionen
576
Punkte
134
Gibt es denn auf der Syno einen nativen Redis-Server? Der müsste ja dann auch gestartet sein...
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
370
Punkte für Reaktionen
65
Punkte
28
Hast du in

volumeX/\@appstore/PHP8.2/misc/extension_list.json
den Eintrag für Redis in der GUI drin?
Code:
"redis": { "enable_default": true, "desc": "The phpredis extension provides an API for communicating with the Redis key-value store." },

Nein, stand dort nicht drin. Habe es mal eingefügt, jetzt erscheint redis auch in der Auswahlliste der Erweiterungen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
Schon gesehen, ob es sich weiterhin deaktiviert?
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
370
Punkte für Reaktionen
65
Punkte
28
Das prüfe ich dann bei Gelegenheit. Bisher ist Redis noch aktiv. :)
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.982
Punkte für Reaktionen
576
Punkte
134
Es gibt ein Redis Paket von der Synocommunity.
Ich hab' grad mal auf meiner 918+ geschaut: Kann es sein, dass bei DSM 7.2 Redis schon dabei ist?
Code:
root@GalacticaNAS1:~# systemctl status | grep redis
           │   └─11246 grep --color=auto redis
           │ │ └─12263 redis-server *:637
           │ │ └─9318 redis-server *:637
           │ │ └─9494 /usr/bin/redis-server unixsocket:/run/synocached.sock

Code:
root@GalacticaNAS1:/usr/bin# ls -la red*
-rwxr-xr-x 1 root root  876848 Nov 23  2022 redis-cli
lrwxrwxrwx 1 root root      12 Jun 11 13:53 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 2212816 Nov 23  2022 redis-server
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
370
Punkte für Reaktionen
65
Punkte
28
Scheint tatsächlich so zu sein. Habe das Redis-Paket mal deinstalliert, Nextcloud zeigt trotzdem keine Warnung an, also scheint ja noch ein Redis-Server zu laufen.

Ich beobachte das ganze mal noch ein bisschen. Je weniger installierte Pakete man braucht, um so besser. :)
 
  • Like
Reaktionen: Adama

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
OK, muss ich schauen.
Aber ja, wäre auch gut, dann die zwei drei Dienste dorthin umzustellen.
Frage ist welche Version von redis da läuft z.
B.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.982
Punkte für Reaktionen
576
Punkte
134
Also das wird mir angezeigt:
Code:
root@GalacticaNAS1:~# redis-server --version
Redis server v=6.2.7 sha=0ffc3f13:0 malloc=jemalloc-5.1.0 bits=64 build=3708b56ae36b1c63

Wie immer etwas alt, meine Docker-Redisse sind 7.0.12.
 

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
370
Punkte für Reaktionen
65
Punkte
28
Mit dem "internen" Redis-Server gab es dann doch ein Problem. Ich konnte keine Dateien mehr aus dem Dateimanager herunterladen oder anzeigen lassen. Erst nach Deaktivierung von Redis in den PHP-Einstellungen ging es. Dann wieder Redis aus den Paketquellen installiert, Redis wieder aktiviert und dann ging es wieder. Vermutlich weil Redis von der Nextcloud per Port angesprochen wird und nicht über den Socket und der interne Redis-Server vom Synology Drive per Socket genutzt wird? Denn wenn ich das richtig sehe, nutzt Synology Drive alleine den internen Redis-Server?

Aber zumindest bleibt Redis jetzt auch nach einem Neustart aktiviert, und das war das Anliegen dieses Threads. ✅(y)
 
  • Like
Reaktionen: Tuxnet

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.388
Punkte für Reaktionen
1.206
Punkte
234
Denn wenn ich das richtig sehe, nutzt Synology Drive alleine den internen Redis-Server?
VMM wohl auch:

Code:
user@DS:~$ systemctl status | grep redis
           │ └─pkg-synoccc-redis.service
           │   └─13225 /var/packages/Virtualization/target/bin/redis-server 127.0.0.1:2385
 
  • Like
Reaktionen: Crashandy und MattCB

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
265
Punkte für Reaktionen
84
Punkte
28
In Anlehnung an die Beschreibung vom Vinking Studio Blog, habe ich für mich diese nachfolgende Lösung gefunden und meine Nextcloud 27.0.1 läuft seitdem auf meiner DS1821+ wie geschmiert.

* Redis aktivieren *

Die Datei "php-fpm.ini" liegt in dem folgenden Ordner.
/volume1/@appstore/PHP8.2/misc/php-fpm.ini

Am Ende der Datei "php-fpm.ini" muss der folgende Eintrag hinzugefügt werden.

Code:
[Redis]
extension = redis.so

* Cache auf der Kommandozeile aktivieren *

In dem folgenden Ordner muss eine benutzerdefinierte Datei mit diesem Inhalt angelegt werden.
/usr/local/etc/php82/cli/conf.d/user_settings.ini

Code:
extension = apcu.so
extension = redis.so

[core]
memory_limit = 2G
upload_max_filesize = 512M
post_max_size = 512M

[apc]
apc.shm_size = 512M
apc.enable_cli = 1

Die Datei "config.php" befindet sich bei mir an dieser Stelle.
/volume1/web/nextcloud/config/config.php

Dort müssen nun die folgenden Einträge unter dem Eintrag 'memcache.local' => '\OC\Memcache\APCu', eingefügt werden.

Code:
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' =>
  array (
    'host' => 'localhost',
    'port' => 6379,
    'timeout' => 0.0,
    'read_timeout' => 0.0,
  ),

Im Anschluss muss das Paket "Apache HTTP Server 2.4" einmal neu gestartet werden.

*********************************************************************
Ohne Redis im Docker und bei aktivierter Zeile in der config.php
'memcache.distributed' => '\OC\Memcache\Redis',
gibt es sofort eine Fehlermeldung:

Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.
*********************************************************************

Ein besonderer Dank geht von mir an @OdinsAuge, denn das war für mich die hilfreichste Lösung für das Redis-Problem.
 

TheGardner

Benutzer
Mitglied seit
30. Nov 2012
Beiträge
1.836
Punkte für Reaktionen
51
Punkte
74
Hab das mal nachgemacht und am Ende die von Dir genannte "Internal Server Error" Meldung bekommen., Wahrscheinlich, weil nextcloud bei mir nicht im Docker läuft.
Nach Auskommentieren der Zeile

'memcache.distributed' => '\OC\Memcache\Redis',
läuft es dann und Nextcloud jammert seit Ewigkeiten nicht mehr in den Admin-Einstellungen rum.

"Alle Überprüfungen bestanden!"
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
265
Punkte für Reaktionen
84
Punkte
28
Ein deutliches Indiz für die korrekte Funktion von Redis ist, dass die Tabelle "oc_file_locks" nach der Leerung auch wirklich leer bleibt und im Redis Status reichlich Keys in der Datenbank angelegt werden.

2023-08-09 MariaDB 10_nextcloud_phpMyAdmin 5.2.1.png

2023-08-09 PHP82 Redis Stats.png

Diese Sicherheits- & Einrichtungswarnung ist bei mir erstmalig ab Nextcloud 27.0.0 aufgetreten:
Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern,
richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der Dokumentation.
Der grüne Haken gefällt mir jetzt jedenfalls auch viel besser. ;)

2023-08-09 Übersicht - Verwaltungs-Einstellungen.png
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
@Crashandy Wie kann ich mir die Redis Stats im Browser ansehen?
 

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
265
Punkte für Reaktionen
84
Punkte
28
Ich habe bei mir eine Datei "redis-stats.php" im Ordner "/volume1/web" abgelegt und rufe sie wie folgt auf:
http://ip-vom-nas/redis-stats.php

Diese Datei bekommst Du hier.

Damit Du dort auch die von der Nextcloud verwendete PHP-Version abfragst, muss es vorher wie folgt in der Web Station eingestellt werden.

2023-08-09 NAS-WebStation.png
 
  • Like
Reaktionen: luddi

Crashandy

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
265
Punkte für Reaktionen
84
Punkte
28
Auf dieselbe Art und Weise rufe ich auch den Status vom APCu Cache ab.
Dafür verwende ich die Datei von krakjoe.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat