Nextcloud/Redis: Unterschied zwischen den Versionen

Aus Foxwiki
(Die Seite wurde neu angelegt: „Kategorie:Nextcloud Nextcloud:Redis“)
 
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
== Redis ==
Redis ist ein hervorragender moderner Memcache für verteiltes Caching und als Key-Value-Speicher für Transactional File Locking, da er garantiert, dass zwischengespeicherte Objekte so lange verfügbar sind, wie sie benötigt werden
Das PHP-Modul Redis muss Version 2.2.6+ sein
* Wenn Sie eine Linux-Distribution verwenden, in der die unterstützten Versionen dieses Moduls nicht enthalten sind oder Redis überhaupt nicht enthalten ist, lesen Sie Memcached
Unter Debian/Ubuntu/Mint installieren Sie <code>redis-server</code> und <code>php-redis</code>
* Das Installationsprogramm startet automatisch <code>redis-server</code> und konfiguriert es so, dass es beim Start gestartet wird
Unter CentOS und Fedora installieren Sie <code>redis</code> und <code>php-pecl-redis</code>
* Es wird nicht automatisch gestartet, daher müssen Sie Ihren Dienstmanager verwenden, um<code>redis</code> zu starten und es beim Booten als Daemon zu starten
Sie können mit <code>ps ax</code> überprüfen, ob der Redis-Daemon läuft
ps ax | grep redis
22203 ? Ssl    0:00 /usr/bin/redis-server 127.0.0.1:6379
Starten Sie Ihren Webserver neu, fügen Sie die entsprechenden Einträge in Ihre <code>config.php</code> ein und aktualisieren Sie Ihre Nextcloud-Admin-Seite
=== Redis-Konfiguration in Nextcloud (config.php) ===
Um die beste Leistung zu erzielen, verwenden Sie Redis für die Dateisperrung, indem Sie dies hinzufügen
'memcache.locking' => '\OC\Memcache\Redis',
Außerdem sollten Sie Redis für den verteilten Server-Cache verwenden
'memcache.distributed' => '\OC\Memcache\Redis',
Außerdem könnten Sie Redis für den lokalen Cache verwenden, was aber nicht empfohlen wird (siehe Warnung unten)
'memcache.local' => '\OC\Memcache\Redis',
; Warnung
: Die Verwendung von Redis als lokaler Cache auf einem Multi-Server-System kann zu Problemen führen
* Außerdem sollte APCu (siehe Abschnitt oben) selbst bei einer Ein-Server-Konfiguration schneller sein
Wenn Sie Redis für eine der oben genannten Cache-Einstellungen verwenden, müssen Sie außerdem entweder die <code>redis-</code> oder die <code>redis.cluster-Konfiguration</code> in <code>config.php</code> angeben
Die folgenden Optionen können konfiguriert werden, wenn ein einzelner Redis-Server verwendet wird (alle außer <code>Host</code> und <code>Port</code> sind optional)
* Für die beiden letzteren siehe die nächsten Abschnitte)
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis' ,
'redis' => [
    // 'host'      => see connection parameters below
    // 'port'      => see connection parameters below
  'user'          => 'nextcloud',
  'password'      => 'password',
  'dbindex'      => 0,
  'timeout'      => 1.5,
  'read_timeout'  => 1.5,
],
Die folgenden Optionen können bei der Verwendung eines Redis-Clusters konfiguriert werden (alle außer <code>Seeds</code> sind optional)
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis' ,
'redis.cluster' => [
    'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
      'cache-cluster:7000',
      'cache-cluster:7001',
      'cache-cluster:7002',
      'cache-cluster:7003',
      'cache-cluster:7004',
      'cache-cluster:7005'
    ],
    'failover_mode'  => \RedisCluster::FAILOVER_ERROR,
    'timeout'        => 0.0,
    'read_timeout'    => 0.0,
    'user'            => 'nextcloud',
    'password'        => 'password',
    'dbindex'        => 0,
],
Hinweis
Der Port ist als Teil der Server-URL erforderlich
* Es ist jedoch nicht erforderlich, alle Server aufzulisten: Wenn beispielsweise alle Server über denselben DNS-Namen lastverteilt sind, ist nur dieser Servername erforderlich
=== Verbindung über TCP ===
Um eine Verbindung zu einem entfernten oder lokalen Redis-Server über TCP herzustellen, verwenden Sie
'redis' => [
    'host' => 'redis-host.example.com',
    'port' => 6379,
],
=== Verbindung über TLS ===
Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu
'redis' => [
    'host' => 'tls://127.0.0.1',
    'port' => 6379,
    'ssl_context' => [
      'local_cert' => '/certs/redis.crt',
      'local_pk' => '/certs/redis.key',
      'cafile' => '/certs/ca.crt',
      'verify_peer_name' => false,
    ],
],
=== TLS-Verbindung mit Redis-Cluster ===
Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu
'redis.cluster' => [
    'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
      'cache-cluster:7000',
      'cache-cluster:7001',
    ],
    'ssl_context' => [
      'local_cert' => '/certs/redis.crt',
      'local_pk' => '/certs/redis.key',
      'cafile' => '/certs/ca.crt',
      'verify_peer_name' => false,
    ],
],
=== Verbindung über UNIX-Socket ===
Wenn Sie eine Verbindung zu Redis herstellen möchten, die so konfiguriert ist, dass sie auf einem Unix-Socket lauscht (was empfohlen wird, wenn Redis auf demselben System wie Nextcloud läuft), verwenden Sie diese Beispielkonfiguration<code>config.php</code>
'redis' => [
    'host'    => '/run/redis/redis-server.sock',
    'port'    => 0,
],
Nur die Variablen "host" und "port" sind erforderlich, die anderen sind optional
Aktualisieren Sie die redis-Konfiguration in <code>/etc/redis/redis.conf</code> entsprechend: Entfernen Sie die Unix-Socket-Optionen und stellen Sie sicher, dass die Einstellungen für "socket" und "port" mit Ihrer Nextcloud-Konfiguration übereinstimmen
Stellen Sie sicher, dass Sie die richtigen Berechtigungen für redis.sock setzen, damit Ihr Webserver darauf lesen und schreiben kann
* Dazu müssen Sie normalerweise den Webserver-Benutzer zur redis-Gruppe hinzufügen
usermod -a -G redis www-data
Und ändern Sie die <code>unixsocketperm</code> der <code>redis.conf</code> entsprechend
unixsocketperm 770
Möglicherweise müssen Sie Apache und Redis neu starten, damit die Änderungen wirksam werden
systemctl restart apache2
systemctl restart redis-server
Redis ist sehr konfigurierbar; lesen Sie die Redis-Dokumentation, um mehr zu erfahren
=== Verwendung der Redis-Sitzunghandler ===
Wenn Sie Redis zum Sperren und/oder Zwischenspeichern verwenden, möchten Sie Redis vielleicht auch für die Sitzungsverwaltung nutzen
* Redis kann für die zentrale Sitzungsverwaltung über mehrere Nextcloud-Anwendungsserver hinweg verwendet werden, im Gegensatz zum Standard Handler
* Wenn Sie den Redis-Handler verwenden, ''MÜSSEN'' Sie jedoch sicherstellen, dass die Sitzungssperre aktiviert ist
* Zum jetzigen Zeitpunkt aktiviert der Redis Session Handler standardmäßig ''KEIN'' Session Locking, was in einigen Nextcloud-Applikationen, die stark von Session Writes Gebrauch machen, wie z.B
* Talk, zu Session Corruption führen kann
* Darüber hinaus gibt der Redis-Session-Handler derzeit keinen Fehler zurück, wenn die Anwendung keine Sperre erhält, selbst wenn das Session Locking aktiviert ist
* Durch Hinzufügen der folgenden Einstellungen in Ihrer <code>php.ini-Datei</code> können Sie Sitzungsstörungen verhindern, wenn Sie Redis als Sitzungshandler verwenden
redis.session.locking_enabled=1
redis.session.lock_retries=-1
redis.session.lock_wait_time=10000
Weitere Informationen zur Konfiguration des phpredis Session Handlers finden Sie auf derPhpRedis GitHub Seite
[[Kategorie:Nextcloud]]
[[Kategorie:Nextcloud]]
[[Nextcloud:Redis]]
[[Kategorie:Redis]]

