ILIAS-Tricks not only for Schools
ILIAS: Lucene RPC-Server und Chat installieren
Diese Anleitung ist bis auf die Behebung der Kollationsprobleme nicht mehr aktuell! Nutzen Sie bitte dieser hier: https://bbs-ilias.de/info/goto.php?target=blog_62_13&client_id=info
Im folgenden Beitrag geht es darum, wie man die Lucene-RPC- und Chat-Server aktiviert, wie man sie nächtlich neu startet und wie man Indizierungsprobleme durch eine Homogenisierung der Kollationen oder manuelles Indizieren heilen kann.
ILIAS-Lucene-RPC-Server installieren
Schritt 1: Zunächst gehen Sie in das Verzeichnis Services/WebServices/RPC/lib/
Dorthin kopieren Sie die Dateien ojdbc14.jar und orai18n.jar, welche Sie sich auf oracle.com herunterladen müssen (über Google findet man die sofort).
Schritt 2: Erstellen bzw. editieren Sie ebenfalls im Verzeichnnis Services/WebServices/RPC/lib/ die Datei ilServer.properties nach diesem Muster und passen folgende Werte an:
- IndexPath - muss vorhanden und vom Webserver beschreibbar sein, bitte nicht in /tmp indexieren
- LogFile
- ClientId
- NicId (wird erteilt nach der Registrierung des Clients in ilias/setup/setup.php)
- IliasIniPath
Wichtiger Hinweis zu Schritt 1: Wenn Sie mit git arbeiten und die Branch wechseln, kann es sein, dass git die Dateien ojdbc14.jar, orai18n.jar und ilServer.properties löscht, z.B. bei einem git-stash-Kommando. Daher sollte man eine Sicherungskopie dieser Dateien anlegen.
1 | [Server] |
Einträge, die Sie nicht benötigen, löschen Sie einfach.
Achten Sie darauf, dass das Verzeichnis /opt/iliasdata/lucene auch vorhanden ist und der Webserver darauf schreiben darf. Wer in /tmp indiziert, muss die Indizierung nach jedem Neustart wiederholen ;-)
Die NicID wird erst nach der Registrierung des jeweiligen Clients unter setup/setup.php zugeteilt und ist dort oder unter Administration->Allgemeine Einstellungen/Server abrufbar.
Schritt 3: Erstellen Sie die Datei ilserver z.B. im Verzeichnis /etc/init.d/ (Debian, Ubuntu) mit diesem Inhalt (copy&paste) und passen Sie den libpath an:
Neue Version ilserverstart4 vom 06.04.2017 mit if-Teil
1 | #!/bin/bash |
Machen Sie die Datei ausführbar mit chmod +x ilserver
Starten Sie nun den Server mit ./ilserver start oder /etc/init.d/ilserver start. Weitere Optionen sind stop, restart, status.
Wichtig: Ist php-curl installiert? Debian- und Ubuntu-User testen dies bitte so:sudo apt-get install php5-curl
Schritt 4: Wir aktivieren nun den Lucene-RPC-Server in ILIAS. Zunächst überprüfen wir die IP und den Port unter Administration->Allgemeine Einstellungen->Server->Java-Server - dort ist eigentlich nichts weiter zu konfigurieren. Achten Sie auf die Anzahl der 1er, hier wird gerne mal eine vergessen. Sie können den Port übrigens frei wählen, aber vergessen Sie nicht, auch das Start-Stop-Skript dann anzupassen.
Dann aktivieren wir die Lucene-Suche unter Administration->Suche.
Wenn es nicht läuft, fragen Sie mich direkt oder im Forum :-)
Hierzu noch 2 Screenshots (Danke an Marc :-)):
Aktivierung der Lucene-Suche unter Administration->Suche:

Erste Ausführung der Indizierung unter Administration->Allgemeine Einstellungen->Cronjobs:

Sie sollten das Start-Stop-Skript noch zu den Runlevel hinzufügen, damit es automatisch startet. In Debian würde dies im Verzeichnis /etc/init.d/ mit dem Befehl update-rc.d ilserver defaults passieren.
Den Chat-Server aktivieren
Auch die Aktivierung des Chatservers geht eigentlich leicht, wenn man ein Start-Stop-Skript verwendet. Im Unterschied zum Lucene-RPC-Server ist hier der Port wichtig und wird ggf. von Firewalls geblockt, da Sie nicht 80 oder 443 wählen dürfen.
Chat-Server-Einstellungen
In ILIAS wechseln wir zur Chat-Server-Ansicht unter Administration->Chat->Chat-Server-Einstellungen:
Finden Sie die IP Ihres Servers heraus, für bbs-ilias.de ist dies 195.110.43.152 (z.B. nslookup bbs-ilias.de oder ping bbs-ilias.de). Tragen Sie die IP in die Felder IP-Adresse des Chatservers und Bevorzuge Hosts ein.
Tragen Sie einen Port ein, z.B. 8082. Klicken Sie auf Speichern. Wir behandeln nur HTTP.
Allgemeine Chat-Einstellungen
Wechseln Sie nun in die allgemeinen Einstellungen. Die Felder sind eigentlich selbsterklärend. Den Haken unter "Chat aktivieren" kann man nur setzen, wenn SOAP aktiviert ist (s.u.).
Der Soap-User ist ein normaler User-Account. Der Account muss sich einloggen können und eventuelle Nutzungsvereibarungen etc. bereits aktzeptiert haben.
Der Chat kann mit dieser Anleitung nicht über https betrieben werden. Nach dem Einloggen in ILIAS muss die URL ohne https beginnen. An einer Anleitung mit https inkl. Weiterleitung auf Port 443 arbeite ich gerade.

