Kürzlich habe ich von SpamAssassin auf rspamd umgestellt, weil ich mit den Filterergebnissen nicht zufrieden war. Rspamd setzt auf Redis-Datenbanken als Backend und benötigt mehrere Instanzen von Redis.
Wir erstellen 3 Redis Instanzen: bayes
, fuzzy
undredis
für den restlichen cache:
instance | Redis socket |
---|---|
redis |
localhost:6379 |
bayes |
localhost:6378 |
fuzzy |
localhost:6377 |
Installation
Zuerst Redis installieren:
# sudo apt update
# sudo apt install redis-server
Suchen Sie in der Datei /etc/redis/redis.conf
die Anweisung supervised
. Mit dieser Anweisung können Sie ein Init-System deklarieren, um Redis als Dienst zu verwalten. Damit erhalten Sie mehr Kontrolle über seine Funktion. Die Anweisung supervised
ist standardmäßig auf no
eingestellt. Da Ubuntu das Init-System systemd verwendet, ändern Sie die Anweisung zu system
:
supervised systemd
Zum Übernehmen der Änderungen Redis neu starten:sudo systemctl restart redis.service
Nun kann mit sudo systemctl status redis
getestet werden, ob Redis fehlerfrei läuft.
Weitere Instanzen einrichten
Erstelle seperate Verzeichnisse für die neuen Instanzen:
cd /var/lib/redis && mkdir bayes fuzzy && chown -R redis.redis bayes fuzzy
Für die Bayes-Instanz: cp /etc/redis/redis.conf /etc/redis/redis-bayes.conf
und chown redis.redis /etc/redis/redis-bayes.conf
, dann folgendermaßen editieren:
port = 6378
pidfile /var/run/redis/redis-bayes.pid
logfile /var/log/redis/redis-bayes.log
dir /var/lib/redis/bayes
Redis Init Script kopieren:
sudo cp /etc/init.d/redis-server /etc/init.d/redis-bayes
und File folgendermaßen editieren:
#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-bayes
...
DAEMON_ARGS=/etc/redis/redis-bayes.conf
...
NAME=redis-bayes
DESC=redis-bayes
...
PIDFILE=$RUNDIR/redis-bayes.pid
Jetzt noch das neue Redis Init-Script zum default Runlevel hinzufügen, damit das Script beim Neustart sofort gestartet wird:
sudo update-rc.d redis-bayes defaults
Fertig! Jetzt ausprobieren, ob das neue Script fehlerfrei startet:
sudo /etc/init.d/redis-bayes start
____
Nun das gleiche nochmal für die Fuzzy-Instanz: cp /etc/redis/redis.conf /etc/redis/redis-fuzzy.conf
und chown redis.redis /etc/redis/redis-fuzzy.conf
, dann folgendermaßen editieren:
port = 6377
pidfile /var/run/redis/redis-fuzzy.pid
logfile /var/log/redis/redis-fuzzy.log
dir /var/lib/redis/fuzzy
Redis Init Script kopieren:
sudo cp /etc/init.d/redis-server /etc/init.d/redis-fuzzy
und File folgendermaßen editieren:
#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-fuzzy
...
DAEMON_ARGS=/etc/redis/redis-fuzzy.conf
...
NAME=redis-fuzzy
DESC=redis-fuzzy
...
PIDFILE=$RUNDIR/redis-fuzzy.pid
Jetzt noch das neue Redis Init-Script zum default Runlevel hinzufügen, damit das Script beim Neustart sofort gestartet wird:
sudo update-rc.d redis-fuzzy defaults
Fertig! Jetzt ausprobieren, ob das neue Script startet:
sudo /etc/init.d/redis-fuzzy start
So kann man checken, ob Redis auf dem entsprechenden Port läuft:
redis-cli -p 6377 ping
redis-cli -p 6378 ping
oderredis-cli ping
für Standardport 6379
Ein anderer Weg wäre mit lsof nach dem entsprechenden Port zu suchen und zu sehen, ob Redis dort lauscht.
lsof -i:6379