Aktuelle Version vom 15. Juni 2024, 10:33 Uhr

Redis[Bearbeiten | Quelltext bearbeiten]

Redis ist ein hervorragender moderner Memcache für verteiltes Caching und als Key-Value-Speicher für Transactional File Locking, da er garantiert, dass zwischengespeicherte Objekte so lange verfügbar sind, wie sie benötigt werden

Das PHP-Modul Redis muss Version 2.2.6+ sein

  • Wenn Sie eine Linux-Distribution verwenden, in der die unterstützten Versionen dieses Moduls nicht enthalten sind oder Redis überhaupt nicht enthalten ist, lesen Sie Memcached

Unter Debian/Ubuntu/Mint installieren Sie redis-server und php-redis

  • Das Installationsprogramm startet automatisch redis-server und konfiguriert es so, dass es beim Start gestartet wird

Unter CentOS und Fedora installieren Sie redis und php-pecl-redis

  • Es wird nicht automatisch gestartet, daher müssen Sie Ihren Dienstmanager verwenden, umredis zu starten und es beim Booten als Daemon zu starten

Sie können mit ps ax überprüfen, ob der Redis-Daemon läuft

ps ax | grep redis
22203 ? Ssl    0:00 /usr/bin/redis-server 127.0.0.1:6379

