Solr ist eine Open-Source-Suchplattform, welche in Java geschrieben ist und vom Apache-Lucene-Projekt entwickelt wird. Einer der Haupteinsatzzwecke von Solr ist die optimierte Volltextsuche.
In dieser Anleitung ist beschrieben, wie Sie Solr auf Ihrem Managed Flex Server in Betrieb nehmen können.
Anforderungen
Für den Betrieb von Solr müssen nachfolgende Anforderungen erfüllt sein:
- Java Runtime Environment (JRE) – steht auf Ihrem Managed Flex Server zur Verfügung und wird von uns laufend aktualisiert.
- Solr kann ab Managed Flex Server M in Betrieb genommen werden.
Installation und Inbetriebnahme
Um die nachfolgenden Schritte ausführen zu können, müssen Sie via SSH auf Ihrem Managed Flex Server eingeloggt sein.
Wir empfehlen Ihnen, Ihre Applikationen in einem App-Ordner in Ihrem Kundenhome zu installieren, damit Sie eine klare Übersicht Ihrer installierten Applikationen haben. In dieser Solr-Installations- und Konfigurationsanleitung legen wir die Applikation unter ~/app/solr ab. Diese Ordnerstruktur können Sie wie folgt anlegen:
mkdir -p ~/app/solr
Herunterladen von Solr
Für das Herunterladen von Solr wechseln Sie in das oben erstellte Applikationsverzeichnis:
cd ~/app/solr
Anschliessend müssen Sie die aktuellste Version von der Solr-Website herunterladen und entpacken:
wget https://downloads.apache.org/lucene/solr/x.x.x/solr-x.x.x.tgz -O /tmp/solr.tar.gz
tar -xzf /tmp/solr.tar.gz -C ~/app/solr
rm -rf /tmp/solr.tar.gz
Es empfiehlt sich, einen Symlink von ~/app/solr/current auf den heruntergeladenen Ordner zu erstellen, damit in den Konfigurationsdateien nicht mit Versionsnummern gearbeitet werden muss. Dieser Symlink kann folgendermassen erstellt werden:
ln -s ~/app/solr/solr-x.x.x ~/app/solr/current
Konfiguration von Solr
Damit Solr nur auf 127.0.0.1 hört, muss nachfolgende Option im Konfigurationsfile ~/app/solr/current/bin/solr.in.sh gesetzt werden:
SOLR_OPTS="$SOLR_OPTS -Djetty.host=127.0.0.1"
Ansonsten hört Solr auf jede IP-Adresse des Servers und wäre dadurch vom Internet aus erreichbar!
Testen von Solr
In diesem Abschnitt ist beschrieben, wie Sie Solr starten, ein Dokument darin ablegen und es wieder abfragen können.
Nach erfolgreicher Installation und Konfiguration können Sie Solr folgendermassen für erste Tests im Vordergrund (Argument -f) starten:
~/app/solr/current/bin/solr start -f
Da Solr nun läuft, können Sie auf einer zweiten Shell via SSH einen Solr Core erstellen, in welchem die Dokumente abgelegt und abgefragt werden können. Nachfolgender Befehl erzeugt einen Solr Core mit dem Namen example-core.
_JAVA_OPTIONS="-Xms32m -Xmx256m" ~/app/solr/current/bin/solr create_core -c example-core
Ein Solr Core referenziert ein Index mit den dazugehörenden Konfigurationen und Transaktionslogfiles.
Dokument in Solr ablegen
Mit nachfolgendem PHP Script, welches unter ~/app/solr/hello-world-insert.php abgelegt wird, kann mittels Solr PHP Library ein Dokument in Solr abgelegt werden. Das Dokument wird mit der ID 1, der Kategorie example und dem Text «Hello World!» erstellt.
<?php
$options = array
(
'hostname' => '127.0.0.1',
'port' => 8983,
'path' => 'solr/example-core'
);
$client = new SolrClient($options);
$doc = new SolrInputDocument();
$doc->addField('id', 1);
$doc->addField('cat', 'example');
$doc->addField('text', 'Hello World!');
$updateResponse = $client->addDocument($doc);
$client->commit();
print_r($updateResponse->getResponse());
?>
Folgendermassen kann das PHP Script ausgeführt werden und das Dokument wird in Solr abgespeichert:
php ~/app/solr/hello-world-insert.php
Dokument in Solr suchen
Um Dokumente in Solr zu suchen, kann das untenstehende PHP Script, welches unter ~/app/solr/hello-world-search.php abgelegt wird, verwendet werden. In diesem Beispiel werden alle Dokumente mit der Kategorie example gesucht und für die gefundenen Dokumente die Felder id, cat und text zurückgegeben.
<?php
$options = array
(
'hostname' => '127.0.0.1',
'port' => 8983,
'path' => 'solr/example-core'
);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setQuery('cat:example');
$query->setStart(0);
$query->setRows(50);
$query->addField('id')->addField('cat')->addField('text');
$query_response = $client->query($query);
$response = $query_response->getResponse();
print_r($response);
?>
Dieses Script können Sie nun ebenfalls ausführen, um die Funktion zu testen:
php ~/app/solr/hello-world-search.php
Integration
Betrieb mit der Custom Service Control
Bisher haben Sie Ihre Applikation von Hand über die Shell gestartet. Während das zum Testen und Entwickeln zwar ein einfacher Weg sein kann, ist es für den produktiven Betrieb keine Option. Die Custom Service Control (CSC) kann sich um den Betrieb und das automatische Management Ihrer Applikation, zum Beispiel das Starten und Stoppen bei Wartungsarbeiten an Ihrem Server, kümmern.
Falls Sie den CSC bisher noch nicht verwendet haben, sollten Sie diesen einmal starten, um die notwendigen Konfigurationsdateien zu erstellen:
hpservices supervisord start
supervisord successfully started
Die Konfiguration von Solr in der CSC ist denkbar einfach. Erstellen Sie dazu einen neuen Custom Service für Solr:
hpservices supervisord add solr
successfully created dir for solr: /home/username/.services/supervisord/solr
successfully created dir for solr: /home/username/.services/supervisord/solr/log
supervisord service config file written: /home/username/.services/supervisord/solr/service.conf
Dabei wird in der Datei ~/.services/supervisord/solr/service.conf ein Konfigurationsgerüst für den neuen Service erstellt. Für Solr muss nur das command angepasst werden, ansonsten können Sie alle vorgeschlagenen Werte übernehmen (Strichpunkt am Anfang der Zeile entfernen).
[program:solr]
command=%(ENV_HOME)s/app/solr/current/bin/solr start -f
directory=%(ENV_HOME)s/app/solr/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/solr/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/solr/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Damit der Supervisord den Solr-Prozess überwachen kann, muss Solr zwingend im Vordergrund laufen gelassen werden (Option -f).
Sollte der Solr Prozess für die Tests weiter vorne in der Anleitung noch laufen, beenden Sie diesen bitte zuerst mit Ctrl + C.
Mit supervisorctl update können Sie die neue Konfiguration von Solr aktivieren:
supervisorctl update
solr: added process group
Achtung: Falls Sie einen Fehler erhalten, muss zuerst einmalig "hpservices supervisord start" ausgeführt werden.
Genaueres zur Bedienung und zu den Möglichkeiten, die Ihnen mit der CSC zur Verfügung stehen, können Sie in der Anleitung zur Custom Service Control entnehmen.
Webproxy (Nginx) auf Solr-Administrations-Oberfläche
Möchten Sie nun Ihre Applikation über HTTP(s) zugänglich machen, müssen Sie Ihre Website im Hostpoint Control Panel so konfigurieren, dass der Webserver die Anfragen als Proxy an Solr weiterleitet.
Erstellen Sie in Ihrem Hostpoint Control Panel eine Website vom Typ «Nginx Proxy auf eigene Applikation»:
Server-Adresse und Port
Die Proxy-Funktion erwartet, dass Ihre Applikation auf die IPv4-Loopback-Adresse 127.0.0.1 hört und somit müssen Sie nur den Port angeben: 8983.
Zugriff mit Passwort schützen
Damit der Zugriff auf Ihre mit Nginx verknüpfte Website von extern mit Benutzernamen und Passwort geschützt ist, können Sie wie folgt eine htpasswd Datei erstellen:
htpasswd -c ~/app/solr/.htpasswd admin
Diese Datei muss im Hostpoint Control Panel unter «Webseiten» > « Bearbeiten» > «Sicherheit» > «Passwort-Schutz» hinterlegt werden.
Nach erfolgreicher Konfiguration können Sie nur noch mit Benutzernamen und Passwort auf Ihre Website zugreifen.
Weiterführende Informationen
- Custom Service Control (CSC)
- Solr Overview: http://lucene.apache.org/solr/guide/7_6/a-quick-overview.html
- Solr Download: https://lucene.apache.org/solr/mirrors-solr-latest-redir.html
- Solr Tutorials: http://lucene.apache.org/solr/guide/7_6/solr-tutorial.html#solr-tutorial
- PHP Solr Examples: http://php.net/manual/de/solr.examples.php
- Reverse Proxy: https://de.wikipedia.org/wiki/Reverse_Proxy
Für Supportanfragen verwenden Sie bitte dieses Formular.