Die Seite wurde zuletzt überarbeitet am:

Friendica-Performance mit Redis unter Debian 12 optimieren

Heute gibt es mal eine "kurze" Anleitung, wie ich Redis in Linux unter Debian 12 installiert und in Friendica eingebunden habe.

 

Diese Anleitung basiert auf Karsten Riegers https://www.c-rieger.de/nextcloud-installationsanleitung/ (Abschnitt 4. Installation und Konfiguration von Redis).

 

In meinem Beispiel verwende ich Apache2, PHP-FM und MariaDB.

 

Zuerst den Redis-Server installieren:

sudo apt install -y redis-server

 

Nun eine Backup-Datei erstellen:

sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak

 

Den Standard-Port deaktivieren:

sudo sed -i 's/port 6379/port 0/' /etc/redis/redis.conf

 

Unix-Socket aktivieren:

sudo sed -i s/\#\ unixsocket/\unixsocket/g /etc/redis/redis.conf

 

Socket-Berechtigungen anpassen:

sudo sed -i 's/unixsocketperm 700/unixsocketperm 770/' /etc/redis/redis.conf

 

Maximale Clients erhöhen:

sudo sed -i 's/# maxclients 10000/maxclients 10240/' /etc/redis/redis.conf

 

In dieser Zeile muss bei "HierKommtDeinPasswortHin" ein eigenes, sicheres Passwort eingegeben werden:

sudo sed -i 's/# requirepass foobared/requirepass HierKommtDeinPasswortHin/' /etc/redis/redis.conf

 

Webserver-Benutzer (www-data) zur Redis-Gruppe hinzufügen:

sudo usermod -aG redis www-data

 

Ein Backup erstellen:

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak

 

Kernel-Einstellung für Redis optimieren:

sudo sed -i '$avm.overcommit_memory = 1' /etc/sysctl.conf

 

PHP-Redis-Erweiterung installieren (bitte die Versionsnummer für die eigene PHP-Version anpassen):

sudo apt install php8.2-redis

 

 

Danach einmal den kompletten Server neustarten:

sudo reboot now

 

Nach dem Neustart des Servers prüfen, ob Redis läuft:

sudo systemctl status redis-server

 

Bei Fehlern in die Logs schauen (mit "q" beenden):

sudo journalctl -u redis-server

 

Nun Redis in Friendica hinzufügen, dafür die Konfigurations-Datei von Friendica öffnen (Pfad ggf. anpassen):

sudo nano /var/www/html/friendica/config/local.config.php

 

Im Abschnitt 'system', der bei mir beispielhaft so aussieht:

'system' => [
                'default_timezone' => 'Europe/Berlin',
                'language' => 'de',
                'url' => 'https://deinedomain.de',
        ],

 

folgendes hinzufügen (auch hier das individuelle Passwort eingeben!):

'cache_driver' => 'redis',
'lock_driver'  => 'redis',
'redis_host'     => '/var/run/redis/redis-server.sock',
'redis_port'   => 0,
'redis_db'       => 0,
'redis_password' => 'HierKommtDeinPasswortHin'

 

Das sollte dann (beispielhaft!) so aussehen:

'system' => [
                'default_timezone' => 'Europe/Berlin',
                'language' => 'de',
                'url' => 'https://deinedomain.de',
                'pidfile' => '/var/www/html/friendica/pids/daemon.pid',
                'cache_driver' => 'redis',
                'lock_driver'  => 'redis',
                'redis_host'     => '/var/run/redis/redis-server.sock',
                'redis_port'   => 0,
                'redis_db'       => 0,
                'redis_password' => 'HierKommtDeinPasswortHin'
        ],

 

Bitte achte darauf, dass hinter dem letzten Eintrag in diesem Abschnitt ('HierKommtDeinPasswortHin') kein Komma gehört!

 

Die Datei nun Speichern (Strg + O, Enter) und schließen (Strg + X).

 

Nun einmal Apache2 neustarten:

sudo systemctl restart apache2

Ebenso PHP-FM:

sudo systemctl restart php8.2-fpm

 

Um zu testen, ob Friendica nun mit Redis funktioniert mit dem Redis-Client verbinden (bitte auch hier das eigene Passwort benutzen!):

sudo redis-cli -s /var/run/redis/redis-server.sock -a HierKommtDeinPasswortHin

 

Dann erscheint folgende Meldung (die ignoriert werden kann):

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

 

In diesem Prompt:

redis /var/run/redis/redis-server.sock>

folgendes eingeben:

MONITOR

Als Rückmeldung sollte die Meldung:

OK

erscheinen.

 

Das Terminal so geöffnet lassen und im Webbrowser ein paar Seiten der Friendica-Instanz aufrufen. Nun sollten es im Terminal (beispielhaft) so aussehen:

1744001449.962000 [0 unix:/run/redis/redis-server.sock] "AUTH" "(redacted)"
1744001449.968793 [0 unix:/run/redis/redis-server.sock] "GET" "deinedomain.de:lock:worker_process"
1744001449.968910 [0 unix:/run/redis/redis-server.sock] "EXISTS" "deinedomain.de:lock:worker_process"
1744001449.969016 [0 unix:/run/redis/redis-server.sock] "SETNX" "deinedomain.de:lock:worker_process" "i:0;"
1744001449.969080 [0 unix:/run/redis/redis-server.sock] "WATCH" "deinedomain.de:lock:worker_process"
1744001450.021151 [0 unix:/run/redis/redis-server.sock] "GET" "deinedomain.de:getInfoFromURL:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
1744001450.021264 [0 unix:/run/redis/redis-server.sock] "EXISTS" "deinedomain.de:getInfoFromURL:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

 

Dieser Test kann mit Strg+C abgebrochen werden. Nun sollte im Terminal wieder der Prompt zu sehen sein:

redis /var/run/redis/redis-server.sock>

 

Hier:

INFO

eingeben.

 

Nun werden Informationen über Redis aufgelistet, wie z.B. Versionsnummer und weiteres.

 

Jetzt noch:

DBSIZE

eingeben, hier sollte ein Wert größer als 0 stehen, z.B. (integer) 123 oder ähnliches.

 

Als letztes

exit

eingeben.

 

Mittels btop oder htop kann man nun sehr schön sehen, wie der Speicherverbrauch als auch die Systemauslastung gesunken ist. Desweiteren sollten sich die Ladezeiten der Friendica-Instanz verbessern.