Redis: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(→‎Konfiguration: daemonize yes/no, absolute Pfade)
KKeine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 14: Zeile 14:
Nach dem Login als ''xyz00-service'' lege ich Verzeichnisse ''~/redis/etc'' und ''~/redis/var'' an:
Nach dem Login als ''xyz00-service'' lege ich Verzeichnisse ''~/redis/etc'' und ''~/redis/var'' an:


xyz00-service@h00:~$ mkdir redis
<syntaxhighlight lang="shell">
xyz00-service@h00:~$ mkdir redis/etc
mkdir -p redis/{etc,var}
xyz00-service@h00:~$ mkdir redis/var
</syntaxhighlight>


Im etc-Verzeichnis wird die Konfigurationsdatei ''redis.conf'' für den Redis-Dienst abgelegt.
Im etc-Verzeichnis wird die Konfigurationsdatei ''redis.conf'' für den Redis-Dienst abgelegt.
Zeile 22: Zeile 22:
Eine Beispiel-Konfiguration ist:
Eine Beispiel-Konfiguration ist:


daemonize yes
<syntaxhighlight lang="shell" line>
pidfile /home/pacs/XYZ00/users/NAME/redis/var/redis-server.pid
requirepass <generiertes-passwort>
requirepass 'generiertes-passwort'
bind 127.0.0.1
bind 127.0.0.1
port 33033
port 33033
tcp-backlog 128
tcp-backlog 128
timeout 300
timeout 300
loglevel notice
loglevel notice
logfile /home/pacs/xyz00/users/service/redis/var/redis.log
logfile /home/pacs/XYZ00/users/NAME/redis/var/redis.log
databases 16
databases 16
save 900 1
save 900 1
save 300 10
save 300 10
save 60 10000
save 60 10000
slave-serve-stale-data yes
slave-serve-stale-data yes
appendonly no
appendonly no
dbfilename dump.rdb
dbfilename dump.rdb
dir /home/pacs/xyz00/users/service/redis/var/
dir /home/pacs/XYZ00/users/NAME/redis/var
</syntaxhighlight>


Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port ''33033'' für die Netzwerk-Schnittstelle muss ggf. angepasst werden.
Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port ''33033'' für die Netzwerk-Schnittstelle muss ggf. angepasst werden.
Zeile 44: Zeile 44:
Der Dienst wird gestartet mit:
Der Dienst wird gestartet mit:


xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf
<syntaxhighlight lang="shell">
xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf
</syntaxhighlight>


Mit Ctrl-C kann der Dienst wieder gestoppt werden.
Mit Ctrl-C kann der Dienst wieder gestoppt werden.
Zeile 50: Zeile 52:
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:
Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:


unixsocket var/redis-server.sock
<syntaxhighlight lang="shell" line>
unixsocketperm 700
unixsocket /home/pacs/xyz00/users/service/redis/var/redis-server.sock
port 0
unixsocketperm 700
daemonize no
port 0
</syntaxhighlight>
 
(der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!)


=== Einrichtung als Server-Dienst ===
=== Einrichtung als Server-Dienst ===
Zeile 61: Zeile 66:
Dazu wird im Verzeichnis ''~/.config/systemd/user'' eine Datei ''redis.service'' mit dem folgenden Inhalt angelegt:
Dazu wird im Verzeichnis ''~/.config/systemd/user'' eine Datei ''redis.service'' mit dem folgenden Inhalt angelegt:


[Unit]
<syntaxhighlight lang="ini" line>
Description=Redis Service
[Unit]
Description=Redis Service
[Service]
 
WorkingDirectory=%h/redis
[Service]
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
WorkingDirectory=%h/redis
ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Restart=always
ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf
PrivateTmp=true
Restart=always
NoNewPrivileges=true
PrivateTmp=true
NoNewPrivileges=true
[Install]
 
WantedBy=default.target
[Install]
WantedBy=default.target
</syntaxhighlight>


Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:
Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:


