frank
Goto Top

Ubuntu: Redisearch v2 Modul für Redis aus dem Source Code selbst bauen

article-picture
Hier eine Anleitung um das Redisearch Modul v2.x für Redis selbst zu kompilieren. Als Binary bekommt man es im Moment nur als Abonnent der Enterprise Version. Per "apt-get" kann man nur das Redisearch Modul v1.x installieren. Version v1.x funktioniert gut, hat aber deutlich weniger Features. Ohne das Abo kann man sich die v2.x Version nur aus dem Quellcode selbst bauen. Die offizielle Doku zum RediSearch Modul findet ihr hier.

RediSearch ist die Suchmaschine bzw. genauer gesagt, der Suchindex für die Redis Datenbank. Er ist aktuell der schnellste Such-Index, den man frei installieren kann.


back-to-topWarum nicht Docker?


Die Firma Redis empfiehlt für RediSearch und Redis ein Docker Install (redis-stack). Ich möchte aber das der Server nativ auf der Maschine läuft, da unsere Produktion bereits virtualisiert ist (KVM). Eine Virtualisierung (Docker) in einer Virtualisierung (KVM) funktioniert natürlich, es geht aber viel Performance verloren und die Bedienung ist gerade in der Entwicklung nicht ganz so komfortabel. Die alternative Installationsmethode per "Docker" findet ihr auf der RediSearch Quickstart Seite

back-to-topVorbereitung, Voraussetzungen zum Kompilieren


  • Getestet unter Ubuntu 22.04
  • Alle Befehle werden unter der Linux-Bash und als User "frank" und nicht direkt als root durchgeführt! Der Hostname des System lautet: "nexus". Wenn "root" gebraucht wird, benutze ich "sudo" dafür.
  • Es wird das Home-Verzeichnis ~/redis für den Quellcode und das Kompilieren benutzt
  • Alle Tools und Programme, die unter Ubuntu 22.04 zur Entwicklung benötigt werden, müssen vorher installiert werden:


back-to-topQuellcode per Git laden



Tip: Das "--recursive" wird gebraucht, um Submodule zu laden.

Will man ein spezielles Release per Git laden kann man das mit der "--branch" Option steuern. Wenn wir z.B. das Redisearch Release 2.4.15 laden wollen:


Das hat den Vorteil, das auch die richtige Versionsnummer von Redisearch im Redis-Log und im "redis-cli" erscheint. Ohne die "--branch"-Angabe erscheint als Version eine 99.99.99 (Git=master-xxx).

back-to-topAbhängigkeiten überprüfen und installieren


Hier wird das User Passwort verlangt (da intern "sudo" aufgerufen wird)


Das Ergebnis sollte so öder ähnlich aussehen:


back-to-topBuild und Linking



Es erscheint eine Abfolge von 1% bis 100% mit ein paar "deprecated:" Warnungen. Diese können ignoriert werden.
Die Ausgabe sollte so starten und so enden:


back-to-topRedis-Server installieren (oder ist dieser bereits vorhanden)?


Für den nächsten Schritt muss Redis installiert sein. Wer den Redis-Server schon auf seinem System installiert hat, kann diesen Schritt überspringen und gleich zum Punkt "RediSearch Modul testen" gehen.

Hier eine kurze Befehlsfolge, wie man den Redis-Server mit Hilfe der offiziellen "redis.io" Pakete unter Ubuntu 22.04 installiert:


Danach ist der Redis-Server und der Redis-Cli installiert und wurde automatisch gestartet. Die Installation kann man mit dem Aufruf "redis-cli " testen.


Folgendes sollte mit einem blinkendem Cursor erscheinen:


Mit dem Befehl "info" kann man sich alle möglichen Informationen zu redis anzeigen lassen:


Mit "exit" kommt man wieder aus dem Redis-Cli.

Mit den "service" Befehlen "start", "restart", "stop" und "status" kann man den Redis-Server starten, restarten, stoppen und den aktuellen Status auslesen. Das Logfile findet man unter "/var/log/redis/redis-server.log".

Redis Starten:

Redis Stoppen:

Redis so einrichten, dass es nach einem Reboot des Servers wieder automatisch startet:

back-to-topRediSearch Modul testen


Bevor es nun weiter geht, muss man den Redis-Server stoppen:


Mit "status" kann man den aktuellen Status auslesen. Es sollte "Active: inactive (dead)" erscheinen.


Jetzt testet man das neu erstellte RediSearch Modul im Verzeichnis "~/redis/RediSearch":


Ausgabe:


