Probleme von Epages
From NJH-Wiki
- Autor
- Volker Grabsch
Contents |
Einführung
Ich wurde damit beauftragt, Epages 5.01 auf einem SuSE 9.1 System zum Laufen zu bringen, und stieß sofort auf größere Probleme. In den letzten Versionen von Epages wurde SuSE noch offiziell "unterstützt", aber zu dieser Version hin hat sich das leider geändert. Diese Seite soll als Hilfe und Dokumentation all diejenigen Administratoren dienen, die vor ähnlichen Problemen stehen.
Allgemeine Probleme
Der schlimmste grundsätzliche Fehler ist das Installationsprogramm. Nicht nur, dass Epages5 weder als RPM- noch als Debian-Paket kommt. Nein, das Installationsprogramm ist sogar Closed Source! Selbiges gilt für etliche Setup-Scripte. Kein Außenstehender kann die Probleme direkt an der Wurzel packen. Auf dieser Seite kann ich deshalb keine wirklichen Lösungen anbieten, sondern nur Workarounds.
Ein weiteres Problem liegt darin, dass bei der Installation und auch im Handbuch durchweg Annahmen gemacht werden, die in realen Umgebungen nicht erfüllt werden können. Dem Hersteller scheint die Vielfalt an Systemen, auf denen Epages eingesetzt wird, entweder nicht bewusst zu sein, oder dies ist ihm egal bzw. zu viel Aufwandt. Hier ein paar Beispiele:
- Es wird nirgends die Möglichkeit betrachtet, dass der eingesetzte Apache auch noch andere Seiten hosten könnte
- Es funktioniert - mit ein paar Klimmzügen - aber trotzdem
- Es wird allen Ernstes empfohlen, den Apache als Benutzer "ep_web" zu starten
- Zum Glück ist dies nicht wirklich notwendig, solange die Gruppe richtig gesetzt ist.
- Die Sicherheits-Vorkehrungen, die suexec verlangt, sind nicht erfüllt
- Durch Kopieren des Webinterfaces an eine andere Stelle im suexec-DocRoot und Anpassen der Rechte kann man es aber trotzdem schaffen.
Installation schlägt bei "useradd" fehl
Problem
Das Installationsprogramm bricht ab. Als Fehlermeldung taucht auf:
useradd: copying of skel directory failed.
Ursache
Das Installationsprogramm ruft useradd auf, und übergibt ihm unter anderem die Option "-m". Dies führt auf einigen Systemen zu besagter Fehlermeldung, die jedoch nicht kritisch ist!
Workaround
Es gibt zwei Wege:
- useradd wird ohne "-m" aufgerufen
- useradd kehrt ohne Fehlercode zurück (d.h. mit Exitcode 0)
Beide Wege lassen sich durch einen Wrapper für useradd realisieren. Ich wähle der Einfachheit halber den zweiten Weg.
Zuerst benennen wir useradd um:
mv /usr/sbin/useradd /usr/sbin/useradd.orig
Dann schreiben wir den Wrapper, d.h. wir erstellen eine neue Datei /usr/sbin/useradd mit folgendem Inhalt:
#!/bin/bash /usr/sbin/useradd.orig $* exit 0
Zuletzt machen wir den Wrapper ausführbar.
chmod 755 /usr/sbin/useradd
Und fertig!
Nach der Installation von Epages5 nicht vergessen, das ganze wieder rückgängig zu machen!
mv /usr/sbin/useradd.orig /usr/sbin/useradd
Start des Webservice scheitert
Problem
Egal, ob der Webservice im Apache2 als CGI-Script startet oder als Modul geladen wird, liefert ein Aufruf des "storefront" einen Fehler.
Im Error-Logfile des Apache2 hinterlässt es folgenden Eintrag:
ISWebApplicationStartUp(): error determining the name of the log file
Ursache
Sowohl das Modul als auch das CGI verlangen, dass bei ihrem Start die Umgebungsvariable EPAGES_LOG existiert. Diese Umgebungsvariable wird in /etc/default/epages5 gesetzt. Leider ist diese Bedingung derzeitig undokumentiert und auch ich habe sie nur durch Zufall gefunden.
Das Problem tritt nur auf, wenn man einen eigenen Apache2 benutzt. Der bei Epages5 mitgelieferte Apache2 hingegen wird in /etc/rc.d/init.d/epages5 gestartet, welches die Datei /etc/default/epages5 bereits einbindet.
Workaround (Modul)
Vor jedem Start des Apache2 folgende Zeile ausführen:
. /etc/default/epages5
Für eine dauerhafte Lösung sollte diese Zeile möglichst weit oben im Apache2-Startscript (unter SuSE: /etc/rc.d/apache2) eingetragen werden.
Workaround (CGI)
noch keinen Workaround gefunden
Start des Application-Servers scheitert
Problem
Der erste Start von
/etc/rc.d/init.d/epages5 start
schlägt fehl.
Die Fehlermeldung tritt beim Installieren der Cartridges auf:
[...] Installing epages cartridges. ----------------------------- (Please be patient, this may take some minutes.) Cartridges can be installed at store 'Site'. Cartridges can be installed at store 'Store'. TRANSPORT ERROR: 404 Not Found at /opt/epages5/eproot/Cartridges/DE_EPAGES/WebService/API/Client.pm line 29. Stopping epages application server...
Jeder weitere Versuch, Epages5 via /etc/rc.d/init.d/epages5 start zu starten, schlägt fehl:
[...] Installing epages cartridges. ----------------------------- (Please be patient, this may take some minutes.) Cartridges can't be installed at store 'Site'. Package DE_EPAGES::ShopConfiguration(2.0) can't be installed, because it is installed. Package DE_EPAGES::EbayProvider(2.0) can't be installed, because it is installed. Package DE_EPAGES::MailTypeProvider(2.0) can't be installed, because it is installed. Package DE_EPAGES::WorldPayProvider(2.0) can't be installed, because it is installed. Package DE_EPAGES::KelkooProvider(2.0) can't be installed, because it is installed. Package DE_EPAGES::PangoraProvider(2.0) can't be installed, because it is installed. Package DE_EPAGES::LicenseProvider(2.0) can't be installed, because it is installed. TEST_NOT_SUCCESSFUL at /opt/epages5/eproot/Setup/SetupCartridges.pl line 92. Stopping epages application server...
Im Apache Error-Log ist ein versuchter Zugriff auf "/epages/Site.soap" verzeichnet.
Ursache
Der Webservice (d.h. ein entsprechend konfigurierter Apache2) muss bereits vor dem ersten Start von Epages5 laufen!
Beim ersten Start von Epages5 wird nämlich das Setup-Script
/opt/epages5/eproot/Setup/SetupCartridges.pl
aufgerufen, welches den mit dem Webservice kommunizieren will. Falls der Webservice nicht läuft, bricht dieses Script ab und liefert die Fehlermeldung.
Mit dem eigenen(!) Müll, den es dabei in der Datenbank zurücklässt, kommt es danach selbst nicht mehr klar. Selbst wenn man den Webservice nächträglich zum Laufen bringt, wird /etc/rc.d/init.d/epages5 start mit einem Fehler abbrechen.
Workaround
Am einfachsten ist es, wenn wir Epages5 entfernen und danach wieder neu installieren. Sobald dies geschehen ist, muss erst der Webservice zum Laufen gebracht werden! Nun können wir Epages5 via /etc/rc.d/init.d/epages5 start initialisieren und starten.
Alternativ können wir auch auf die Neuinstallation verzichten und stattdessen in der Datei /etc/default/epages5, bei den Konfigurations-Variablen folgendes eintragen:
# Workaround for a bug in SetupCartridges.pl IGNORE_INI=yes
Nun wird /etc/rc.d/init.d/epages5 start fehlerlos starten, da es das Setup-Script nicht mehr aufruft. Danach müssen wir im Browser .../epages/Site.soap aufrufen, und ein Weilchen warten, bis sich Epages5 zuende initialisiert hat.
Schlussbemerkungen
Insgesamt gesehen ist Epages5 eine hervorragende Shop-Software, aber in einigen Details werden dort leider noch sehr dumme Fehler begangen. Einige der ganz krassen Probleme damals von Epages4 tauchen zum Glück nicht mehr auf. Dennoch gibt es auch in Epages5 so einige Tücken.

