3. Aufruf über einen Webserver
Die wohl eleganteste Art xml2html zu verwenden, ist die Einbingung des Tools in einen Webserver als CGI-Skript.
Es ermöglicht, sich die erstellten Seiten direkt im Webbrowser anzusehen, ohne den Umweg über das statische Generieren
auf Kommandozeilenebene gehen zu müssen.
Hierfür muss der Anwender allerdings das Recht besitzen, eigene CGI-Skripte auf den Server ausführen zu dürfen,
was nicht bei allen Webhostern der Fall ist.
Zum Entwickeln der Seiten eignet sich natürlich sehr gut der eigene Webserver (localhost), für die spätere Verbreitung
im Internet muss dann ein geeigneter Webhoster gefunden werden.
Nachteil dieser Methode ist die Geschwindigkeit mit der die Seiten erstellt bzw. ausgeliefert werden. Jede Seite wird
"on-the-fly" durch den Webserver generiert, was zu Zeitverlusten führt. Eine Möglichkeit dieses Problem zu beheben, ist das
Cachen bereits generierter Seiten, auf das später noch näher
eingegangen wird.
Da das Konfigurieren von Webservern eine nicht triviale Aufgabe ist, soll hier nur eine Möglichkeit beschrieben werden,
wie sich das Tool relativ unkompliziert in den Apache integrieren lässt.
Ausführlichere Information über die einzelnen Schritte und Direktiven finden sich im Manual des
Apache.
Eine wesentliche Voraussetzung für die Nutzung ist das Freigeben von .htaccess-Dateien
in der Apache-Konfiguration.
Dazu sollte sich im Konfigurationsfile httpd.conf des Apache, welches standartmässig
im Verzeichnis: /etc/httpd liegt, folgender oder ein ähnlicher Eintrag befinden:
<directory "/usr/local/apache/htdocs">
AllowOverride All
Order allow,deny
Allow from all
</directory>
|
Damit wird festgelegt, wer wie auf das Dokumentenverzeichnis und dessen Unterverzeichnisse zugreifen darf.
Wesentlich ist für xml2html die Option AllowOverride All.
Durch die Angabe von All lassen sich für eigene Verzeichnisse - etwa public_html/
im Home-Directory - eigene Verarbeitungshinweise in einer speziellen Datei angeben.
Der Name dieser Datei steht ebenfalls in der Konfiguration des Webservers.
Beim Apache lautet er defaultmässig: .htaccess (Direktive: AccessFileName
in der httpd.conf)
Im Unterverzeichnis xml/ des xml2html-Verzeichnisses befindet sich eine
.htaccess-Beispieldatei:
#RemoveHandler .html
AddType application/x-tohtml .html
AddType application/x-tohtml2 .xml
Action application/x-tohtml /cgi-bin/xml2html-fhlayout
Action application/x-tohtml2 /cgi-bin/xml2html
allow from all
|
Die AddType-Direktive bewirkt hierbei, dass alle Dateien mit der Endung .html
(MIME-Typ) durch die Applikation x-tohtml und alle .xml Dateien durch
x-tohtml2 verarbeitet werden.
Die Action-Direktive stellt nun die Verbindung zwischen dem Type (x-tohtml)
und dem tatsächlichen Speicherort der Applikation her.
Sie beschreibt also, wo der Apache das xml2html-Skript findet.
Hierbei wird der Pfad relativ zum Document-Root des Webservers angegeben.
Im obigen Beispiel befindet sich das Tool also im Verzeichnis:
tobyto@linux:~/public_html > /usr/local/httpd/cgi-bin/xml2html
|
wenn Document-Root dabei /usr/local/httpd/ ist.
Um den Zugriff durch den Apache-Server auf das Skript zu ermöglichen, sind zwei Wege denkbar.
Erstens ist das einfache Kopieren von xml2html in das cgi-bin-Verzeichnis des Apache möglich.
Für das Kopieren werden einmalig Root-Rechte benötigt. Dieser Weg sollte der übliche auf dem eigenen System sein.
Soll xml2html nicht nur genutzt, sondern auch weiterentwickelt werden, oder spricht etwas Anderes
gegen das Kopieren, kann auch ein symbolischer Link auf xml2html aus dem cgi-bin-Verzeichnis
des Apache gesetzt werden.
Dies ermöglicht dem Entwickler (nicht sinnvoll für Nutzer!) das Tool zu verändern, ohne ständig Root-Rechte nutzen zu müssen,
da er nicht direkt im cgi-bin-Verzeichnis des Apache arbeitet.
Für diesen Weg sind allerdings noch ein paar Voraussetzungen zu erfüllen. Es muss erstens ein symbolischer Link aus
dem cgi-bin-Verzeichnis zur aktuellen Position des Apache gesetzt werden:
tobyto@linux:~/public_html > ln -s /pfad_zum_skript_verzeichnis/cgi-bin/xml2html /usr/local/httpd/cgi-bin/xml2html
|
Ausserdem muss in dem schon oben genannten <directory>-Eintrag unter dem Punkt
Options das Ausführen von CGI-Skripten sowie das folgen symbolischer Links erlaubt werden.
Dies geschieht über:
ExecCGI bzw. +FollowSymLinks
|
Eine weitere Besonderheit der obigen .htaccess-Datei liegt im Aufruf des Skriptes.
Der Dateiendung .html wird statt
/cgi-bin/xml2html die Action-Direktive /cgi-bin/xml2html-fhlayout zugeordnet.
Dabei handelt es sich nicht um ein anderes Skript, sondern lediglich um eine Aufrufkonvention.
Auf diese Art lässt sich xml2html mitteilen,
dass standardmässig für jede Seite das Stylefile fhlayout.style als default-style eingebunden werden soll.
Dieser Direktive entspricht also dem Shell-Aufruf:
tobyto@linux:~/public_html > xml2html -defstyle fhlayout.style ...
|
Hierfür muss das Skript nicht einmal kopiert werden - es genügt, einen symbolischen Link mit dem Name von Skript
und Stylefile auf das Original-Skript zu erzeugen. Das sei hier nur am Rande erwähnt - Stylefiles werden an
anderer Stelle im Tutorial näher erläutert.
Abschliessend ist zu beachten, dass die RemoveHandler-Direktive nur bei neueren Apache-Versionen funktioniert.
Wird etwa noch Version 1.2 eingesetzt, muss die RemoveHandler-Anweisung aus der .htaccess-Datei
entfernt werden.
Es darf ausserdem in der Apache-Konfigurationsdatei kein handler für .html installiert sein.
Der Apache muss nach der Bearbeitung seiner Konfigurations-Dateien neu gestartet werden.
Die vorgenommenen Änderungen werden erst nach dem erfolgreichem Neustart wirksam.
root@linux:/root > /etc/init.d/apache restart
|
Bei Änderungen an den .htaccess-Dateien muss allerdings kein Neustart durchgeführt werden,
da .htaccess-Dateien bei jedem Zugriff auf das Verzeichnis abgearbeitet werden.
Die oben genannte Beispieldatei muss somit nur in das Verzeichnis, in dem die zu verarbeitenden Seiten liegen, kopiert werden.
Bei richtiger Konfiguration des Apache werden die Seiten bei einem localhost-Aufruf durch einen Browser "on-the-fly"
vom Apache generiert.
|