Starten Sie Ihren Webserver neu, fügen Sie die entsprechenden Einträge in Ihre config.php ein und aktualisieren Sie Ihre Nextcloud-Admin-Seite

Redis-Konfiguration in Nextcloud (config.php)[Bearbeiten | Quelltext bearbeiten]

Um die beste Leistung zu erzielen, verwenden Sie Redis für die Dateisperrung, indem Sie dies hinzufügen

'memcache.locking' => '\OC\Memcache\Redis',

Außerdem sollten Sie Redis für den verteilten Server-Cache verwenden

'memcache.distributed' => '\OC\Memcache\Redis',

Außerdem könnten Sie Redis für den lokalen Cache verwenden, was aber nicht empfohlen wird (siehe Warnung unten)

'memcache.local' => '\OC\Memcache\Redis',
Warnung
Die Verwendung von Redis als lokaler Cache auf einem Multi-Server-System kann zu Problemen führen
  • Außerdem sollte APCu (siehe Abschnitt oben) selbst bei einer Ein-Server-Konfiguration schneller sein

Wenn Sie Redis für eine der oben genannten Cache-Einstellungen verwenden, müssen Sie außerdem entweder die redis- oder die redis.cluster-Konfiguration in config.php angeben

Die folgenden Optionen können konfiguriert werden, wenn ein einzelner Redis-Server verwendet wird (alle außer Host und Port sind optional)

  • Für die beiden letzteren siehe die nächsten Abschnitte)
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis' ,
'redis' => [
   // 'host'      => see connection parameters below
   // 'port'      => see connection parameters below
  'user'          => 'nextcloud',
  'password'      => 'password',
  'dbindex'       => 0,
  'timeout'       => 1.5,
  'read_timeout'  => 1.5,
],

Die folgenden Optionen können bei der Verwendung eines Redis-Clusters konfiguriert werden (alle außer Seeds sind optional)

'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' =>'\OC\Memcache\Redis' ,
'redis.cluster' => [
   'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
      'cache-cluster:7000',
      'cache-cluster:7001',
      'cache-cluster:7002',
      'cache-cluster:7003',
      'cache-cluster:7004',
      'cache-cluster:7005'
   ],
   'failover_mode'   => \RedisCluster::FAILOVER_ERROR,
   'timeout'         => 0.0,
   'read_timeout'    => 0.0,
   'user'            => 'nextcloud',
   'password'        => 'password',
   'dbindex'         => 0,
],

Hinweis

Der Port ist als Teil der Server-URL erforderlich

  • Es ist jedoch nicht erforderlich, alle Server aufzulisten: Wenn beispielsweise alle Server über denselben DNS-Namen lastverteilt sind, ist nur dieser Servername erforderlich

Verbindung über TCP[Bearbeiten | Quelltext bearbeiten]

