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.
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
Kategorie: Technisches


15. Dezember 2010 um 14:15
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
15. Dezember 2010 um 14:31
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
17. Dezember 2010 um 10:46
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
17. Dezember 2010 um 11:14
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.