World Wide Web - Grundlagen und Technologie

Aufgabe 10 (Server-Aspekte)

Konfiguration eines Servers und eines CGI-Scripts

Abgabe bis 2.7.2001


Ziel dieser Aufgabe ist es, einen HTTP Server selber zu konfigurieren und anschliessend ein CGI-Script auf diesem Server zur Verfügung zu stellen, dass eine Transformation einer XML und einer XSLT Eingabe in eine HTML Ausgabe durchführt (wie bereits in Aufgabe 7 an einem Beispiel ausprobiert wurde).

Aufgabe Tips
1. Als erster Schritt muss ein HTTP Server konfiguriert werden. Dazu wird der auf den tardis Maschinen bereits installierte Apache httpd verwendet, so dass die eigentliche Installation des HTTP Servers entfällt. Um einen HTTP Server zu konfigurieren, muss eine Umgebung zur Verfügung gestellt werden, innerhalb der der Server kontrolliert laufen kann. Dazu müssen Directories existieren, in denen der Server seine Konfiguration findet, die Dokumente findet, und in denen die Log-Files des Servers abgelegt werden können.
2. Nachdem der Server konfiguriert ist, soll ein CGI-Script geschrieben werden, dass es einem Benutzer über das Netz ermöglicht, ein XML und ein XSLT File anzugeben und das Resultat der Verarbeitung (von dem wir jetzt einfach mal annehmen, dass es ein HTML-Dokument sein wird...) angezeigt zu bekommen. Auf diese Weise muss der Benutzer keinen XSLT Prozessor lokal installiert haben. Um einen Dienst dieser Art erbringen zu können, muss natürlich zuerst einmal das entsprechende Programm auf dem Server installiert sein. Das ist in diesem Fall kein Problem, da der Saxon XSLT Prozessor aus Aufgabe 7 immer noch auf den Tardis Maschinen installiert ist.

Dann muss das auf dem Server installierte Programm über eine HTML-Seite zugänglich gemacht werden, die die Eingabe der wichtigen Daten erlaubt und dann ein CGI-Script aktiviert, dass die erforderlichen Kommandos ausführt und das Resultat an den Benutzer zurückliefert.

Die Abgabe der Übung besteht darin, dass Ihr den HTTP Server auf einem Rechner installieren und laufen lassen müsst, der die Transformation von XML und XSLT nach HTML dynamisch druchführt. Die URI, unter der wir den von Euch installierten und konfigurierten Server erreichen können, sowie zwei URIs für das HTML Form und das CGI Perl-Script (die Ihr also auch auf Eurem "normalen" HTTP Server zugänglich machen solltet) sendet bitte bis zum Abgabetermin an www-vl@dret.net.


Schritt 1 (Konfigurieren des HTTP Servers)

Als erstes muss das File a10.tgz heruntergeladen und im eignen Account gespeichert werden. Dieses File enthät alle notwendigen Files, um die Konfiguration des HTTP Servers durchführen zu können. Es wurde mittels des folgenden Kommandos erzeugt:

www01_10@tardis-a1:~> gtar cvfz a10.tgz server
server/
server/htdocs/
server/htdocs/cgi-bin/
server/htdocs/cgi-bin/showxml.cgi
server/htdocs/index.html
server/logs/
server/conf/
server/conf/httpd.conf
server/conf/mime.types
server/conf/srm.conf
server/conf/access.conf
www01_10@tardis-a1:~>

Zum Entpacken muss das Kommando gtar xvfz a10.tgz verwendet werden, das dann ein Directory server mit den Files darin erzeugt. Um die Konfiguration durchzuführen, muss nun das File server/conf/httpd.conf modifiziert werden. Dazu müssen in diesem File alle Vorkommen der von uns verwendeten UID www01_10 gegen die eigene UID ersetzt werden. Zudem muss die IP Adresse des Rechners eingetragen werden (in der Listen Direktive der Konfiguration), auf dem der HTTP Server gestartet werden soll (die IP Adresse kann mit nslookup <rechnername> abgefragt werden). Das Unschöne ist, dass aus diesem Grund jedesmal das Konfigurationsfile modifiziert werden muss, wenn der Server auf einem anderen Rechner gestartet werden soll, aber für diese Übung ist diese Einschränkung noch tragbar.

Wichtig ist auch noch, dass eine Port-Nummer gewählt wird, die grösser als 1023 ist, weil die Port-Nummern darunter nur für privilegierte Programme zugelassen sind. Ist die Konfiguration abgeschlossen (und bei dieser Gelegenheit empfehle ich ein kurzes Querlesen des httpd.conf, um sich einen Überblick der Möglichkeiten von Apache zu verschaffen, die im Übrigen noch viel weitergehen als in diesem simplen File verwendet), so kann der Server gestartet werden mit dem Kommando:

httpd -f <full_path_to_httpd.conf>

Testen kann man den Server jetzt ganz einfach mit einem Zugriff auf die URI http://<rechnername>:<portnummer>/, und wenn nichts passiert, so sollte man zuerst mal mit ps schauen, ob der Server überhaupt läft, und danach mal die Log-Files in server/logs/ konsultieren, um zu sehen, was der HTTP Server an Ausgaben erzeugt hat. Läft der HTTP Server schliesslich, so bekommt man im Browser die Startseite server/htdocs/index.html angezeigt.


Schritt 2 (Erstellen des CGI-Scripts)

Nachdem der HTTP Server nun läft, kann mit einem Druck auf den 'process it' Button noch nicht viel erreicht werden. Das liegt daran, dass server/htdocs/index.html in der Form, wie es in a10.tgz vorgegeben ist, kein HTML Form ist, sondern eine normale HTML Seite mit einem in dieser Form sinnlosen Submit-Button. Als erste Aufgabe muss nun also erreicht werden, dass der Submit-Button etwas tut, und dazu muss die HTML Seite in ein HTML Form überführt werden, was äusserst einfach ist.

Ist die Umwandlug von server/htdocs/index.html in ein HTML Form gelungen, so wird das Skript server/htdocs/cgi-bin/showxml.cgi ausgeführt, wenn der Benutzer den 'process it' Button drückt. Daraufhin wird dann entweder der Debug-Output gezeigt oder aber das Datum ausgegeben, was auch noch nicht ganz Sinn der Übung ist... Also muss offenbar auch noch server/htdocs/cgi-bin/showxml.cgi verändert werden, so dass es wirklich eine Transformation startet, anstatt das Datum auszugeben.

Zu diesem Zweck muss server/htdocs/cgi-bin/showxml.cgi so geändert werden, dass es den XSLT Prozessor Saxon aufruft, der auch schon in Aufgabe 7 verwendet wurde. Allerdings muss der Prozessor diesmal nun aus einem Perl-Script aufgerufen werden, was die Sache ein wenig verändert. Hier die wichtigsten Hinweise (zusätzlich solltet Ihr noch einen Blick in /home/www01_10/a07/saxon werden, das ihr in Aufgabe 7 verwendet habt, um Saxon aufzurufen):

Mit diesem recht deutlichen Tips, einigem kombinieren und den man-Pages oder Help-Informationen von java und Saxon sollte es nun ohne weiteres möglich sein, den Aufruf von Saxon in das Perl-Script einzubauen. Der Erfolg ist erreicht, wenn man nach dem Drücken des 'process it' Button (und einiger Wartezeit...) direkt die von Saxon generierte HTML Seite angezeigt bekommt.


please send comments to www-vl@dret.net
last modification on Monday, 25-Jun-2001 04:56:13 EDT
valid CSS!valid HTML 4.01!