systemctl --user daemon-reload
<syntaxhighlight lang="shell">
systemctl --user enable redis.service
systemctl --user daemon-reload
systemctl --user start redis.service
systemctl --user enable --now redis.service
</syntaxhighlight>


Mit den Kommandos
Mit den Kommandos


systemctl --user status  
<syntaxhighlight lang="shell">
systemctl --user status redis.service
systemctl --user status  
systemctl --user status redis.service
</syntaxhighlight>


kann der Status des Dienstes ermittelt werden.
kann der Status des Dienstes ermittelt werden.
Zeile 90: Zeile 100:
=== Links ===
=== Links ===


* [https://redis.io/ Internetseite des Redis Projekts]
* [https://redis.io/ Internetseite des Redis Projekts]


----
----

Aktuelle Version vom 15. Juli 2024, 10:15 Uhr

Redis installieren

Redis ist ein einfacher Datenspeicher für Schlüssel-Wert-Paare. Datensätze werden jeweils unter einem Schlüssel abgelegt. Die Daten werden jeweils im Hauptspeicher gehalten und nur zu konfigurierbaren Zeitpunkten auf die Festplatte gesichert.

Redis-Datenbanken werden häufig zur Speicherung von Warteschlangen benutzt. In Redis werden Aufträge gespeichert, die asynchron von Hintergrundprogrammen abgearbeitet werden.

Konfiguration

Redis ist auf den Hostsharing-Servern vorinstalliert. Für die Nutzung muss lediglich eine Konfigurationsdatei angelegt werden und ein Hitergrundprogramm gestartet werden.

Im folgenden wird für den User xyz00-service ein Redis-Dienst eingerichtet. Der User xyz00-service ist in HSAdmin mit /bin/bash als Shell eingerichtet.

Nach dem Login als xyz00-service lege ich Verzeichnisse ~/redis/etc und ~/redis/var an:

mkdir -p redis/{etc,var}

Im etc-Verzeichnis wird die Konfigurationsdatei redis.conf für den Redis-Dienst abgelegt.

Eine Beispiel-Konfiguration ist:

requirepass <generiertes-passwort>
bind 127.0.0.1
port 33033
tcp-backlog 128
timeout 300
loglevel notice
logfile /home/pacs/xyz00/users/service/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
slave-serve-stale-data yes
appendonly no
dbfilename dump.rdb
dir /home/pacs/xyz00/users/service/redis/var/

Der Redis-Dienst ist über die Server-lokale Netzwerk-Adresse 127.0.0.1 erreichbar und mit einem Passwort geschützt. Der Port 33033 für die Netzwerk-Schnittstelle muss ggf. angepasst werden.

Der Dienst wird gestartet mit:

xyz00-service@h00:~/redis$ /usr/bin/redis-server etc/redis.conf

Mit Ctrl-C kann der Dienst wieder gestoppt werden.

Alternativ kann der zugriff auf Redis über einen Unixsocket erfolgen. Dann entfällt die Zeile 'bind 127.0.0.1' in der Konfiguration, der port wird auf 0 gesetzt. Stattdessen wir ein Unixsocket konfiguriert:

unixsocket /home/pacs/xyz00/users/service/redis/var/redis-server.sock
unixsocketperm 700
port 0

(der Unixsocket benötigt in der Konfiguration den vollständigen absoluten Pfad zum Socket im Dateisystem!)

Einrichtung als Server-Dienst

Redis soll über den Systemdienst SystemD automatisch im Hintergrund gestartet werden.

Dazu wird im Verzeichnis ~/.config/systemd/user eine Datei redis.service mit dem folgenden Inhalt angelegt:

[Unit]
Description=Redis Service

[Service]
WorkingDirectory=%h/redis
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=/usr/bin/redis-server %h/redis/etc/redis.conf
Restart=always
PrivateTmp=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

Die Datei wird mit den folgenden Shell-Kommandos geladen und aktiviert:

systemctl --user daemon-reload
systemctl --user enable --now redis.service

Mit den Kommandos

systemctl --user status 
systemctl --user status redis.service

kann der Status des Dienstes ermittelt werden.

Links