Redis als Sessionhandler für PHP und Nextcloud

Auf einigen Servern, häufig bei V-Servern, kann sich das Session Handling per „File“ sehr zäh und träge anfühlen. Dem kann mit einem RAM basierten Handler entgegen gewirkt werden. Wir präferieren, u.a. aufgrund der Performance, Stabilität und Session-Persistenz eindeutig Redis als PHP-Sessionhandler. Dieser Anleitung setzen wir die Installation und Konfiguration von PHP, Redis und ggf. Nextcloud nach dieser Anleitung voraus:

  1. PHP
  2. Redis
  3. config.php

Stoppen Sie zuerst alle Nextcloud relevanten Dienste:

systemctl stop nginx.service php8.0-fpm.service redis.service mariadb.service

Kopieren Sie die PHP.INI Datei und öffnen diese dann

cp /etc/php/8.0/fpm/php.ini /etc/php/8.0/fpm/php.ini.bak
nano /etc/php/8.0/fpm/php.ini

Bearbeiten Sie die Datei wie folgt, also kommentieren Sie die Zeile (#session.save_handler = files) aus und fügen die zwei rot hervorgehobenen Zeilen hinzu:

[...]
#session.save_handler = files
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?database=10"
redis.session.locking_enabled = 1
redis.session.lock_retries = -1
redis.session.lock_wait_time = 10000
[...]

Speichern Sie diese Änderungen und schließen diese Datei. Kopieren Sie dann die REDIS.CONF und bearbeiten diese ebenfalls:

cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
nano /etc/redis/redis.conf

Kommentieren Sie die Zeile „# port 0″ aus und fügen die rot hervorgehobene Zeile „port 6379“ hinzu.

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
# port 0
port 6379

# TCP listen() backlog

Speichern Sie diese Änderungen und schließen Sie diese Datei. Nach einem Neustart der zuvor beendeten Dienste

systemctl restart nginx.service php8.0-fpm.service redis.service mariadb.service

profitieren Sie bereits von REDIS, als neuen PHP-Sessionhandler. Für Nextcloud muss noch die config.php angepasst werden.

nano /var/www/nextcloud/config/config.php
[...]
 'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => 6379,
    'timeout' => 0.5,
    'dbindex' => 1,
  ),
[...]

Sie können die Funktionalität live überprüfen. Rufen Sie den Redis-Client auf

redis-cli -s /var/run/redis/redis-server.sock

und Starten den integrierten Monitor:

MONITOR

Das war es schon – viel Spaß damit! Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!