10. Integration mit anderen Systemen
Artikelaktionen
Integration mit anderen Systemen
Integration ist ein großes Problem in allen Firmen, die bereits viele verschiedene Systeme verwenden. Da Plone ein Open Source-Projekt ist, existieren dafür eine Menge Produkte, Zusätze, Skins und Werkzeuge, die gratis zusätzliche Funktionalität bieten. Sie haben richtig gelesen, diese Produkte werden oftmals einfach so an alle abgegeben, die sie haben wollen. Dazu kommt noch, dass Python als Open Source-Sprache über eine Menge hervorragender Produkte verfügt (oft Pakete genannt). Die meisten dieser Produkte betreffen Plone allerdings nicht direkt. Mit anderen Worten, sie fügen keine Funktionalität von sich aus zu Plone hinzu. Das ist Aufgabe von Plone-Produkten. Allerdings fragen die Leute oft "Kann Plone dies oder jenes machen?" Die Antwort lautet oftmals: "Wenn Python es kann, ja!"
Hier ist eine Liste der beliebtesten Python-Produkte:
- Python Imaging Library (PIL): Damit können Sie Bilder manipulieren, konvertieren und analysieren (http://www.pythonware.com/products/pil/).
- ReportLab: Hiermit können Sie dynamisch PDF-Dateien (Portable Document Format) erzeugen, die Bilder, Grafiken und andere nette Dinge enthalten (http://www.reportlab.org/).
- Windows-Erweiterungen: Damit haben Sie eine Schnittstelle zu allen Windows-APIs (Application Programming Interfaces), z.B. können Sie damit COM-Objekte (Component Object Model) benutzen (http://sourceforge.net/projects/pywin32/).
- Pygame: Das ist ein Framework, mit dem man Spiele in Python entwickeln kann. Einige Leute haben es in Plone benutzt, um an die Schnittstelle zu seinen Medienschichten für die Erzeugung von Bildern oder Sounds zu gelangen (http://www.pygame.org/).
- OpenOffice.org-Anbindung: Mit dieser Anbindung können Sie fast alles mit OpenOffice.org-Dokumenten machen, z.B. sogar Microsoft Office-Dokumente parsen, wie Sie in Kapitel 13 sehen werden (http://udk.openoffice.org/python/python-bridge.html).
- mxTidy: Dieses Paket sucht und korrigiert Probleme in HTML-Dateien (Hypertext Markup Language), inklusive Page Templates (http://www.egenix.com/files/python/mxTidy.html).
Diese hervorragenden Zusatzprodukte verfügen normalerweise über grafische Installationsprogramme für Windows, mit denen Sie eine Installation schrittweise durchführen können. Wenn Sie kein Windows-Benutzer sind, dann bietet das Python-Modul distutils eine einfache Schnittstelle für die Installation dieser Produkte von der Kommandozeile. Wie immer gilt auch hier, dass man vor der Installation die Anweisungen im heruntergeladenen Paket lesen sollte, damit nichts schief gehen kann. Dieses Kapitel konzentriert sich auf die Installation von Produkten, die eine zusätzliche Funktionalität für Plone bieten. Ein Verzeichnis von Python-Paketen finden Sie unter http://www.python.org/pypi.
Plone-Produkte installieren
Ein Produkt ist ein Modul, das in Plone installiert wird, um weitere Funktionalität für Plone bereitzustellen. Auch wenn der Name Produkt an Kosten denken lässt, ist das nicht richtig, denn die meisten Produkte sind frei verfügbar und Open Source. Der Begriff Produkt beschreibt tatsächlich etwas, was im Dateisystem vorhanden ist und an andere Plone-Sites weitergegeben und dort verwendet werden kann.
Die Installation eines Produkts erfolgt normalerweise in den folgenden zwei Schritten:
- Installation zu seiner Registrierung innerhalb von Zope
- Installation in jeder Plone-Instanz, die es benutzen soll
Wegen der großen Vielzahl an verfügbaren Zusätzen kann man nur sehr schwer allgemeinen Grundsätze angeben, was man genau zu deren Installation tun muss. Wie ich in diesem Kapitel mehrfach darstellen werde, sollten Sie immer die Installationsanweisungen der Produkte lesen, die normalerweise erklären, wie man das Produkt installiert. Wenn Sie weitere Hilfestellung brauchen, wenden Sie sich an eine Mailing-Liste oder an den Autor des Produkts, um weitere Informationen zu erhalten. Aber lesen Sie unbedingt zuerst die Anweisungen!
Denken Sie bei der Installation von Produkten daran, dass Sie Code installieren, der unvollständig sein kann und keinerlei Qualitätsgarantien macht. Es liegt in der Natur von Open Source, dass Leute Produkte schreiben und sie dann liegen lassen, wenn sie mit dem nächsten Projekt weitermachen. In einer idealen Welt würde eine Person Ihres Vertrauens sich den Code Zeile für Zeile anschauen, bevor Sie irgendetwas installieren. In der Realität ist das nicht machbar. Dennoch gilt, dass die meisten Produkte ziemlich gut sind. Aber auf jeden Fall sollten Sie Produkte testen, bevor Sie diese auf Ihrer Millionen Euro schweren Website installieren.
Produkte finden
Das richtige Produkt für Ihre Zwecke zu finden ist vermutlich der schwierigste Teil der Integration. Die Website Zope.org enthält viele Produkte, die von Benutzern erstellt und hochgeladen wurden. Diese Produkte finden Sie vor allem unter http://www.zope.org/Products, aber wenn Sie sich die Homepage von Zope.org anschauen, werden Sie Produktankündigungen im rechten Teil der Seite sehen. Manche dieser Produkte sind für Plone gedacht, andere für Zope, das CMF (Content Management Framework) oder Python.
Der andere wichtige Bereich zum Auffinden von Produkten ist das Collective-Projekt auf SourceForge (http://sf.net/projects/collective). Die dortigen Produkte befinden sich im CVS (Concurrent Versioning System) von SourceForge. Produkte werden zwar oftmals in Archivdateien verbreitet, aber CVS ist die beste Methode, auf diese Produkte hier zuzugreifen.
Zurzeit gibt es kein umfassendes Produktverzeichnis für Plone-Produkte oder deren Entwicklungszustand (aber ich hoffe, eines wird unter Plone.org online verfügbar sein, wenn dieses Buch erscheint). Bei der Veröffentlichung von Produkten stellen Leute ihre Pakete oftmals auf die Dateien-Seite, aber am sichersten ist es, ins CVS zu schauen. Eine visuelle Ansicht aller verfügbaren Dateien finden Sie unter http://cvs.sourceforge.net/viewcvs.py/collective/.
Ein letztes CVS-Repository mit nützlichem Code ist das von Zope Corporation. Fast jeder öffentlich gemachte Code wird in dieses CVS-Repository gestellt. Auch wenn Sie die Quellen zu Zope 2 suchen, ist das der beste Zielort für Sie. Das Products-Verzeichnis enthält alle Produkte (http://cvs.zope.org/Products/). Weitere Informationen darüber, wie Sie Code auschecken können, finden Sie unter http://dev.zope.org/CVS/ReadOnlyAccess.
Installation in Zope
Nachdem Sie ein passendes Produkt gefunden und heruntergeladen haben, müssen Sie es installieren. Zuerst müssen Sie es in Zope installieren, damit es von Zope als neues Produkt erkannt wird. Dazu müssen Sie den Bereich finden, in dem sich alle vorhandenen Produkte befinden. Um die Verzeichnisse zu finden, gehen Sie im ZMI (Zope Management Interface) zum Control Panel. Dort sehen Sie eine Liste der Verzeichnisse Ihrer Plone-Instanz. Wenn Sie einen Wert für INSTANCE_HOME haben, dann befindet sich Ihr Products-Verzeichnis in diesem Verzeichnis, sonst finden Sie das Products-Verzeichnis in SOFTWARE_HOME. Es sollte angemerkt werden, dass bei fast allen Installationsmethoden von Plone die Variable INSTANCE_HOME für Sie gesetzt wird. Wie Sie in Abbildung 10.1 sehen, ist der Wert für mein INSTANCE_HOME gleich /var/book, d.h., mein Products-Verzeichnis ist /var/book/Products.
Abbildung 10.1. Suche nach Ihrem Products-Verzeichnis
Um den Zope-Anteil der Installation durchzuführen, packen Sie das heruntergeladene Produkt aus und kopieren es in das Products-Verzeichnis Ihres Servers. Tatsächlich ist das ein wenig trickreich und hängt sehr stark davon ab, wie das Produkt verpackt wurde. Um das ein wenig detaillierter zu zeigen, erklärt der folgende Abschnitt, wie man CMFExternalFile als Beispielprodukt installiert. CMFExternalFile wird seinerseits im Abschnitt "Eine Datei in Plone verwalten" behandelt.
CMFExternalFile besitzt die nette Eigenschaft, dass es aus zwei Teilen besteht, die separat heruntergeladen werden. Zuerst haben Sie einen Zope-spezifischen Codeteil namens ExternalFile. Sollten Sie dieses Produkt jemals außerhalb von Plone, im normalen Zope, verwenden wollen, dann könnten Sie das tun. Und zweitens haben Sie einen Plone- und CMF-spezifischen Codeteil namens CMFExternalFile. Die meisten Produkte benötigen jedoch keine zwei Installationen, sondern bestehen aus einem einzigen Teil.
Eine Beispielinstallation unter Windows durchführen
Zuerst müssen Sie das Produkt von Zope.org unter http://zope.org/Members/arielpartners/ExternalFile/1.2.0/ExternalFile-1-2-0.zip herunterladen und auf Ihrem Rechner speichern.
Dann packen Sie die Datei aus. Dazu könnten Sie WinZip benutzen, das Sie heutzutage auf den meisten Windows-Rechnern finden (ich ziehe 7-Zip vor, das Sie unter http://www.7-zip.org finden).
Nach dem Auspacken erhalten Sie ein Verzeichnis namens ExternalFile. Darin befindet sich das Produktverzeichnis (siehe Abbildung 10.2). Sie erkennen es daran, dass sich in diesem Verzeichnis eine Menge Python- und Textdateien befinden, darunter auch INSTALL.txt und README.txt mit weiteren Informationen zur Installation.
Abbildung 10.2. Der Inhalt des ExternalFile-Verzeichnisses
Als Nächstes verschieben Sie den ExternalFile-Ordner (nicht seinen Inhalt) in Ihr Products-Verzeichnis. Unter Windows befindet sich dieses Verzeichnis unter C:\Programme\Plone 2\Data\Products. In diesem Verzeichnis sehen Sie eine Reihe anderer Verzeichnisse, darunter CMFPlone, CMFCore usw. Das Verzeichnis ExternalFile sollte nun eines davon sein. Nun können Sie zum Abschnitt über das Testen der Installation auf dem Server springen.
Eine Beispielinstallation unter Unix durchführen
Zuerst müssen Sie das Produkt von Zope.org unter http://zope.org/Members/arielpartners/ExternalFile/1.2.0/ExternalFile-1-2-0.zip herunterladen und auf Ihrem Rechner speichern. Packen Sie dann die Datei aus. Auf den meisten Unix-Systemen ist solch ein unzip-Programm bereits installiert. Geben Sie dann die folgenden Befehle ein:
$ unzip ExternalFile-1-2-0.zip Archive: ExternalFile-1-2-0.zip creating: ExternalFile/CVS/ ...
Nach dem Auspacken erhalten Sie ein Verzeichnis namens ExternalFile. Darin befindet sich das Produktverzeichnis. Sie erkennen es daran, dass sich in diesem Verzeichnis eine Menge Python- und Textdateien befinden, darunter auch INSTALL.txt und README.txt mit weiteren Informationen zur Installation.
Als Nächstes verschieben Sie den ExternalFile-Ordner (nicht seinen Inhalt) in Ihr Products-Verzeichnis. Dieser Befehl hängt von der Konfiguration Ihres Servers ab. In meinem Fall lautet er wie folgt:
$ mv ExternalFile /var/zope/Products
Die Installation auf dem Server testen
Nach der Installation eines Produkts müssen Sie Plone neu starten, damit das neue Produkt in Plone registriert wird. Nach dem Neustart Ihres Servers gehen Sie ins ZMI und zeigen den Product Management-Schirm des Zope-Control Panels an. Dieser Schirm listet alle auf dem Server installierten Produkte auf. Wenn Sie das Produkt erfolgreich installiert haben, wird es hier aufgeführt, wie Sie in Abbildung 10.3 sehen können.
Abbildung 10.3. Korrekt installierte Produkte
Gelegentlich kann an dieser Stelle eines von drei Dingen schief gehen. Sollte zum einen im ZMI nichts auftauchen, dann haben Sie das Verzeichnis an den falschen Ort kopiert. Korrigieren Sie das, indem Sie die Installationsanweisungen und den Ort Ihres Products-Verzeichnisses noch einmal überprüfen, wie zuvor erklärt wurde.
Zweitens könnten Sie ein "defektes" Icon in der Produktliste sehen, was bedeutet, dass versucht wurde, das Produkt in Zope zu registrieren, wobei aber ein Fehler aufgetreten ist. Klicken Sie auf das defekte Icon, um einen Traceback zu erhalten, der Ihnen den Fehler nennen und eine Möglichkeit bieten sollte, ihn zu beheben.
Und sollten Sie schließlich nach dem Neustart nicht mehr auf das ZMI zugreifen können, dann haben Sie womöglich ein ernsteres Problem. Zope konnte dann nicht gestartet werden, weil Plone einen ernsten Fehler gefunden hat. Um herauszufinden, was das Problem ist, starten Sie Plone von der Kommandozeile im Debug-Modus. Sie erhalten auf dem Bildschirm einen Traceback.
Installation in Plone
Nach der korrekten Installation in Zope ist der nächste Schritt einfach. Um CMFExternalFile vollständig zu installieren, müssen Sie das Produkt CMFExternalFile (http://prdownloads.sourceforge.net/collective/CMFExternalFile.0.5.zip?download) nun auf dieselbe Weise installieren, wie Sie ExternalFile installiert haben. Dann müssen Sie Plone wieder neu starten.
Sie müssen CMFExternalFile in allen Plone-Instanzen installieren. Nicht alle, aber die meisten Plone-Produkte verlangen das. Wie man das macht, weiß man nur dann genau, wenn man die Installationsanweisungen anschaut. Wenn Sie etwas lesen wie "auf die normale CMF-Art installieren" oder "erstellen Sie in Ihrer Plone-Instanz eine externe Methode", dann müssen Sie diesen Schritt ausführen.
Glücklicherweise können Sie die Anweisung, eine externe Methode zu erstellen, sogar ignorieren, da Plone über einen viel einfacheren Weg dafür verfügt. Klicken Sie in Plone auf Plone Konfiguration und dann auf Produkte hinzufügen/löschen. Sie erhalten eine Liste von Produkten, die auf Ihrem Server installiert sind und in Plone konfiguriert werden müssen. Klicken Sie einfach auf das Kontrollkästchen neben dem Produkt (in diesem Fall CMFExternalFile), und klicken Sie dann auf installieren, wie in Abbildung 10.4 zu sehen ist.
Abbildung 10.4. Eine Liste für den Benutzer verfügbarer Produkte
Damit wird das Produkt installiert - jedenfalls, wenn es keinen Fehler dabei gibt. Sonst erscheint es nicht in dieser Liste der installierten Produkte. Dann können Sie das Problem eventuell dadurch lösen, dass Sie die Protokolldatei lesen. Klicken Sie also auf den Link neben dem Produktnamen, um das Protokoll zu erhalten. Diese Installation ist ein Dienst, der vom Werkzeug portal_quickinstaller in Zope bereitgestellt wird. Um zu sehen, was dieses Produkt tatsächlich tut, springen Sie zum Abschnitt "Integration von Plone mit dem Dateisystem".
Einen anderen Webserver verwenden
Wenn Sie Teil einer Organisation sind, die bereits Websites betreibt, dann verwenden Sie sehr wahrscheinlich eine bestimmte Plattform für den Webserver. Unter Virtual Hosting versteht man die Möglichkeit, mehrere Websites auf einem Server zu betreiben, wobei die Sites über ihre IP- (Internet Protocol) Adressen oder Namen unterschieden werden. Damit kann ein erster Server, z.B. Apache, Anfragen an eine oder mehrere Plone-Instanzen weiterreichen.
Virtual Hosting wird normalerweise mit Hilfe von Proxies erreicht, auch wenn der Einsatz eines Proxy-Servers mit Plone ganz unabhängig von der Anzahl der gehosteten Sites ein wünschenswerter Ansatz ist. Ein Proxy-Server sitzt zwischen einem Client und einem Server und leitet Anfragen von Client und Server weiter. Ein Proxy-Server sollte für den Benutzer transparent sein. In Kapitel 14 werde ich Ihnen zeigen, wie Sie Proxy-Server benutzen können, um die Performance von Plone dramatisch zu steigern.
Obwohl Plone den Webserver benutzt, der Zope zugrunde liegt, funktioniert dieser ZServer sehr gut. Es ist aber kein vollständiger, industrietauglicher Webserver, auf den man die Welt loslassen sollte. Der Server hat einige Probleme, was mögliche Denial-of-Service-(DOS-)Attacken angeht, allerdings sind das in ZServer obskure und schwer zu findende Probleme. Es sind keine Attacken gegen ZServer bekannt, die diese Probleme ausnutzen, was aber vielleicht an deren relativ obskurem Charakter in der realen Welt liegt. ZServer ist nicht speziell als industrietauglicher Server entworfen worden, und da seine Eigenschaften ausreichend vollständig sind, wird er nicht weiterentwickelt. Durch die Aktualisierung eines Servers wie Apache können Sie garantieren, dass Ihre Besucher einen robusten, sicheren Server zu Gesicht bekommen. Wenn Sie natürlich eine Intranet- oder andere Anwendung für vertrauenswürdige Benutzer entwickeln, ist das möglicherweise kein Problem.
Abbildung 10.5 zeigt, wie eine solche Einstellung aussehen könnte. Sie zeigt keine echten Rechner, sondern nur Dienste. Eine Anfrage käme normalerweise aus dem Internet zur Firewall, um dann an Apache und Plone zu gelangen. All diese Dienste könnten auf verschiedenen Rechnern laufen. Der wichtige Punkt ist der, dass nicht vertrauenswürdige Benutzer keinen Zugriff auf Plone erhalten sollten, außer über einen Proxy.
Abbildung 10.5. Funktionsweise des Virtual Hosting
Das Vorschalten eines Webservers wie Apache vor Plone bringt eine Reihe nützlicher Dienste mit sich, die ZServer nicht hat. Apache bietet z.B. Folgendes: Rewriting von URLs (Uniform Resource Locator), Unterstützung von SSL (Secure Sockets Layer), Caching, Inhaltsdekomprimierung, Virtual Hosting, Proxy-Dienste auf andere Webservices, Prüfung eingehender Anfragen usw. Die am häufigsten gestellte Frage ist die, wie man eine URL wie http://localhost:8080/Plone in etwas Freundlicheres wie http://ihresite.com ändert. Das bezeichnet man als URL-Rewriting. Ein Proxy-Server ist dafür zwar nicht notwendig, aber mit einem solchen ist das viel einfacher.
Eine beliebte Methode für die Proxy-Weiterleitung zu Plone besteht im Einsatz eines HTTP-Proxys (Hypertext Transfer Protocol). Apache bewerkstelligt das mit Hilfe des Moduls mod_proxy. Wenn ein Proxy-Server eine Anfrage nach einer Seite erhält, führt er verschiedene Funktionen aus. Dann wird eine neue Anfrage erzeugt und an den ZServer geschickt. Dessen Antwort wird an den Server und dann an den Client zurückgegeben. Natürlich ist das für den Client alles transparent. Er stellt ganz normale Anfragen an einen Server.
Hinweis
Die alte Methode, Apache mit Plone zu verbinden, ist die über Fast CGI oder Persistent CGI. Diese sind schwieriger zu konfigurieren und sogar langsamer im Betrieb. Zwar existiert eine Menge alter Dokumentation zu diesen Themen, aber heute gibt es effizientere Lösungen. Daher kann ich diese alten Methoden nicht empfehlen.
Plone konfigurieren
Bevor Sie Ihren Proxy-Webserver konfigurieren, müssen Sie zuerst Plone konfigurieren. Da jeweils nur ein Server einen Port belegen kann, ändern Sie Plone so, dass es einen Port mit einer höheren Nummer belegt. Normalerweise wäre das ein Port, der von der Firewall blockiert wird und von außen nicht erreichbar ist. Beispiel-Ports sind 8080, 9090, 9673 usw. Kapitel 2 enthält Informationen darüber, wie Sie die Ports ändern können, auf denen Ihr Plone-Server läuft.
Als Nächstes möchten Sie wahrscheinlich mit Hilfe von URL-Rewriting die URL Ihrer Site ändern. Da das Plone-Objekt in der Zope-Objektdatenbank (ZODB) liegt und eine ID hat, greift man darauf zu, indem diese ID in die URL gesetzt wird, wie in http://localhost:8080/Plone. Um das etwas freundlicher zu machen, müssen Sie die Anfrage an den Webserver von http://ihresite.com in eine Anfrage an das richtige Objekt in Zope übersetzen. Dafür haben Sie je nach Bedarf zwei leicht unterschiedliche Möglichkeiten. Wenn Sie einen Proxy-Webserver benutzen oder Ihre Sites auf Domain-Namen basieren, können Sie ein Virtual Host Monster (VHM) benutzen. Dies ist ein benutzerfreundliches und mächtiges Objekt, das Ihnen das Leben sehr viel leichter machen wird, daher empfehle ich es wärmstens. Sie benötigen in der Wurzel einer Zope-Instanz nur ein VHM. Das VHM-Objekt sitzt in der Wurzel einer Zope-Site und fängt alle eingehenden Anfragen ab. Dann ändert es die Anfragen, damit sie an den gewünschten Teil von Zope gehen.
Um ein VHM zu erstellen, gehen Sie im ZMI zur Zope-Wurzel und wählen Virtual Host Monster im Dropdown-Menü aus. Im dann erscheinenden Formular geben Sie eine ID ein, z.B. vhm (wie die ID genau aussieht, spielt keine Rolle).
Wenn Sie einen Proxy-Webserver vor Plone benutzen, machen Sie an diesem Punkt mit der Konfiguration dieses Webservers im Abschnitt "Konfigurieren des Proxy-Servers" weiter.
Der nächste Schritt ist nur dann notwendig, wenn Sie keinen Proxy-Webserver benutzen. Klicken Sie auf das VHM-Objekt, das Sie im ZMI erstellt haben, und wählen Sie dann den Mappings-Reiter, der eine Liste der verfügbaren Abbildungen von Hosts auf dieses Objekt anzeigt. Eine Abbildung nimmt eine ankommende Anfrage und bildet sie mit der folgenden Syntax auf Plone ab:
host/pfad
wobei host der abgebildete Hostname und pfad der eigentliche Pfad zu dem Objekt in Zope ist. Beispiel:
http://www.einesite.com/Plone
Um zu garantieren, dass alle Namensvarianten auf den Pfad abgebildet werden, können Sie in der Abbildung Joker benutzen. Im folgenden Beispiel werden alle Unterdomains von einesite.com abgebildet:
*.einesite.com/Plone
Um diese Abbildung hinzuzufügen, gehen Sie zum Mapping-Reiter, geben eine Abbildung pro Zeile ein und klicken auf Save. Das bedeutet, Sie können mit den abgebildeten Adressen nicht mehr auf die Wurzel Ihrer Zope-Site zugreifen. Glücklicherweise können Sie aber mit einer IP-Adresse weiterhin auf die Wurzel Ihres Zope-Servers zugreifen. Das funktioniert weiterhin, weil numerische Adressen von der Abbildung nicht betroffen sind. Abbildung 10.6 zeigt, wie sich Abbildung 10.5 ändert, wenn Sie das Rewriting umgehen und direkt über die IP auf den Server zugreifen.
Abbildung 10.6. Virtual Hosting mit Root-Zugriff
Nun haben Sie eine benannte Domain wie einesite.com auf eine bestimmte Plone-Instanz abgebildet. Wenn eine Anfrage nach diesem Site-Namen ankommt, wird sie zu der Plone-Instanz weitergeleitet.
Konfigurieren des Proxy-Servers
Nachdem Sie Ihr VHM in Plone hinzugefügt haben, ist es Zeit, den Proxy-Server zu konfigurieren. Aber die Konfiguration von Proxy-Servern ist vom tatsächlich eingesetzten Server abhängig. Die folgenden Abschnitte behandeln die Eigenarten jedes Servers. Um das Virtual Hosting zum Laufen zu bekommen, müssen Sie allerdings eine URL an Plone weiterleiten, die das VHM-Objekt versteht.
Es gibt einen weiteren Vorteil des Virtual Hosting mit einem Proxy-Server, der erwähnt werden sollte. Die gesamte Konfiguration der Domains nehmen Sie im Proxy-Server, also außerhalb von Plone, vor. Das bedeutet, dass Ihr Systemadministrator ein vertrautes Werkzeug verwalten und benutzen kann, ohne sich um Plone kümmern zu müssen.
Die Weiterleitung funktioniert so, dass eine ankommende Anfrage so manipuliert wird, dass eine Anfrage mit einer speziellen URL an Plone gesendet wird. Diese Anfrage ist manipuliert und enthält alle Informationen, die Plone benötigt, um eine Antwort zu produzieren. Wenn die Antwort produziert und an die fragende Person zurückgeschickt wird, müssen alle URLs korrekt auf Ihre Site zeigen. Das garantiert, dass alle Links innerhalb Ihrer Seite korrekt sind.
Eine URL besteht aus den folgenden drei Hauptkomponenten:
- Aus einer IP-Adresse oder einem Hostnamen und Port für den Server, auf dem Plone läuft.
- Aus einer IP-Adresse oder einem Hostname dafür, wo Plone laufen soll, damit alle Links in den entstehenden Dokumenten die korrekte URL haben.
- Aus dem eigentlichen Objekt in Zope, das erreicht werden soll, und aus der ihm übergebenen URL.
Diese Information wird an Plone übergeben, indem die URL in eine lange, komplizierte URL in folgendem Format übersetzt wird (zur Verdeutlichung wurden hier Zeilenenden hinzugefügt):
http://[URL to server]:[port] /VirtualHostBase/[protocol]/[URL]:[port] /[path to virtual host root] /VirtualHostRoot/[actual URL]
Betrachten Sie folgendes Beispiel:
- Plone läuft auf einem Rechner mit der IP-Adresse 192.168.2.1 auf Port 8080. Beachten Sie, dass die IP-Adresse eine ist, auf die der Proxy-Server zugreifen kann. Es ist nicht die IP-Adresse für den Rest der Welt - um diese kümmert sich der Proxy-Server.
- Plone sollte unter www.meinesite.com auf Port 80 erscheinen.
- Das eigentliche Plone-Objekt findet man unter /Plone.
- Die ankommende Anfrage lautet /Members/andym.
Daraus wird die folgende lange URL erzeugt (eine Zeile):
http://192.168.2.1:8080 /VirtualHostBase/http/www.meinesite.com:80/Plone /VirtualHostRoot/Members/andym
Das macht man deswegen, weil das VHM-Objekt genau weiß, was es mit dieser URL machen soll, wenn es sie sieht. Es verändert sie und sendet die Anfrage an das Plone-Objekt. Ganz offensichtlich wird das Seitenfragment (/Members/andym) für jede Anfrage verschieden sein und muss berechnet werden. Aber wenn Sie wissen, was Sie vorhaben, können Sie Ihren Server nun konfigurieren.
Apache konfigurieren
Apache ist wahrscheinlich der beliebteste Server, der vor Plone gesetzt wird, und ist für alle Linux-, Unix- und Windows-Plattformen verfügbar (http://httpd.apache.org/). Nach der Installation von Apache müssen Sie Anfragen mit HTTP-Proxies an Plone weitergeben.
Um Apache zu konfigurieren, benötigen Sie den Zugriff auf Apaches Konfigurationsdateien, deren Ort von Ihrer Apache-Installation abhängt. Wenden Sie sich dazu an die Apache-Dokumentation. Unter Windows ist die Konfiguration vom Start-Menü aus erreichbar. Und unter Linux finden Sie die Apache-Konfiguration im Verzeichnis /etc unter /etc/apache/httpd.conf oder /etc/apache2/httpd.conf. Um diese Dateien verändern zu dürfen, müssen Sie normalerweise Root oder ein privilegierter Benutzer sein.
Hinweis
In diesem Beispiel wird Apache 2 verwendet, aber all diese Befehle sind mit früheren Versionen wie Apache 1.3.2 rückwärtskompatibel. Einige ältere Apache-Versionen (vor 1.3.2) sind allerdings für Probleme mit Cookies bekannt.
Die einfachste Art eines URL-Rewrite in Apache ist die Verwendung der eingebauten Rewrite- und Proxy-Module. Das bedeutet, dass Apaches Module mod_rewrite und mod_proxy aktiviert werden müssen. In Apache ist jede Site normalerweise in einem Virtual Host-Verzeichnis enthalten, dessen Beschreibung mit dem folgenden Code anfängt:
<VirtualHost *:80>
ServerName ihresite.com
# other configuration options
Sie müssen lediglich Rewrites aktivieren und die Rewrite-Regel (eine Zeile) hinzufügen, etwa so:
RewriteEngine On
RewriteRule ^/(.*) http://192.168.2.1:8080
/VirtualHostBase/http/www.meinesite.com:80/Plone
/VirtualHostRoot/$1 [L,P] ~CCC
</VirtualHost>
Die Rewrite-Regel, um die es hier geht, nimmt einen beliebigen ihr übergebenen Anfrage-String und fügt ihn ans Ende Ihrer festcodierten Rewrite-Regel an. Das [L,P] sagt Apache, dass das die letzte Rewrite-Regel ist und sie zum angegebenen Proxy weiterleiten soll. Danach müssen Sie Apache neu starten, um die Konfiguration zu aktualisieren. Weitere Informationen über das Rewriting finden Sie in der Dokumentation zu mod_rewrite unter http://httpd.apache.org/docs-2.0/misc/rewriteguide.html. Beachten Sie, dass Sie in diesem Fall die Information zur Rewrite-Regel in einer Virtual Host-Direktive gesetzt haben. Sie könnten in Apache auch mehrere solche Virtual Hosts haben, so dass PHP-, Perl- und Java-Sites alle nebeneinander auf einem Server liegen könnten.
Squid
Squid ist wegen seiner mächtigen Caching- und Konfigurationsmöglichkeiten bei Benutzern sehr beliebt. Es ist für Unix verfügbar, und es gibt mit Cygwin übersetzte Pakete für Windows. Ich habe die Windows-Version nicht speziell getestet, aber es heißt, sie funktioniere gut. Sie finden die Dateien zum Herunterladen unter http://www.squid-cache.org. Die folgenden Bemerkungen gelten für die letzte beim Schreiben dieses Buchs aktuelle stabile Version 2.5.
Die Installation von Squid aus seinem Quellcode ist recht einfach. Geben Sie nach dem Herunterladen folgende Befehle ein:
$ tar -xvf squid-2.5.STABLE3.tar.gz $ cd squid-2.5.STABLE3 $ ./configure --prefix=/usr/local/squid ... $ make all ... $ make install ...
Leider kennt Squid keine Rewrite-Regeln, mit denen Sie ankommende Anfragen vor ihrer Weiterleitung ändern können. Aber Squid Guard (http://www.squidguard.org) kann das. Ich habe die Version 1.2.0 getestet. Nach dem Herunterladen geben Sie folgende Befehle zur Installation ein:
$ tar -zxvf squidGuard-1.2.0.tar.gz $ cd squidGuard-1.2.0 $ ./configure ... $ make ... $ make install ...
Nun sind sowohl Squid als auch SquidGuard bereit, aber es müssen noch beide Konfigurationsdateien eingerichtet werden. Die Konfigurationsdatei für Squid finden Sie unter /etc/squid.conf. Es ist eine lange Datei, in der zum Glück alle Optionen detailliert erklärt werden. Das Folgende sind die wesentlichen Optionen, die man einstellen muss:
http_port 80 httpd_accel_host virtual httpd_accel_port 0 http_access allow all http_access allow localhost
Diese letzten beiden Zeilen sind Sicherheitsregeln, die den Zugriff über einen Browser erlauben. Das sind lasche Regeln, weil sie hinter einer Firewall getestet wurde. Wenn Sie Squid extern betreiben, sollten Sie sich über Zugriffsregeln im Detail informieren. Am leichtesten sichert man diese Regeln ab, indem man http_access allow all in http_access deny all ändert. Fügen Sie abschließend folgende Zeile zur Konfigurationsdatei hinzu:
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
Das richtet einen Redirect über Squid Guard mit der Konfigurationsdatei unter /etc/squid/squidGuard.conf ein. SquidGuard enthält von sich aus keine Konfigurationsdatei, aber eine Standarddatei, die die Virtual Host-Konfiguration enthält, sieht wie folgt aus:
dbhome /var/lib/squidguard/db
logdir /var/log/squid
acl {
default {
redirect http://192.168.2.1:8080
/VirtualHostBase/http/www.agmweb.ca:80
/Plone/VirtualHostRoot/%p
}
}
Schließlich hat Squid die benötigte Konfiguration, um den Datenverkehr so umzuleiten, dass das Host-Monster ihn versteht. Ankommende Anfragen werden dann von Squid behandelt und an Plone weitergegeben.
Microsoft Internet Information Services
Der MS-IIS (Internet Information Services) ist nicht gerade mein bevorzugter Server, aber weil viele Firmen ihn verwenden, habe ich hier einen Abschnitt über IIS aufgenommen. Leider kann IIS keine Weiterleitung auf die gleiche Weise wie Squid und Apache vornehmen, sondern Sie brauchen ein separates Plug-In dafür. Kurz vor der Veröffentlichung dieses Buches wurde ein freier Proxy namens IIS2Zope geschrieben, der genau diese Funktionalität bietet. Allerdings konnte ich ihn noch nicht auf einer Site testen, die performant genug wäre. Weitere Informationen finden Sie unter http://zope.org/Members/freshlogic/index_html.
Stattdessen möchte ich eine freie und einfach einzurichtende Lösung vorstellen. Früher haben Zope-Benutzer PCGI empfohlen, aber mit der Zeit wurde es langsam und schwer zu installieren. Durch die Verwendung der Sprache ASP von Microsoft und einiger Eigenschaften von IIS bekommen Sie eine schnellere Lösung. Sie heißt ASP 404 und führt die Weiterleitung mit Hilfe der Programmiersprache ASP aus.
Laden Sie unter http://www.zope.org/Members/hiperlogica/ASP404 die letzte Version herunter. Ich habe ASP404_1-0-b2.zip getestet. Wenn Sie die geladene Datei auspacken, werden Sie darin eine Datei namens default.asp finden. Nehmen Sie diese Datei, und kopieren Sie sie an die Wurzel der Site, die Sie weiterleiten möchten. Auf meinem Server ist das C:\inetpub\wwwroot.
Als Nächstes müssen Sie das Skript mit der passenden Angabe zum Ort Ihrer Plone-Site konfigurieren. Sie müssen das Skript in einem einfachen Texteditor öffnen und zwei Zeilen ändern, die die Variablen für die Site-Konfiguration enthalten. Konkret: Ändern Sie Zeile 18 von
zopeAddress = "http://127.0.0.1:8080"
in die Adresse des Zielservers. In diesem Beispiel ist das:
zopeAddress = "http://192.168.2.1:8080"
Ändern Sie dann Zeile 27 von
zopePath = "/"
wie folgt in die ID des Plone-Objekts:
zopePath = "/Plone"
Speichern Sie die Datei, und schließen Sie den Editor. Und schließlich müssen Sie IIS noch beibringen, dass er mit Plone sprechen soll. An dieser Stelle müssen Sie ein bisschen tricksen. Öffnen Sie den Internet Services Manager, den Sie normalerweise irgendwo in der Windows Systemsteuerung finden. Suchen Sie die weiterzuleitende Site, und greifen Sie auf die Site-Eigenschaften zu, wie in Abbildung 10.7 zu sehen ist.
Abbildung 10.7. Zugriff auf die Eigenschaften der Site
Wählen Sie in den Eigenschaften den Reiter Custom Errors, und scrollen Sie bis zum Fehler für 404 nach unten. Doppelklicken Sie auf den Fehler 404, und ändern Sie ihn wie folgt:
- Message Type: URL
- URL: /default.asp
Abbildung 10.8 zeigt die Einstellungen.
Abbildung 10.8. Die Weiterleitung für 404 einstellen
Speichern Sie die Änderungen mit einem Klick auf OK. Nun sollte Ihre Fehlerliste wie die in Abbildung 10.9 aussehen. Wenn das der Fall ist, sollte es richtig eingestellt sein. Greifen Sie über den Browser auf IIS zu, und Bingo - Sie sehen Plone!
Abbildung 10.9. Die Fehlerliste
Hier ist Folgendes passiert: Sie fangen den Fehler dafür ab, dass ein Element in IIS nicht gefunden werden kann. Das ASP-Skript, das Sie installiert haben, liest dann die Anfrage und leitet sie an Plone weiter. Dann nimmt es die Antwort entgegen und reicht Sie an IIS und schließlich an den Browser zurück. Das heißt, Sie haben ein einfaches Proxy-Programm zu IIS hinzugefügt.
Hierbei müssen Sie allerdings einige Punkte beachten. Der erste ist der, dass eine Seite nicht gefunden werden darf, wenn die Weiterleitung erfolgen soll, sonst wird das Skript nicht ausgeführt. Das hat Vor- und Nachteile. Sie können zu IIS Ordner und Bilder hinzufügen, die dem Benutzer anstelle derer aus Plone angezeigt werden, falls die Namen auf die Anfrage vom Browser passen. Zweitens wird die ankommende Anfrage geparst und weitergereicht, was in manchen Situationen mit all den möglichen HTTP-Anfragekonfigurationen verwirrend wird. Außerdem werden Sie feststellen, dass all Ihre Plone-Anfragen von IIS als 404-Fehler protokolliert werden, was Analysewerkzeuge für solche Dateien verwirren kann.
Im Großen und Ganzen hat diese Einstellung für die meisten Leute funktioniert, die sie verwendet haben, aber dass es eine Enterprise-Lösung sein kann, die mit jeder Situation fertig wird, ist eher unwahrscheinlich. Auf jeden Fall ist es eine gute Ausgangsbasis für diejenigen, die damit arbeiten und entwickeln möchten.
Fehlersuche bei Proxy-Servern
Nachdem Sie den Server eingerichtet und alles neu gestartet haben, werden Sie den Server testen wollen, indem Sie mit Ihrem Browser die Site besuchen. Nachdem Sie das ein paarmal gemacht haben, können Sie folgende Tipps verwenden, falls etwas nicht ganz so funktioniert, wie es sollte:
- Testen der Site: Die goldene Regel bei der Fehlersuche in Proxy-Servern ist die, die Site immer zu testen, indem Sie sich anmelden und Ihren Proxy-Server benutzen. Das können Sie tun, indem Sie direkt auf die IP-Adresse und den Port Ihres Plone-Servers zugreifen. Im vorigen Beispiel können Sie auf die Site zugreifen, indem Sie auf http://192.168.2.1:8080/Plone gehen, und schon haben Sie den Proxy-Server vollständig umgangen. Wenn Sie keine Probleme haben, auf diese Weise auf Plone zuzugreifen und sich darin anzumelden, aber sehr wohl Probleme bekommen, wenn Sie es über den Proxy-Server versuchen, ist es wahrscheinlich, dass etwaige Fehler auf Seiten des Proxy-Servers liegen. Einige ältere Versionen von Apache 1.3 machen bei der Anmeldung Probleme mit Cookies, d.h., Sie sollten auf die neueste Version von 1.3 aktualisieren.
- Prüfen der URL: Überprüfen Sie doppelt, ob Ihr Proxy-Server die richtige URL benutzt, die ziemlich lang und kompliziert sein kann. Unterteilen Sie sie an den Schrägstrichen, um jeden Teil zu untersuchen. Bedenken Sie, dass Sie Plone die richtigen Werte übergeben müssen, damit es die korrekte URL zurückgeben kann. Das heißt, Sie müssen sicherstellen, dass der Abschnitt /[protocol]/[URL]:[port] korrekt ist. Falls Ihre Site z.B. SSL verwendet, stellen Sie sicher, dass der Protokollabschnitt https und nicht http lautet.
Integration von Plone mit dem Dateisystem
Eine Integration von Plone mit dem Dateisystem mag etwas merkwürdig klingen, aber hiermit meine ich, dass man in Plone Inhalte benutzen kann, die im Dateisystem liegen. Natürlich besteht Plone schon aus einer Reihe von Dateien, die im Dateisystem installiert sind und von dort ausgeführt werden. Allerdings werden in Plone alle Inhalte in der ZODB gespeichert, wenngleich viele Leute mir sagen, sie möchten ihre Inhalte im Dateisystem speichern und von dort ausgeben.
Tatsächlich ist es so, dass viele Leute sich Zope und Plone anschauen, kleine Icons für Ordner sehen und annehmen, dass diese direkt den Ordnern und Elementen im Dateisystem entsprechen. Allerdings ist das überhaupt nicht der Fall. Angenommen, Sie würden eine relationale Datenbank benutzen, wie es die meisten Content-Management-Systeme (CMS) tun. Würden Sie das dann immer noch so sehen? Viele Leute denken automatisch, dass das ein Problem sei, aber hier ist eine Liste von Gründen, warum Sie das vielleicht haben möchten:
- Sie haben viele sehr große Inhaltselemente: Plone kann mit sehr großen Dateien ohne große Probleme umgehen. Datenbanken mit mehr als 10 Gigabyte sind nicht so selten und funktionieren einwandfrei. Wenn Sie es mit wirklich großen Inhalten zu tun haben (ein Kunde von mir benutzt Plone, um seine DVDs zu verwalten, d.h. die eigentlichen Inhalte der DVDs), sollten Sie sich CMFExternalFile und Apache anschauen. Bei wirklich großen Sachen ist die Verwendung von Apache oder eines anderen Dienstes zur Ausgabe Ihres Inhalts ein guter Ansatz.
- Sie möchten Inhalte mit Programmen verwalten, die vom Dateisystem lesen, z.B. Microsoft Word: Mit External Editor können Sie Inhalte mit Ihren lokalen Programmen bearbeiten, die in einer Plone-Site gespeichert sind. Wenn Sie Microsoft Word installiert haben, können Sie ein Microsoft Word-Dokument hochladen und es auf Ihrem Rechner mit Microsoft Word bearbeiten.
- Sie sind es leid, Code über das Web in kleinen Textbereichen zu bearbeiten: Schauen Sie sich wieder zuerst External Editor an. Zweitens, warum arbeiten Sie überhaupt über das Web? Wie ich in Kapitel 7 demonstriert habe, können Sie alle Skins und CSS-Templates im Dateisystem schreiben.
- Sie können meine Dateisystemwerkzeuge auf den Inhalt anwenden: Nun, Sie können Plone über FTP (File Transfer Protocol) und WebDAV mounten. Beide bieten dateisystemähnliche Schnittstellen, die mit Plone zusammenarbeiten.
- Sie möchten leicht Backups von Ihrem Inhalt anfertigen: In Kapitel 14 zeige ich, wie man Plone administriert und Backups davon macht und wie man einfache, inkrementelle Backups anlegt. Ein alternativer Speicher namens Directory Storage kann das ebenfalls bewerkstelligen (siehe http://dirstorage.sf.net).
- Sie möchten CVS/Subversion/BitKeeper oder ein anderes System zur Versionsverwaltung der Inhalte benutzen: Ja, das macht Sinn, ist aber leider noch nicht vollständig integriert. In zukünftigen Versionen, von denen eine provisorisch Plone 3 heißt, wird das wahrscheinlich integriert sein.
Mit diesen Punkten im Hinterkopf werden Sie nun verschiedene Methoden kennen lernen, um Inhalte aus Plone auszugeben, die im Dateisystem existieren.
Den Proxy-Webserver benutzen
Nun haben Sie also den Webserver so eingerichtet, wie es zuvor in diesem Kapitel beschrieben wurde. Auf die Gefahr hin, dass ich mich wiederhole: Dieser Webserver kann einfache Inhalte weit besser ausgeben, als Plone das jemals können wird. Wenn Sie eine hohe Anzahl von herunterzuladenden Dateien haben, sollten Sie diese in ein Verzeichnis auf Ihrem Server platzieren, das nicht zu Plone weitergeleitet wird, und von Plone aus Links darauf setzen. Die Benutzer werden einfach auf einen Link klicken und die Dateien ganz normal herunterladen.
In IIS kann man das leicht machen, da IIS automatisch zuerst prüft, ob die Datei existiert, bevor es einen Fehler 404 ausgibt. Apache benötigt dafür nur zwei zusätzliche Zeilen in der Konfiguration (im folgenden Code DocumentRoot und die erste RewriteRule):
<VirtualHost *:80>
ServerName ihresite.com
# other configuration options
DocumentRoot /var/downloads
RewriteEngine On
RewriteRule ^/download(.*) - [L]
RewriteRule ^/(.*) http://192.168.2.1:8080
/VirtualHostBase/http/www.meinesite.com:80
/Plone/VirtualHostRoot/$1 [L,P]
</VirtualHost>
In diesem Beispiel platzieren Sie den Inhalt in /var/downloads, und die URLs zu den über Apache herunterladbaren Inhalten fangen alle mit /download an.
Der Rewrite-Mechanismus sieht dann, dass die URL mit /download anfängt, und wird daher keinerlei Änderungen daran vornehmen, was mit dem Bindestrich (-) ausgedrückt wird. Durch die Angabe des [L] am Zeilenende werden keine weiteren Rewrite-Regeln angewendet, d.h., es findet keine Weiterleitung statt, und Apache macht ganz normal weiter, indem es die Datei ausgibt.
Dieser Trick ist hilfreich, wenn Sie andere Dienste auf dem gleichen Virtual Host anbieten möchten. Auf einer Site habe ich Mailman laufen, einen Mailinglisten-Manager. Alle Mailman-URLs fangen mit /mailman oder /pipermail an. Nachdem Mailman korrekt eingerichtet und konfiguriert ist, habe ich folgende zwei Zeilen zur Konfiguration hinzugefügt, damit es schön funktioniert:
RewriteRule ^/mailman(.*) - [L] RewriteRule ^/pipermail(.*) - [L]
Der einzige Haken hierbei ist, dass Sie keine Objekte zu Plone hinzufügen können, deren Namen mit Ihren Regeln kollidieren, z.B. Ordner mit ähnlichen Namen. In diesem Beispiel wären etwa mailman, pipermail oder download verboten, weil die Benutzer diese Objekte nie sehen würden. Mit dieser Methode könnten Sie den Zugriff auf bestimmte Teile Ihrer Site einschränken, aber ich rate Ihnen, dafür lieber die Sicherheitsmechanismen von Plone zu verwenden. Sonst verwaltet Plone den Inhalt nicht wirklich, d.h., es gibt keine Sicherheit, keinen Workflow und keine Metadaten dazu. Der Inhalt liegt völlig außerhalb von Plone. Eventuell kann das aber auch eine gute Lösung sein.
Eine Datei in Plone verwalten
CMFExternalFile ist ein Produkt, mit dem Sie Inhalte aus Plone heraus verwalten können, obwohl die Kerninhalte im Dateisystem liegen. Falls Sie ExternalFile und CMFExternal im oberen Teil dieses Kapitel schon installiert haben, dann sind Sie bereit. Wenn nicht, gehen Sie noch einmals zum Abschnitt "Plone-Produkte installieren" zurück.
Nach deren Installation gehen Sie zur Plone-Schnittstelle zurück. Wenn Sie zu Plone gehen, werden Sie bemerken, dass Sie nun einen neuen Inhaltstyp namens External File hinzufügen können. Den Typ External File fügen Sie genauso hinzu wie eine normale Datei, was ich in Kapitel 3 beschrieben habe. Wenn Sie in den Programmcode schauen, werden Sie sogar festellen, dass die gleichen Templates verwendet werden.
Es gibt hierbei allerdings einen kleinen Unterschied. Die Datei wurde tatsächlich im Dateisystem hinzugefügt. Sie wird in ein neues Verzeichnis im var-Verzeichnis Ihrer Plone-Installation platziert. Wenn Sie nicht genau wissen, wo das ist, gehen Sie ins Control Panel, und suchen Sie nach dem Verzeichnis, das von der Instanzwurzel aufgelistet wird. Mein var-Verzeichnis befindet sich in /var/zope/var. Darin ist ein Verzeichnis namens externalfiles. In diesem werden alle Dateien erzeugt, die Sie in Plone hochladen. Wenn Sie sich das Verzeichnis anschauen, sollten Sie die Datei finden, die Sie hochgeladen haben.
Was Sie nun haben, ist eine hybride Speicherlösung, die die Datei im Dateisystem speichert und die Metadaten zu dem Objekt (Beschreibung, Stichwörter etc.) in Plone. Das ist besser als eine Lösung mit nur einem Webserver, weil die Inhalte über Sicherheit, Metadaten usw. verfügen. Wenn Sie wirklich wollten, könnten Sie durch die korrekte Konfiguration Ihres Webservers erreichen, dass der Inhalt von Apache ausgegeben wird, indem Sie das Verzeichnis aus dem externalfiles-Verzeichnis lesen.
FTP-Zugriff auf Plone
FTP ist eine gute Möglichkeit, Inhalte hoch- und herunterzuladen, um sie ohne einen Browser zu bearbeiten. Um FTP in Plone zu aktivieren, müssen Sie sicherstellen, dass es auf dem Server aktiviert ist. Gehen Sie noch einmal zu Kapitel 2, um zu sehen, wie Sie solche Dienste hinzufügen und bearbeiten können. Kurz gesagt: Vergewissern Sie sich, dass Ihre Zope-Konfigurationsdatei, zope.conf, Folgendes enthält:
<ftp-server>
address 21
</ftp-server>
Hinweis
Wenn Ihr Server den Port 21 benutzt, müssen Sie sicherstellen, dass kein anderes Programm diesen Port belegt. Außerdem gilt für die meisten Unix-Systeme, dass Sie Ihren Dienst unter Root starten müssen, damit er das Recht hat, einen Port mit einer kleinen Nummer zu belegen. Dazu müssen Sie den effektiven Benutzer in Ihrer Zope-Konfigurationsdatei einstellen. Lesen Sie dazu den Abschnitt "Sicherheit auf Ihrem Server" in Kapitel 9.
Als Nächstes benötigen Sie einen FTP-Client, um auf den Server zuzugreifen. Unter Windows können Sie einfach den Internet Explorer benutzen, indem Sie die Adresse des Servers in der Adresszeile eingeben. Setzen Sie die Adresse auf den Pfad Ihres Zope-Servers (z.B. ftp://localhost:8021/), und Sie bekommen Zugriff auf die Objekte in Ihrer Site, wie in Abbildung 10.10 zu sehen ist.
Abbildung 10.10. FTP-Zugriff im Internet Explorer
Wenn Sie einen Benutzernamen und ein Passwort benötigen, um auf den Server zuzugreifen, dann müssen Sie diese in folgendem Format zur URL hinzufügen: ftp://benutzer:passwort@localhost:8021/. Es gibt viele andere FTP-Clients, bei denen Sie eine ausgefeiltere Schnittstelle haben können, wenn Sie möchten. Unter Linux sind ebenfalls viele FTP-Clients verfügbar, ob auf der Kommandozeile oder mit einer GUI, z.B. gFTP und Konqueror.
WebDAV-Zugriff auf Plone
WebDAV ist ein System zur Erstellung von Inhalten mit Systemen wie Plone, die HTTP benutzen. Damit können Sie einen Plone-Server auf ein Dateisystem abbilden. Um das zu aktivieren, müssen Sie die Zope-Konfigurationsdatei so bearbeiten, wie ich in Kapitel 2 beschrieben habe, damit die Datei zope.conf Folgendes enthält:
<webdav-source-server>
address 1980
</webdav-source-server>
Für Windows gibt es das Programm WebDrive unter http://www.webdrive.com/, samt einer freien Testversion, die Sie ausprobieren können. Nach der Installation von WebDrive fügen Sie eine Verbindung zum Plone-Server hinzu, und dann müssen Sie nur noch aus dem Dateisystem direkt auf Ihr Plone zugreifen, indem Sie zum Windows Explorer gehen, wie in Abbildung 10.11 gezeigt wird.
Abbildung 10.11. Zugriff auf Ihre Plone-Inhalte mit WebDrive
Unter Unix können Sie Cadaver (http://www.webdav.org/cadaver) verwenden, einen Client auf der Kommandozeile mit vielen Funktionen. Nach der Installation von Cadaver können Sie eine Verbindung zur Plone-Site von der Kommandozeile aus herstellen. Beispiel:
cadaver http://192.168.2.1:8080/Members/Plone
Inhalte mit erweiterten Editoren bearbeiten
Wie ich schon mehrfach betont habe, ist es keine gute Idee, Ihre Benutzer dazu zu zwingen, Inhalte in einem HTML-Textbereich schreiben und bearbeiten zu müssen. Manche Editoren haben dafür eine Lösung parat.
Einer davon ist Epoz, mit dem die Benutzer Dokumente direkt im Browser bearbeiten und ändern können, ohne etwas über HTML wissen zu müssen. Wenn Sie es mit vielen Benutzern zu tun haben, die Inhalte eingeben, können diese nach der Installation von Epoz HTML-Inhalte ändern, ohne dass sie HTML verstehen müssen. Für eine noch ausgefeiltere Bearbeitung können Sie External Editor verwenden, mit dem Sie Inhalte in einem lokalen Programm wie Microsoft Word bearbeiten können.
WYSIWYG-Editor im Browser
Die getestete Version von Epoz 0.7.4 finden Sie unter http://zope.org/Members/mjablonski/Epoz/0.7.4. Epoz verlangt einen modernen Browser, den die meisten Plone-Benutzer aber sowieso benötigen. Die erforderlichen Browser sind Internet Explorer 5.5+, Mozilla 1.3.1+ und Netscape 7.1+.
Laden Sie Epoz herunter, und installieren Sie es wie üblich. Danach müssen Sie Ihre persönlichen Plone-Voreinstellungen so ändern, dass Sie Epoz benutzen können. Melden Sie sich bei Plone an, klicken Sie auf Meine Einstellungen, und wählen Sie dort wieder Meine Einstellungen. Öffnen Sie auf der Meine Einstellungen-Seite das Content Editor-Dropdown-Menü, wählen Sie die Option Epoz, und klicken Sie dann auf Speichern, um Ihre Änderungen zu bestätigen.
Nun haben Sie Ihren Editor gewählt und können zu einem beliebigen Dokument gehen, um dann auf den Bearbeiten-Reiter zu klicken. Sie werden bemerken, dass das Feld Haupttext sich erheblich zu einem erweiterten Editor verändert hat. Der Editor sollte ziemlich selbsterklärend für Sie sein und vertraute Buttons wie B für fett (bold), I für kursiv (italics) usw. enthalten (siehe Abbildung 10.12).
Abbildung 10.12. Bearbeiten eines Dokuments in Epoz
External Editor
External Editor ist ein Werkzeug, das Sie bei allen möglichen Plone-Inhalten, Templates und Code benutzen können. Damit können Sie in einer Plone-Site gespeicherte Objekte mit lokalen Programmen Ihrer Wahl bearbeiten. Sie können etwa ein in Ihrer Plone-Site gespeichertes Microsoft Word-Dokument lokal mit Microsoft Word bearbeiten. Sobald Sie das Dokument speichern, wird es automatisch an Plone gesendet.
External Editor ist in den Plone-Installationspaketen enthalten und wird auf dem Server automatisch eingerichtet. Die Anwendung ist insofern ungewöhnlich, als sie aus zwei Komponenten besteht: einer für den Server und einer für jeden Client, der das Produkt benutzen möchte.
Installation des Server-Produkts
Es ist nicht notwendig, das Server-Produkt zu installieren, falls Sie bei der Installation Ihrer Plone-Site ein Installationsprogramm verwendet haben. Wenn das nicht der Fall ist, dann finden Sie das serverseitige Produkt unter http://zope.org/Members/Caseman/ExternalEditor. Installieren Sie das Produkt auf die übliche Weise, die ich am Anfang dieses Kapitels beschrieben habe, und starten Sie dann Ihr Zope neu.
Melden Sie sich dann in Plone als Administrator an, klicken Sie auf Plone Konfiguration, und wählen Sie dann Portal Einstellungen. Wählen Sie die Option Externe Editoren ermöglichen, um sicherzugehen, dass Sie Objekte mit diesem Werkzeug bearbeiten können.
Installation des Client-Produkts
Dieses Produkt müssen Sie auf jedem Client-Rechner installieren, der auf die Plone-Site zugreift. Genauso wie Sie in Ihrem Browser Flash oder QuickTime installieren würden, installieren Sie den clientseitigen Code von External Editor. In einem Intranet oder auf dem eigenen Rechner kann man das leicht machen, aber auf öffentlichen Rechnern kann das schon schwieriger sein.
Für Windows 2000 und XP laden Sie das ausführbare Windows-Installationsprogramm namens zopeedit-win32-0.7.1.exe herunter. Wenn Sie auf die Datei doppelklicken, geht es mit der grafischen Oberfläche weiter. Sie müssen nur alle Voreinstellungen auswählen. Dabei werden die Optionen für Internet Explorer ausgewählt. Um zu überprüfen, ob das auch funktioniert hat, machen Sie Folgendes:
- Im Fenster Arbeitsplatz wählen Sie Extras - Ordneroptionen.
- Im Fenster Dateitypen scrollen Sie bis nach unten, wo Sie die Zope-Erweiterung sehen sollten (siehe Abbildung 10.13).
Abbildung 10.13. Dateityp-Konfiguration unter Windows
Unter Unix laden Sie das Archiv namens zopeedit-0.7-src.tar.gz herunter. Dieses müssen Sie dann auspacken und einrichten, wie in den Unix-Installationsanweisungen unter http://zope.org/Members/Caseman/ExternalEditor/install-unix beschrieben ist. Folgendes ist ein Beispiel mit der Version 0.7:
$ tar -zxf zopeedit-0.7.1-src.tgz $ cd zopeedit-0.7.1-src $ python setup.py install ...
Nachdem Sie den Client installiert haben, müssen Sie alle Browser konfigurieren, die Sie benutzen möchten. Anweisungen für Konqueror, Galeon und andere Browser sind online unter Zope.org verfügbar. Die folgende schrittweise Konfiguration gilt für Mozilla:
- Wählen Sie Edit - Preferences.
- Unter Navigator wählen Sie Helper Applications.
- Klicken Sie auf den New Type-Button.
- Geben Sie eine Beschreibung ein, z.B. Zope Editor.
- Als MIME-Typ geben Sie appliation/x-zope-edit ein.
- Als Application wählen Sie die Hilfsanwendung Python-Datei.
- Klicken Sie auf OK, und schließen Sie dann die Voreinstellungen.
External Editor öffnet einen Editor. Welcher Editor erscheint, hängt vom Inhalt einer Konfigurationsdatei ab. Um den Editor Ihrer Wahl aufzurufen, ändern Sie diese Datei. Sie können sie unter verschiedenen Namen - je nach Ihren Einstellungen - an folgenden Orten finden:
- Wenn Sie Plone unter Windows mit einem Installationsprogramm installiert haben, finden Sie die Datei unter C:\Programme\Plone\Zope\pwi\zopeedit.ini.
- Wenn Sie unter Windows das separate Installationsprogramm für External Editor verwendet haben, finden Sie die Datei in dem Verzeichnis, wo Sie External Editor installiert haben. Standardmäßig ist das C:\Programme\ZopeExternalEditor\zopeedit.ini.
- Unter Unix heißt die Datei .zope-external-edit und befindet sich im Home-Verzeichnis des Benutzers, der das Programm ausführt, z.B. /home/andy/.zope-external-edit. Es ist deswegen im Home-Verzeichnis des Benutzers, weil jeder Benutzer eventuell eigene Einstellungen hat.
Diese Datei enthält eine Abbildung von Erweiterungen auf den gestarteten Editor. Um z.B. den Editor für Page Templates zu ändern, finden Sie die folgenden Zeilen mit meta-type:Page-Template:
[meta-type:Page Template] extension=.pt
Sie könnten z.B. Scite benutzen, einen freien Texteditor. Um ihn für Page Templates zu verwenden, müssen Sie die Datei wie folgt ändern:
[meta-type:Page Template] extension=.pt editor=scite
Damit External Editor funktioniert, muss jeder Aufruf des Editors einen eigenen Prozess starten. Das heißt, dass das External Editor-Client-Programm diesen Prozess überwachen kann, um zu sehen, wann er beendet wird. Für manche Editoren, die versuchen, mehrere Dateien im gleichen Prozess zu öffnen, ist das ein Problem. Um z.B. VIM in KDE zu laden, müssen Sie eine separate Shell wie folgt ausführen:
editor=konsole -e vim
Ein Word-Dokument bearbeiten
Die Bearbeitung eines Microsoft Word-Dokuments kann man tatsächlich ziemlich einfach einrichten. Sie brauchen auf Ihrem lokalen Rechner nur ein installiertes Microsoft Word. Laden Sie Ihr Microsoft Word-Dokument in Plone als Standarddatei hoch, und zeigen Sie die Datei dann in Plone an. Klicken Sie auf das Icon mit dem kleinen Bleistift in der oberen rechten Ecke Ihrer Seite. Dann wird auf Ihrem Rechner Microsoft Word gestartet, und das Dokument vom Server wird angezeigt. Nun können Sie den Inhalt nach Belieben bearbeiten, und bei einem Klick auf Speichern wird die Datei automatisch in Plone gespeichert.
Page Templates über External Editor bearbeiten
Um ein Page Template zu erstellen, verwenden Sie das ZMI. Wenn Sie den Ordner mit dem Inhalt des Page Templates anzeigen, sehen Sie rechts vom Objekt bestimmt ein zusätzliches Icon mit einem Bleistift. Ein Klick auf diesen Bleistift aktiviert External Editor und öffnet das Page Template im gewählten Editor. Sie müssen nur einen guten Editor finden, mit dem Sie in Page Templates schreiben können. Da Page Templates lediglich aus XHTML (Extensible HTML) bestehen, benutze ich einen einfachen Editor, der XML (Extensible Markup Language) unterstützt. Die folgenden Abschnitte behandeln zwei Beispiel-Editoren: Dreamweaver und HTML-Kit.
Dreamweaver MX
Ändern Sie den Teil [meta-type:Page Template] der Konfigurationsdatei so, dass er auf Dreamweaver zeigt. In meiner Installation sieht das wie folgt aus:
[meta-type:Page Template] extension=.pt editor=C:\Programme\Macromedia\Dreamweaver MX\Dreamweaver.exe
Ein Klick auf das Bleistift-Icon zur Bearbeitung in External Editor öffnet es nun direkt in Dreamweaver, wie in Abbildung 10.14 zu sehen ist. Leider öffnet Dreamweaver nicht jede Datei in einer separaten Instanz, d.h., Sie können nicht mehr als eine Datei gleichzeitig bearbeiten.
Abbildung 10.14. Page Templates mit Dreamweaver bearbeiten
HTML-Kit
HTML-Kit ist ein freier und mächtiger HTML-Editor und die bevorzugte Wahl vieler Plone-Entwickler. Um HTML-Kit mit External Editor zu benutzen, ändern Sie Ihre Konfigurationsdatei so, dass sie auf HTML-Kit zeigt. In meiner Installation sieht das wie folgt aus:
[meta-type:Page Template] extension=.pt editor=C:\Programme\Chami\HTML-Kit\Bin\HTMLKit.exe
Beim Klick auf das Bleistift-Icon zur Bearbeitung in External Editor wird nun direkt HTML-Kit gestartet. Sie können auch eine Einstellung ändern, mit der alle Dateien in einem separaten Prozess geöffnet werden. Wählen Sie Edit - Preferences - Startup, und aktivieren Sie Limit to a single HTML-Kit instance. Nun werden alle Dateien in einem neuen Prozess geöffnet.
Andy McKay: Plone. Addison-Wesley 2005
Es wurde zuletzt von ctheune am 30.04.2006 14:15 aus der local Quelle via
/tmp/plonebook/PloneBook/de/ aktualisiert.













