Nov 05

Installation eines Apache Solr / ShOptiFind (Cloud)-Servers

Das shoptimax ShOptiFind Modul kann nicht nur als SaaS-Anwendung genutzt werden, bei welcher der eigentliche Such-Server von Shoptimax gehostet und betreut wird, sondern steht auch “standalone” zur Verfügung, wodurch es möglich ist, einen eigenen Such-Server zu verwenden und ggf. an eigene Bedürfnisse und Anforderungen anzupassen.

Dass die Einrichtung eines eigenen Such-Servers kein Hexenwerk ist, soll dieser Beitrag anhand einer exemplarischen Installationsbeschreibung für eine “Jiffybox” zeigen. Hinter “Jiffybox” steht eine von Domainfactory betriebene Cloud-Plattform (“Cloud-Server On Demand“), in welcher man sich innerhalb von Minuten einen eigenen Webserver mit dem gewünschten Betriebssystem und in der gewünschten Leistungsklasse “zusammenklicken” kann. “Jiffybox” kann auch 24h lang kostenlos getestet werden und bietet ansonsten eine sekundengenaue Abrechnung in allen verfügbaren Tarifen.

Jiffybox Homepage

Wir entscheiden uns für einen Test für das “kleinste” Paket “CloudLevel 1″ mit 1GB RAM und 50GB Festplatte (dies sollte für einen Suchserver für einen dedizierten Shop mit max. 10.000 Suchanfragen/Tag eigentlich ausreichen – man kann die Jiffybox Pakete aber jederzeit in Sekundenschnelle “upgraden” und z.B. mehr Arbeitsspeicher, Prozessoren, Festplatten-Kapazität usw. “dazubuchen” – ein “Downgrade” ist allerdings nicht ohne weiteres möglich, hier muss man wieder eine neue Installation starten) und die Linux-Distribution “Ubuntu 10.04 LTS 64-Bit“, die innerhalb einer Minute komplett installiert ist und sofort zur Verfügung steht – perfekt! :)
Nun zur Installation des Shoptifind Such-Servers bzw. Apache Solr selbst. Voraussetzungen für den Betrieb der ShOptiFind Suche sind:

  • Java Development Kit (JDK) bzw. Java Runtime Environment (JRE)
  • Apache Tomcat
  • Apache Solr Webapp
  • zusätzliche ShOptiFind Webapp für erweiterte Konfigurationsmöglichkeiten der Suche

1. Installation von Java

Eine ausführliche Anleitung findet sich z.B. unter http://wiki.ubuntuusers.de/Java/Installation. Hier die Kurzfassung :) Wir bearbeiten die Liste der Paketserver für Ubuntu, z.B. mit

vi /etc/apt/sources.list

und ergänzen die Zeilen:

deb http://archive.canonical.com/ubuntu lucid partner
deb-src http://archive.canonical.com/ubuntu lucid partner

Schliesslich führen wir auf der Konsole folgende Befehle aus:

apt-get update
apt-get install sun-java6-jdk

Wenige Minuten später haben wir das JDK installiert und einsatzbereit :)

2. Installation von Apache Tomcat

Wir laden uns von Apache Tomcat eine 6.x Version herunter (Version 7 soll teilweise aktuell noch etwas “hakelig” sein) und entpacken diese nach”/opt/tomcat6/” auf dem Server: http://tomcat.apache.org/download-60.cgi.

Anschliessend bearbeiten wir die Tomcat Benutzer und fügen einen neuen Solr Benutzer hinzu:

vi /opt/tomcat6/conf/tomcat-users.xml

z.B. fügen wir hinzu (die Rollen falls noch nicht vorhanden):

<role rolename=”manager”/>
<role rolename=”admin”/>
<user username=”solr” password=”MySolrPass” roles=”manager,admin”/>

Natürlich könnte man hier auch noch eine eigene Rolle vergeben usw., aber der Einfachheit halber soll ein neuer Benutzer genügen, der dann Zugriff auf die Solr und Shoptifind Administrations Webapps erhält.
Um Tomcat automatisch mit dem System zu starten, legen wir zuerst ein Startscript an:

vi /etc/init.d/tomcat

und kopieren den Inhalt der folgenden Datei hinein: tomcat.sh

Schliesslich legen wir noch folgende symbolische Links an, die dieses Script beim Starten/Stoppen des Servers aufrufen:

sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat

3. Deployen der Apache Solr Webapp

Eine ausführliche Anleitung hierzu ist unter http://wiki.apache.org/solr/SolrTomcat zu finden. In der Kurzfassung: wir besorgen uns eine Apache Solr Distribution oder erstellen uns eine eigene aus dem Solr SVN (dies wird empfohlen, da in der aktuell erhältlichen 1.4.1 Distribution der “ExtendedDismaxRequestHandler” nicht enthalten ist, der zahlreiche Vorteile bei der Verarbeitung von Suchanfragen mit sich bringt – auf Anfrage kann auch eine von shoptimax kompilierte Solr Webapp zur Verfügung gestellt werden) und kopieren dann das “example”-Verzeichnis auf den Server unter “/opt/solr/example/”. Wir kopieren die Datei “dist/apache-solr-1.4.1.war” aus der Distribution nach “/opt/tomcat6/webapps/”, benennen Sie der Einfachheit halber in “solr.war” um und legen die Datei “/opt/tomcat6/conf/Catalina/localhost/solr.xml” mit folgendem Inhalt an:

<?xml version=”1.0″ encoding=”UTF-8″?>
<Context docBase=”/opt/tomcat6/webapps/solr.war” debug=”0″ crossContext=”true” privileged=”true”>
<Environment name=”solr/home” type=”java.lang.String” value=”/opt/solr/example/solr” override=”true” />
</Context>

Kopieren Sie die Datei “ShoptifindUtils.war“, die Sie auf Anfrage mit dem Shoptifind-Modul  von shoptimax erhalten, in das Verzeichnis “/opt/tomcat6/webapps/” und starten Sie Tomcat mittels

/etc/init.d/tomcat start

Unter http://ihre.jiffy.ip:8080/solr/admin sollten nun die Solr Default-Administration erreichbar sein.

4. Weitere Einrichtung und Konfiguration

Nun wird es Zeit, die Suche an unseren Shop anzupassen :) Dazu legen wir einen neuen Such-”Core” in Solr an, der dann den Index unseres Shops enthalten wird. Wir wechseln in das Verzeichnis “/opt/solr/example/solr/” und löschen dort erst einmal alle Inhalte :) Dann entpacken wir die von shoptimax mitgelieferte Datei “solr-example-core.tar” mit

tar xvf solr-example-core.tar

nachdem wir diese auf den Server hochgeladen haben. Diese enhält die Datei solr.xml und ein Verzeichnis “db” – das ist unser Test-Core. Die XML-Datei definiert einfach unseren Core:

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<solr sharedLib=”lib” persistent=”true”>
<cores adminPath=”/admin/cores”>
<core default=”true” instanceDir=”db” name=”db”>
<property name=”shopId” value=”oxbaseshop” />
<property name=”dbName” value=”oxid_ce_solr” />
<property name=”dbUser” value=”oxid” />
<property name=”dbPass” value=”dbpass” />
<!– <property name=”viewPrefix” value=”oxv_” />
<property name=”viewPostfix” value=”_1″ /> –>
<property name=”viewPrefix” value=”" />
<property name=”viewPostfix” value=”" />
</core>
</cores>
</solr>

Details zu den einzelnen Parametern finden Sie bei Bedarf im Shoptifind Modul Readme.

Schliesslich konfigurieren wir noch eine Basic Authentifizierung für unsere Webapps, dazu editieren wir die Datei “/opt/tomcat6/webapps/solr/WEB-INF/web.xml” und ergänzen folgendes vor dem abschliessenden “</webapp>”-Tag:

<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Restricted Area</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/update/*</url-pattern>
<url-pattern>/debug</url-pattern>
<url-pattern>/db/admin/*</url-pattern>
<url-pattern>/db/update/*</url-pattern>
<url-pattern>/db/debug</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>
The role that is required to log in to the Solr Manager Application
</description>
<role-name>manager</role-name>
</security-role>

Starten Sie danach Tomcat neu mit “/etc/init.d/tomcat restart“. Ihr neuer Core sollte nun unter “http://ihre.jiffy.ip:8080/solr/db/admin” mit Passwortschutz erreichbar sein. Geben Sie hier die Logindaten des neuen Tomcat Benuters ein, den wir angelegt hatten.

In der Datei “/opt/tomcat6/conf/server.xml” können Sie bei Bedarf für den “Connector” noch den  Port 8080 auf einen anderen Port, z.B. auch auf Port 80 ändern (dazu sollte aber ein eventuell auf dem Server installierter Webserver deaktiviert werden, da dieser ebenfalls auf Port 80 läuft).

Damit können wir nun diesen Core im Shop-Admin als Suchserver URL angeben, weitere Infos dazu finden Sie in der Shoptifind-Installationsanleitung.

Ihr eigener Suchserver ist nun fertig installiert :)

4 Antworten zu “Installation eines Apache Solr / ShOptiFind (Cloud)-Servers”

  1. Mathias Blaich sagt:

    Hallo,

    ich hab das versucht so zu installieren wie es hier beschrieben wird. Bis zum Schritt 4 hat nun auch alles geklappt.

    Allerdings hänge ich beim Schritt 4. Zum einen habe ich von Shoptifind keine “solr-example-core.tar” sondern eine “solr-example-core.zip” erhalten. Das dürft wohl aber nicht der Grund sein, oder?

    Ausserdem gibt es bei mir die ganze Datei “/opt/tomcat6/webapps/solr/WEB-INF/web.xml” nicht. Woher soll diese den kommen?

    Über Hilfe wäre ich sehr dankbar.

    Viele Grüße
    Mathias

  2. shoptimax sagt:

    Hallo Mathias,
    nein, ZIP ist ja im Prinzip dasselbe wie TAR, unter Linux gibts dafür normal “unzip” zum Auspacken.
    Die erwähnte web.xml bzw. das Verzeichnis dazu sollte automatisch erstellt werden, wenn man Schritt 3 erfolgreich absolviert hat, speziell “… Wir kopieren die Datei “dist/apache-solr-1.4.1.war” aus der Distribution nach “/opt/tomcat6/webapps/”, benennen Sie der Einfachheit halber in “solr.war” um …” – wenn Tomcat läuft, erzeugt er daraus automatisch das “webapps/solr/…”-Verzeichnis, das dann auch eine web.xml enthält. Grüße, Stefan

  3. Mathias Blaich sagt:

    Hallo Stefan,

    vielen Dank für die schnelle Antwort. Leider extrahierte Tomcat bei mir nicht die Datei. Ich habe sie dann selbst entpackt.

    Ich hab jetzt nochmal von vorne Angefangen. Und bei Schritt 3 ganz am Schluß wenn ich Tomcat starten will kommt folgenden Meldung:

    root@ubuntu:~# /etc/init.d/tomcat start
    /etc/init.d/tomcat: Zeile 11: -Xms64M: Kommando nicht gefunden.
    Using CATALINA_BASE: /opt/tomcat6
    Using CATALINA_HOME: /opt/tomcat6
    Using CATALINA_TMPDIR: /opt/tomcat6/temp
    Using JRE_HOME: /usr/lib/jvm/java-6-sun
    Using CLASSPATH: /opt/tomcat6/bin/bootstrap.jar

    Die Fehlermeldung kam auch schon bei meinem ersten Anlauf. Da stimmt was mit dem Sktipt nicht. Hast du einen Verdacht woran dies liegen könnte?

    Viele Grüße
    Mathias

  4. shoptimax sagt:

    Hallo, vermutlich gabs ein Problem mit Copy/Paste hier aus dem Blog und die Anführungszeichen oder Bindestriche wurden “zerschossen” – ich habe den Artikel nun geändert, sodass man das Tomcat-Script runterladen und den Inhalt dort direkt rauskopieren kann – bitte mal testen, ob es damit funktioniert.

Einen Kommentar schreiben

*

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Comment Spam Protection by WP-SpamFree