Das Modul wurde geladen und der Redis-Server gestartet. In der Ausgabe sollte sich der Eintrag: "Module 'search' loaded from /var/lib/redis/modules/redisearch.so" befinden. Wenn nicht ist irgendwo ein Fehler aufgetreten. Wiederholt dann noch einmal die ersten Schritte der Anleitung.

Mit "Strg"+"c" stoppt man den Redis-Server.

back-to-topRediSearch Modul automatisch beim Start von Redis laden


Das neu erstellet RediSearch Modul befindet sich nach der Erstellung unter:


Wir legen nun unter "/var/lib/redis/" ein Modul-Verzeichnis an und kopieren die neu erstellte Library "redisearch.so" in das erstellte Verzeichnis:


Überprüfen kann man den Kopiervorgang mit:


Das Modul sollte jetzt unter "/var/lib/redis/modules/" erscheinen.

Jetzt passen wir die Redis-Server Konfigurationsdatei (/etc/redis/redis.conf) an. Dabei öffnen wir die Datei und ergänzen sie im Bereich MODULES :


Tipp: Wer den "vi" nicht beherscht, kann den "vi" durch den Befehl "nano" ersetzen. Also "sudo nano /etc/redis/redis.conf"


Die Datei "redis.conf" speichern.

Tipp: Ihr könnt die Redis-Library "redisearch.so" natürlich hinkopieren wo ihr wollt. Ihr müsst nur den entsprechend Pfad unter "loadmodule" anpassen.

Redis-Server neu starten:


Mit "status" kann man den Redis-Server testen und schauen ob alles läuft. Es sollte "Status: "Ready to accept connections" erscheinen.


Im Logfile "/var/log/redis/redis-server.log" sollte der Eintrag: "Module 'search' loaded from /var/lib/redis/modules/redisearch.so" erscheinen.

Hier der Ausschnitt dazu:


back-to-topRedis und RediSearch Modul im Betrieb testen


Der Redis-Server sollten nun laufen, dass RediSearch-Modul erstellt, kopiert und aktiviert sein. Nun testen wir das zur Laufzeit mit Hilfe der "redis-cli":


Wenn das erscheint, habt ihr alles richtig gemacht! Gratulation face-smile

Wer sich für Redis und RediSearch 2 interessiert sollte sich folgendes anschauen bzw. durchlesen:


Es gibt auch mehrere Clients für fast alle Programmiersprachen (PHP, Ruby, Javascript, Go, etc.):


back-to-topFehlersuche


Sollte ein Fehler beim Starten oder Stoppen des Redis-Servers auftreten könnt ihr das über die Befehle:


oder


genau überprüfen. Auch das Redis-Logfile gibt oft eine Antwort auf Fehler:



Über Feedback oder Verbesserungen freue ich mich jederzeit. Wenn Euch die Anleitung gefällt klickt bitte auf das "Herz", als kleines Dankeschön face-smile

Gruß
Frank

Content-Key: 4187625887

Url: https://administrator.de/contentid/4187625887

Printed on: March 23, 2023 at 02:03 o'clock

Mitglied: 117471
117471 Dec 02, 2022 at 18:13:17 (UTC)
Goto Top
Hallo,

funktioniert aber nur bis zum reboot face-wink


Gruß,
Jörg
Member: Frank
Frank Dec 06, 2022 at 10:26:07 (UTC)
Goto Top
Zitat von @117471:

Hallo,

funktioniert aber nur bis zum reboot face-wink


Gruß,
Jörg

Hallo @117471,

da irrst du dich, "systemctl enable" sorgt dafür das es auch nach dem Reboot gestartet wird.
Schau dir dazu mal folgende Seite an: https://wiki.ubuntuusers.de/systemd/systemctl/

Gruß
Frank
Mitglied: 117471
117471 Dec 06, 2022 at 10:35:08 (UTC)
Goto Top
Hallo,

deshalb schrieb ich es ja: Du hast vergessen, deine Installation bootfest zu machen face-wink

Gruß,
Jörg
Member: Frank
Frank Dec 06, 2022 updated at 10:58:49 (UTC)
Goto Top
Zitat von @117471:

Hallo,

deshalb schrieb ich es ja: Du hast vergessen, deine Installation bootfest zu machen face-wink

Gruß,
Jörg

Da es ja per "apt-get install redis" installiert wurde gehe ich davon aus, dass der Dienst bereits "enable" ist. Das habe ich jetzt aber noch nicht geprüft. Aber klar das "enable" kann ich noch in die Anleitung aufnehmen.
Sorry, hatte es beim ersten Mal übersehen, dass ich es oben gar nicht aufgeführt hatte. Ich habe es in der Anleitung ergänzt. Danke.

Gruß
Frank