Redis ist ein Open-Source-In-Memory-Cache- und Speichersystem, das auch als Datenstrukturen-Server bezeichnet wird. Es bietet erweiterte Unterstützung für verschiedene Datentypen wie Hashes, Listen, Sets, Bitmaps und viele mehr. Aufgrund seiner hervorragenden Leistung ist Redis in führenden Branchen und Top-MNCs sehr beliebt.
Vorteile von Redis
Wenn es um Geschwindigkeit geht, sind Redis-Server unschlagbar. Als NoSQL-Datenbankserver bietet er eine fantastische Geschwindigkeit beim Speichern und Abrufen von Daten. Darüber hinaus verfügt Redis über herausragende Funktionen, die das Arbeiten mit verschiedenen, auch komplexen Daten nahtlos machen. Die Benutzerfreundlichkeit und die hochentwickelten Funktionen von Redis haben es nicht nur aus der Masse herausgehoben, sondern auch seine zunehmende Standardisierung als Mainstream-Datenbank für Unternehmen und Privatanwender ermöglicht.
Im Folgenden beschreiben wir die Schritte, die Ihnen bei der Installation von Redis auf Ubuntu 20.04 helfen. In diesem Tutorial erhalten Sie alle Informationen, die Sie benötigen, von der Installation bis zur Konfiguration eines externen Redis-Servers, der als Session-Handler für eine unter Ubuntu 20.04 ausgeführte PHP-Anwendung verwendet werden soll.
Erste Schritte
Um die Schritte durchzugehen, benötigen Sie zwei verschiedene Datenbankserver (Droplets), die sich im selben Rechenzentrum befinden und für die ein privates Netzwerk aktiviert ist. Dazu gehören:
-
Ein PHP-Webserver, auf dem LAMP und LEMP unter Ubuntu 20.04 laufen – wir werden diesen Server als web.
-
Ein zweiter, sauberer Ubuntu 20.04-Server, auf dem Redis installiert wird – wir werden diesen Server als redis.
Schritt 1 — Installation des Redis-Servers
Unser erster Schritt ist die Installation des Redis-Servers auf Ubuntu 20.04. Stellen Sie anschließend sicher, dass der Server auf unserem redis-Droplet läuft.
In diesem Tutorial werden wir Personal Package Archives (PPAs) verwenden. Aus Sicherheitsgründen empfehlen wir dringend die Verwendung von PPAs. Im Vergleich zu anderen Repositories von Drittanbietern sind PPAs stabil, einfach zu installieren und vor allem für Ubuntu-Benutzer konzipiert. Mit PPAs erhalten Sie die neueste verfügbare Softwareversion, selbst für Software, die Sie in den offiziellen Ubuntu-Repositories nicht finden.
Die Verwendung von PPAs aus einer nicht autorisierten Quelle ist ein absolutes No-Go. Stellen Sie sicher, dass Sie die PPAs nur aus authentischen und verifizierten Quellen beziehen. Sie können das PPA-Repository mit folgendem Befehl hinzufügen:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Drücken Sie die Enter-Taste zur Bestätigung. Nach der Bestätigung aktualisieren wir den Cache des Paketmanagers mit dem folgenden Befehl:
|
1 |
sudo apt-get update |
Als Nächstes installieren wir Redis mit dem Befehl:
|
1 |
sudo apt-get install redis-server |
Sobald Sie den Befehl ausführen, ist Redis auf Ihrem Server installiert. Lassen Sie uns die Installation mit dem folgenden Befehl testen:
|
1 |
redis-cli ping |
Sobald Sie den Befehl absenden, sehen Sie eine Redis-Instanz, die auf dem localhost auf Port 6379 läuft. Außerdem wird eine Antwort namens PONG ausgegeben. Wenn Sie dies sehen, bedeutet das, dass Sie den ersten Schritt erfolgreich abgeschlossen haben. Eine ausführliche Anleitung zur Installation und Absicherung von Redis finden Sie in unserem Tutorial So installieren und sichern Sie Redis auf Ubuntu 18.04.
Fahren wir nun mit dem nächsten Schritt fort – der Konfiguration von Redis.
Schritt 2 — Redis-Konfiguration zur Annahme externer Verbindungen
Das Hauptziel der Konfiguration von Redis besteht darin, externe Verbindungen zu akzeptieren. Warum? Weil Redis standardmäßig nur Verbindungen zu localhost zulässt und Verbindungen von überall sonst eingeschränkt sind. Einfach ausgedrückt haben Sie nur Zugriff von innerhalb des Servers, auf dem Sie Redis installiert haben.
Verschaffen Sie sich zunächst einen detaillierten Einblick in Ihre Netzwerkschnittstellen mit dem ifconfig-Befehl:
|
1 |
sudo ifconfig |
Sie erhalten die folgende Ausgabe:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Link encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet addr:188.166.77.33 Bcast:188.166.127.255 Mask:255.255.192.0 inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3497 errors:0 dropped:0 overruns:0 frame:0 TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4895060 (4.8 MB) TX bytes:619070 (619.0 KB) eth1 Link encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet addr:10.133.14.9 Bcast:10.133.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:648 (648.0 B) TX bytes:578 (578.0 B) |
An der eth1-Schnittstelle finden Sie die inet_addr. Hier haben wir 10.133.14.9. Wir werden diese IP-Adresse in den folgenden Schritten verwenden, um eine Verbindung zum redis-Server vom web-Server aus herzustellen.
Schritt 3 — Localhost-Bindung
Es steht Ihnen frei, den Code-Editor Ihrer Wahl zu verwenden (Atom und Visual Studio Code sind die beliebtesten).
Öffnen Sie nun die Datei /etc/redis/redis.conf und suchen Sie nach der Zeile, die die bind-Definition enthält. Sie sollten Ihre private Netzwerk-IP-Adresse zu der Zeile hinzufügen:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Möglicherweise sehen Sie localhost, anstelle von 127.0.0.1. Keine Sorge, Sie müssen nur Ihre private IP-Adresse hinzufügen. Starten Sie als Nächstes den Redis-Dienst neu, um die Änderungen zu übernehmen. Verwenden Sie den folgenden Befehl, um den redis-Server neu zu starten:
|
1 |
sudo service redis-server restart |
Benutzer, die Redis über die One-Click-Anwendung installiert haben, verwenden den unten aufgeführten Befehl, um ihren Server neu zu starten:
|
1 |
sudo service redis restart |
Sobald Sie den redis-Server neu starten, verbindet sich jeder im selben privaten Netzwerk vorhandene Server automatisch mit dieser Redis-Instanz, ohne dass dies einzeln durchgeführt werden muss.
Schritt 4 — Einrichtung des Redis-Server-Passworts
Sie können diesen Schritt überspringen, wenn Sie die Redis-Installation zu Übungs- oder Schulungszwecken nutzen. Das Einrichten des Passworts für den redis-Server wird jedoch dringend empfohlen, wenn Sie Ihrer Redis-Installation eine zusätzliche Sicherheitsebene hinzufügen möchten. Lassen Sie uns dieselbe Konfigurationsdatei wie im vorherigen Schritt ändern. Verwenden Sie zum Bearbeiten den Befehl:
|
1 |
sudo vim /etc/redis/redis.conf |
Heben Sie die Auskommentierung der Zeile auf, die requirepass enthält, und legen Sie ein starkes Passwort fest:
|
1 |
requirepass StrongPassword |
Starten Sie den Redis-Dienst neu, damit die vorgenommenen Änderungen wirksam werden. Verwenden Sie den Befehl zum Neustarten:
|
1 |
sudo service redis-server restart |
Schritt 5 — Testen der Redis-Verbindung und -Authentifizierung
In diesem Schritt werden wir uns mit dem Redis-Dienst von innerhalb der redis-Maschine verbinden, um sicherzustellen, dass alle vorgenommenen Änderungen wie erwartet reibungslos funktionieren. Verwenden Sie zum Verbinden den folgenden Befehl:
|
1 |
redis-cli -h 10.133.14.9 |
Hier wird es auch dann ausgeführt, wenn Sie die Angabe des Hostnamens überspringen. Unser Hauptziel ist es, sicherzustellen, dass der Redis-Dienst die Verbindungen reibungslos akzeptiert:
|
1 |
10.133.14.9:6379> |
Es ist möglich, dass Sie einen AUTH-Fehler erhalten, wenn Sie versuchen, mit dem definierten Passwort auf die Daten zuzugreifen:
|
1 |
10.133.14.9:6379> keys * |
Ihre Ausgabe wird in etwa so aussehen:
|
1 2 |
AUSGABE: (error) NOAUTH Authentication required. |
Führen Sie zur Authentifizierung den Befehl AUTH zusammen mit demselben Passwort aus, das Sie in der Datei /etc/redis/redis.conf definiert haben:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Führen Sie als Nächstes den Befehl erneut aus:
|
1 |
10.133.14.9:6379> keys * |
Dieses Mal erhalten Sie als Antwort ein OK anstelle eines Fehlers. Sie erhalten die folgende Ausgabe:
|
1 2 |
AUSGABE: (empty list oder set) |
Die Ausgabe empty list oder set bedeutet, dass der Redis-Server leer ist. Das liegt daran, dass wir den Webserver noch nicht als Session-Handler konfiguriert haben.
Hinweis: Bevor wir fortfahren, stellen Sie sicher, dass die SSH-Sitzung geöffnet und mit der redis-cli verbunden ist. In den folgenden Schritten werden wir zur redis-cli-Eingabeaufforderung zurückkehren, um zu überprüfen, ob die Sitzungsdaten ordnungsgemäß gespeichert wurden, nachdem wir die erforderlichen Änderungen am web-Server vorgenommen haben.
Schritt 6 — Installation der Redis-Erweiterung auf dem Webserver
Die nächsten Schritte sollten auf dem web-Server ausgeführt werden. Wir müssen die PHP-Redis-Erweiterung installieren, damit sich PHP mit dem Redis-Server verbinden kann.
Aktualisieren Sie zunächst den Cache Ihres Paketmanagers, indem Sie folgenden Befehl ausführen:
|
1 |
sudo apt-get update |
Installieren Sie als Nächstes das Paket php5-redis :
|
1 |
sudo apt-get install php5-redis |
Sie sind bereit, eine Verbindung zu Redis herzustellen.
Schritt 7 — Einrichtung von Redis als Standard-Session-Handler auf dem Webserver
PHP verfügt über einen Standard-Session-Handler. In diesem Schritt werden wir die Datei php.ini auf dem web-Server bearbeiten, um die Standardeinstellungen zu ändern. Der Speicherort der Datei php.ini hängt vom aktuellen Stack ab:
-
Für einen LAMP-Stack auf Ubuntu 20.04 verwenden Sie: /etc/php5/apache2/php.ini.
-
Für einen LEMP-Stack auf Ubuntu 20.04 lautet der Pfad normalerweise /etc/php5/fpm/php.ini.
Wenn Sie sich über den Speicherort Ihrer Hauptdatei php.ini unsicher sind, nutzen Sie die Funktion phpinfo(). Fügen Sie den folgenden Code in eine Datei namens info.php in Ihrem Web-Root-Verzeichnis ein:
|
1 2 |
<?php phpinfo(); |
Wenn Sie über Ihren Browser auf das Skript zugreifen, suchen Sie nach der Zeile, die „Loaded Configuration File“ enthält. Dort finden Sie den genauen Speicherort der geladenen Hauptdatei php.ini. Stellen Sie sicher, dass Sie die Datei info.php entfernen, da sie sensible Informationen über Ihre Umgebung enthält.
Öffnen Sie danach die Datei php.ini und suchen Sie nach der Zeile, die session.save_handler enthält. Der Standardwert ist files, stellen Sie sicher, dass Sie diesen in redis.
In LAMP-Umgebungen:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
In LEMP-Umgebungen:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Heben Sie als Nächstes die Auskommentierung von session.save_path auf und ändern Sie den Wert so, dass er die Redis-Verbindungszeichenfolge enthält. Der Inhalt muss dem folgenden Format entsprechen:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Verwenden Sie das Passwort, das wir in Schritt 4. eingerichtet haben. Falls Sie das festgelegte Passwort nicht verwenden, geben Sie bei der Konfiguration von Redis den Parameter auth an. Speichern Sie nun die Datei und starten Sie php Dienst auf beiden Umgebungen.
Auf LAMP-Umgebungen:
|
1 |
sudo service apache2 restart |
Auf LEMP-Umgebungen:
|
1 |
sudo service php5-fpm restart |
Schritt 8 — Testen der Redis-Sitzungsverwaltung
Im letzten Schritt benötigen wir ein PHP-Skript oder eine PHP-Anwendung, um sicherzustellen, dass Ihre Sitzungen nun von Redis verwaltet werden. Wir werden ein einfaches Skript verwenden, das einen Zähler implementiert – jedes Mal, wenn Sie die Seite neu laden, wird die angezeigte Zahl erhöht.
Erstellen Sie eine Datei namens demo.php auf dem web-Server und speichern Sie diese in Ihrem Document-Root-Verzeichnis:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Ändern Sie dann das /usr/share/nginx/html, um Ihren Document-Root-Pfad widerzuspiegeln:
|
1 2 3 4 5 6 7 |
<?php //einfacher Zähler zum Testen von Sitzungen. Sollte bei jedem Neuladen der Seite erhöht werden. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Als Nächstes müssen Sie Ihren Browser auf http://web/demo.php richten, um auf das Skript zuzugreifen. Das Programm erhöht die Zahl jedes Mal, wenn Sie die Seite neu laden.
Jetzt werden die Sitzungsinformationen auf dem Redis-Server gespeichert. Zur Überprüfung müssen Sie zu Ihrer SSH-Sitzung auf der redis-Maschine zurückkehren und die redis-cli verwenden. Rufen Sie den Inhalt noch einmal ab mit keys *:
|
1 |
10.133.14.9:6379> keys * |
Sie sehen die folgende Ausgabe:
|
1 2 |
AUSGABE: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
Die Ausgabe bestätigt, dass alle Informationen sicher auf dem redis-Server gespeichert sind. Wenn Sie zusätzliche web-Server verbinden möchten, können Sie auf dieselbe Weise vorgehen.
Fazit
Redis ist eine NoSQL-Datenbank, die die Speicherung zahlreicher unstrukturierter Daten ermöglicht. Nur wenige Datenbanken können mit den Funktionalitäten und der Einfachheit des redis-Servers mithalten. Seine wachsende Beliebtheit macht ihn kontinuierlich zu einem Must-have mit wenigen Alternativen im Vergleich zu seinen umfangreichen Funktionen.
Um Ihr Wissen über PHP-Anwendungen und deren Nutzung weiter zu vertiefen, können Sie einen Blick auf die folgenden Tutorials in unserem Blog werfen:
- Bereitstellen einer PHP-Anwendung auf einem Kubernetes-Cluster mit Ubuntu 18.04
- Installation von phpBB auf Ubuntu 20.04
- Installation und Absicherung von phpMyAdmin auf Ubuntu 18.04
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.