Apache Solr auf Managed Flex Server

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://www-eu.apache.org/dist/lucene/solr/x.x.x/solr-x.x.x.tgz
tar zxf solr-x.x.x.tgz

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:

~/app/solr/current/bin/solr.in.sh
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.

~/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.

~/app/solr/hello-world-insert.php
<?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:

/usr/local/php71/bin/php ~/app/solr/hello-world-insert.php

Die Solr-PHP-Library steht aktuell nur für die PHP-Version 7.1 zur Verfügung.

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.

~/app/solr/hello-world-search.php
<?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:

/usr/local/php71/bin/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).

~/.services/supervisord/solr/service.conf
[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 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»:

Solr DE

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 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» > «Webseite 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

 

Konnten Sie finden, was Sie suchen?

Unsere Support-Profis helfen Ihnen gerne persönlich weiter!

 

© 2001 - Hostpoint AG