Plone/Zope hinter Apache2 hängen

datePosted on 21:26, October 23rd, 2007 by Stefan

Wer Plone 3 installieren will, der kann dies ruckzuck und einfach tun. Der Zugriff läuft dann über URLs wie http://meinzopeserver.de:8080/Plone/. Dies mag für erste Versuche in Ordnung sein. Will man jedoch mit der entsprechenden Seite an die Öffentlichkeit, so sollte da ganze doch etwas anders aussehen. Etwa so: http://meinzopeserver.de.

Die Dokumentation von Plone ist sehr gut. Die Tücke liegt jedoch im Detail. Nachdem ich ca. zwei Stunden den Fehler gesucht habe, hier die Lösung.

Das CMS-Framework Zope (und damit auch das darauf aufbauende CMS Plone) wird in der Regel “hinter einen Apache” gehängt. Der Zugriff aus dem wilden, weiten Web erfolgt über Port 80 auf Apache, der die URL umschreibt und die Anfrage auf den an Port 8080 lauschenden Zope-Server weitergibt.

Die meisten im Netz kursierenden Anleitungen gehen hierbei aber nicht von Apache2 aus, oder sie rechnen nicht mit der inzwischen sehr modular aufgebauten Struktur der Konfiguration.

Auf Plone.org selbst gibt es eigentlich eine schöne Anleitung: “Apache 2 virtual host” - warum die aber davon ausgeht, dass Zope nicht auf Port 8080 sondern 10080 lauscht ist mit ein Rätsel.

Apache soll aus der URL http://meinzopeserver.de die folgende machen, damit Zope/Plone mehrere Websites auf einem Server verwalten kann: http://localhost:8080/VirtualHostBase/http/meinzopeserver.de:80/Plone/VirtualHostRoot/. Das ist mit “>mod_rewrite - einem der bekanntesten und wohl auch berüchtigstem Apache-Modul - auch eigentlich kein Problem.

Diese durchgemixte URL wird dann über das Apachemodul “mod_proxy” von Zope abgeholt. Und da entstand mein Problem: Während ich mich wunderte, dass ich trotz korrekter Rewrite-Regel (kontrolliert mit dem “RewriteLog”) immer “Forbidden” als Antwort bekam ahnte ich wohl schon, dass etwas mit dem Proxy nich klappt. Zugriff ohne Proxy lässt die Monster-URL in der Adresszeile des Browsers erscheinen - muss nicht sein.

Der Fehler wurde aber versteckt durch die Tatsache, dass es anscheinend “best practise” ist, die Konfiguration von Modulen nur dann vorzunehmen, wenn diese auch vorhanden sind. Über entsprechende Abfragen in der Apache-Konfiguration werden so Fehlermeldungen verhindert - und mir verheimlicht, dass mod_proxy gar nicht installiert ist.

Also gut, das ist schnell nachgeholt. Warum kann ich dann aber an der Konfiguration machen was ich will, ohne einen Effekt zu erzielen? Weil bei modernen Linux-Distributionen die Apache2-Einstellungen wunderbar modular über viele Dateien und Verzwichnisse verteilt sind. Eigentlich ein echter Vorteil gegenüber der klassichen Mega-httpd.conf. Aber wenn man Fehler lokal sucht (sprich: Noch in der alten “Denke” ist) dann bringt es einen schier zum Durchdrehen!

Also, mod_proxy aktiviert, und zentral konfiguriert - und dann klappt es auch mit Plone.

Und die alte Weisheit hat sich wieder einmal als wahr erwiesen: “Wenn’s nicht klappt, dann schau in die Server-Logs.” Nicht nur in das Rewrite-Log, sondern auch ins Error-Log. Hätt ich’s gleich getan, wär ich schon lange fertig :)

categoryPosted in MyBlog, Tech-Stuff | printPrint
Related Posts:

Comments:

[...] So, wieder einmal Plone installiert. Im Grunde immer noch das gleiche Vorgehen wie letztes Mal. [...]