Um eine Verbindung zu einem entfernten oder lokalen Redis-Server über TCP herzustellen, verwenden Sie

'redis' => [
   'host' => 'redis-host.example.com',
   'port' => 6379,
],

Verbindung über TLS[Bearbeiten | Quelltext bearbeiten]

Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu

'redis' => [
   'host' => 'tls://127.0.0.1',
   'port' => 6379,
   'ssl_context' => [
      'local_cert' => '/certs/redis.crt',
      'local_pk' => '/certs/redis.key',
      'cafile' => '/certs/ca.crt',
      'verify_peer_name' => false,
   ],
],

TLS-Verbindung mit Redis-Cluster[Bearbeiten | Quelltext bearbeiten]

Um eine Verbindung über TCP over TLS herzustellen, fügen Sie die folgende Konfiguration hinzu

'redis.cluster' => [
   'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
      'cache-cluster:7000',
      'cache-cluster:7001',
   ],
   'ssl_context' => [
      'local_cert' => '/certs/redis.crt',
      'local_pk' => '/certs/redis.key',
      'cafile' => '/certs/ca.crt',
      'verify_peer_name' => false,
   ],
],

Verbindung über UNIX-Socket[Bearbeiten | Quelltext bearbeiten]

Wenn Sie eine Verbindung zu Redis herstellen möchten, die so konfiguriert ist, dass sie auf einem Unix-Socket lauscht (was empfohlen wird, wenn Redis auf demselben System wie Nextcloud läuft), verwenden Sie diese Beispielkonfigurationconfig.php

'redis' => [
   'host'     => '/run/redis/redis-server.sock',
   'port'     => 0,
],

Nur die Variablen "host" und "port" sind erforderlich, die anderen sind optional

Aktualisieren Sie die redis-Konfiguration in /etc/redis/redis.conf entsprechend: Entfernen Sie die Unix-Socket-Optionen und stellen Sie sicher, dass die Einstellungen für "socket" und "port" mit Ihrer Nextcloud-Konfiguration übereinstimmen

Stellen Sie sicher, dass Sie die richtigen Berechtigungen für redis.sock setzen, damit Ihr Webserver darauf lesen und schreiben kann

  • Dazu müssen Sie normalerweise den Webserver-Benutzer zur redis-Gruppe hinzufügen
usermod -a -G redis www-data

Und ändern Sie die unixsocketperm der redis.conf entsprechend

unixsocketperm 770

Möglicherweise müssen Sie Apache und Redis neu starten, damit die Änderungen wirksam werden

systemctl restart apache2
systemctl restart redis-server

Redis ist sehr konfigurierbar; lesen Sie die Redis-Dokumentation, um mehr zu erfahren

Verwendung der Redis-Sitzunghandler[Bearbeiten | Quelltext bearbeiten]

Wenn Sie Redis zum Sperren und/oder Zwischenspeichern verwenden, möchten Sie Redis vielleicht auch für die Sitzungsverwaltung nutzen

  • Redis kann für die zentrale Sitzungsverwaltung über mehrere Nextcloud-Anwendungsserver hinweg verwendet werden, im Gegensatz zum Standard Handler
  • Wenn Sie den Redis-Handler verwenden, MÜSSEN Sie jedoch sicherstellen, dass die Sitzungssperre aktiviert ist
  • Zum jetzigen Zeitpunkt aktiviert der Redis Session Handler standardmäßig KEIN Session Locking, was in einigen Nextcloud-Applikationen, die stark von Session Writes Gebrauch machen, wie z.B
  • Talk, zu Session Corruption führen kann
  • Darüber hinaus gibt der Redis-Session-Handler derzeit keinen Fehler zurück, wenn die Anwendung keine Sperre erhält, selbst wenn das Session Locking aktiviert ist
  • Durch Hinzufügen der folgenden Einstellungen in Ihrer php.ini-Datei können Sie Sitzungsstörungen verhindern, wenn Sie Redis als Sitzungshandler verwenden
redis.session.locking_enabled=1
redis.session.lock_retries=-1
redis.session.lock_wait_time=10000

Weitere Informationen zur Konfiguration des phpredis Session Handlers finden Sie auf derPhpRedis GitHub Seite