Soap aktivieren
Die Aktivierung von SOAP ist zum Glück extrem simpel: Einfach unter Allgemeine Einstellungen->Server->SOAP den Haken setzten und speichern. Danach lässt sich der Chatserver auch aktivieren.
Chatserver per Skript starten
Falls Sie schon Stunden oder Tage damit zugebracht haben, den Chatserver zu starten, vermute ich, dass Sie an dem folgenden Schritt gescheitert sind. Dabei ist es eigntlich ziemlich einfach, wenn man mit einem Skript arbeitet. Erstellen Sie also z.B. unter /etc/init.d eine Datei mit dem Namen ilchat und machen diese ausführbar mit chmod +x ilchat. Kopieren Sie den folgenden Inhalt hinein und passen die Pfade an:
1 | #!/bin/sh |
Starten Sie den Chatserver mit ./ilchat start (oder stop bzw. restart) wie beim ilserver.
Damit die Skripte nach jedem Serverboot gestartet werden, führen wir im Verzeichnis /etc/init.d aus:update-rc.d -f ilchat remove
update-rc.d -f ilserver remove
update-rc.d ilserver defaults 93
update-rc.d ilchat defaults 94
Ilserver und ilchat per Crontab nächtlich neu starten
Auch wenn Sie das Start-Stop-Skript des ilchat den Runleveln hinzufügen: Es läuft nicht nach einem Neustart des Servers. Mein Tipp ist es daher, in die Datei /etc/crontab folgende Zeile einzufügen:
20 2 * * * www-data /var/scripts/ilchat stop
25 2 * * * root rm /tmp/chatserver.pid
30 2 * * * www-data /var/scripts/ilchat start
In diesem Beispiel wird der Chatserver um halb drei Morgens neu gestartet. Nach einem Reboot hilft es auch, das Skript manuell auszuführen. Es läuft dann eigentlich zuverlässig.
Aber auch den ilserver sollte man per Skript nächtlich neu starten:
20 1 * * * www-data /etc/init.d/ilserver stop
25 1 * * * root rm /tmp/ilserverneu.pid
30 1 * * * www-data /etc/init.d/ilserver start
Kollationsprobleme mit dem RPC-Lucene-Server lösen
Es kam merkwürdiger Weise in den letzten Jahren immer dazu, dass sich Tabellen in die Datenbank mit "fremden" Kollationen einschlichen. In diesen Fällen kann es sein, dass der Lucene-Server nicht indizieren kann, was man an Hand entsprechender Meldungen in den Logs sieht.
Nach Kollationsproblemen suchen
Um herauszufinden, ob Kollationsprobleme vorliegen, schauen Sie ins Lucene-Log. Um herauszufinden, welche Tabellen betroffen sind, öffnen Sie die Datenbank mit PHPMyAdmin und geben im Feld SQL SHOW TABLE STATUS ein und klicken auf OK:

- utf8_general_ci oder
- utf8_unicode_ci
Die Kollation wieder harmonisieren
Wenn die Indizierung auf Grund der heterogenen Kollationen nicht mehr funktioniert, würde ich mit einem Skript diese wieder homogenisieren. Unten finden Sie drei entsprechende Links. Die Skripte von Slindberg und Reiche habe ich bereits erfolgreich getestet. Ich empfehle das Skript von Slindberg.
Beim Skript von Eric Reiche müsste dieses eingetragen werden:$collation = 'utf8_unicode_ci';$character_set = 'utf8';
oder$collation = 'utf8_general_ci';$character_set = 'utf8';
Verwenden Sie das Skript auf eigene Gefahr zunächst in einer Testumgebung und mit Backup! Testen Sie das Ergebnis ausgiebig, bevor Sie es in ein Produktivsystem immigrieren!
Die Lucene-Indexierung manuell durchführen
In einigen Fällen hat sich gezeigt, dass die Indizierung über den ILIAS-Cronjob nicht immer zum gewünschten Ergebnis geführt hat. Über die Ursachen kann ich nur spekulieren. Jedenfalls wurden ältere Office-Dokumente und PDFs nicht gefunden. Man kann die Indizierung aber auch manuell durchführen. Dazu habe ich diese Zeilen geschrieben:
1 | #!/bin/bash |
Das Skript wird in eine Textdatei kopiert und mit chmod +x ausführbar gemacht und gestartet. Es geht davon aus, dass schon ein Suchindex existiert. Wenn nicht, kann man die Zeile 13 entsprechend ändern (createIndex), wie in dem Skript beschrieben.
Die Indizierung mit diesem Skript kann ziemlich lange dauern, was ich als Indiz dafür werte, dass es funktioniert :-) Natürlich kann man es auch in die Crontab aufnehmen und nächtlich ausführen. Die Indizierung über ILIAS kann man parallel betreiben, z.B. alle 2 Stunden.
Damit sollten eigentlich alle Lucene-Probleme lösbar sein. :-)