Informationen rund um den Webserver

Plattform: Linux x86
Name: www.informatik.uni-ulm.de
Server-Software: Apache 1.3 ( Apache-Dokumentation lokal, aktuell)

Der Webserver der Fakultät Informatik ist in verschiedene logische Bereiche aufgeteilt, die von  unterschiedlichen Abteilungen bzw. Autorengruppen verwaltet werden. Jeder Gruppe ist genau ein Verzeichnisbaum  zugeteilt, auf das sie über NFS (Ex- oder Import) oder per smb-Protokoll (über Samba vom PC aus) zugreifen kann.

Der Webserver und damit auch alle CGI-Skripte laufen unter dem User "nobody". Den zu publizierenden Dateien (Dokumente, Skripte, Verzeichnisse) müssen daher entsprechende Lese und Ausführungsrechte zugeordnet werden (x-Bit für Verzeichnisse, xr für Skripte, r für Dokumente; das r-Bit für Verzeichnisse kann entfallen, wenn man die automatische Indexerstellung für dieses Verzeichnis verhindern will).

Die folgenden Kapitel dienen der kurzen Dokumentation einiger Aspekte der Serverinstallation, die für Webautoren des Informatikservers(www.informatik.uni-ulm.de) interessant sein könnten. Eine umfassendere Einführung der angesprochenen Aspekte findet sich im Web (weiterführende Links sind angegeben).

Konfiguration - die Datei .htaccess

Der apache-Server besitzt weitreichende Konfigurationsmöglichkeiten, die aber zum größten Teil über globale Konfigurationsdateien realisiert werden und daher nur vom Webadmin benutzbar sind.

Einige Einstellungen können aber auch lokal, d.h. auf Ebene eines Dokumentenverzeichnisses durchgeführt werden. Hier kann eine Datei namens '.htaccess' angelegt werden, in der eine Reihe von Konfigurationsbefehlen stehen können (solche, die im Kontext 'htaccess' ausführbar sind). Der Gültigkeitsbereich derartiger Direktiven ist normalerweise das Verzeichnis, in dem die Datei .htaccess liegt. Er kann aber weitergehend auf Dateiebene eingeschränkt werden (Siehe Apache-Dokumentation der Direktive '<Files>').

In der globalen Konfiguration des Servers ist ein "AllowOverride All" eingestellt, sodaß weitestgehende Möglichkeiten der lokalen Konfiguration bestehen. Für das Dokumentenverzeichnis ist ein 'Options All' eingestellt.

Für die CGI-Verzeichnisse ist momentan als einzige Option 'ExecCGI' eingestellt. Will man auch ein 'FollowSymLinks' erlauben, ist im CGI-Verzeichnis eine Datei '.htaccess' anzulegen mit der Zeile 'Options +FollowSymLinks'.

URL-Aliase anlegen (Redirect, Rewrite)

Um URL-"Kurzbezeichnungen" für bestimmte Seiten anzulegen bzw. den logischen URL-Namen einer Seite von ihrer physikalischen Position im Dateibaum zu trennen besteht die Möglichkeit "Redirect-Klauseln" bzw. "Rewriting-Rules" mittels entsprechender Konfigurationsbefehle in der Datei '.htaccess' zu definieren.

Beispiele:

Redirect

Die Datei .htaccess im Verzeichnis /sgi enthält die Zeilen:

   Redirect /sgi/schwarz http:/sgi/personen/schwarz
   Redirect /sgi/www http:/sgi/sonstiges/www.shtml

Ein Zugriff mit dem URL-"Pfad" /sgi/schwarz... wird dann (für den Web-Client transparent!) automatisch auf den Pfad /sgi/personen/schwarz... umgeleitet (dabei wird die neue Adresse dem Client mitgeteilt, bevor dieser dann eine erneute Anfrage an die nun berichtigte Adresse stellt).

Rewrite

   RewriteEngine on
   RewriteBase /sgi
   RewriteRule ^mitarbeiter(.*)$ personen$1[R=301]

Ein Zugriff mit dem URL-"Pfad" /sgi/mitarbeiter/... wird nun automatisch auf den Pfad /sgi/personen/... umgeleitet.

Zur genauen Funktion siehe die Originaldoku. Die Funktionalität entspricht der von Redirect, jedoch können hier mächtige reguläre Ausdrücke zur Textersetzung herangeszogen werden.

Erste Zeile: URL-Rewriting einschalten. Zweite Zeile: Basisverzeichnis für Rewriting setzen. Ist optional, macht aber die Regeln übersichtlicher. Danach kommt eine Zahl von Regeln mit Regular Expressions und entsprechende Ersetzungen. Die Option [R=301] ändert den Code, den Apache an den Browser/Proxy schickt auf Permanent Redirect statt dem Standardwert Temporary Redirect. Es gibt noch viele andere interessante Optionen, siehe Doku.

(mit Dank an Klaus Espenlaub)

Limitierter Zugriff auf Dokumente und cgi-Skripte

Der Zugriff auf Dateien des Servers (HTML-Dokumente, Skripte etc.) kann beschränkt werden. Dies geschieht mittels Konfigurationsbefehlen in der Datei '.htaccess', die sich im selben bzw. einem höheren Verzeichnis wie die zu schützenden Dateien befinden muß. Die Befehle 'allow' und 'deny' dienen der Freigabe bzw. Sperrung bestimmter Rechner, Subnetze oder Subdomains. Wird keine explizite Einschränkung vorgenommen, umfaßt der Gültigkeitsbereich der Konfigurationsbefehle alle Dateien und Unterverzeichnisse des Verzeichnisses, in dem sich die '.htaccess'-Datei befindet. Der Bereich läßt sich allerdings auch auf bestimmte Dateien (auch wild-cards werden unterstützt) einschränken (Siehe Apache-Dokumentation der Direktive '<Files>'). Der Zugriff auf folgendes Dokument kann z.B. nur innerhalb der Domain informatik.uni-ulm.de erfolgen: Test

 Die Beispiel-Dateien hierzu.

Zugriffsschutz per Login/Benutzerverwaltung

Um den Zugriff auf Seiten nur bestimmten Benutzern bzw. Gruppen zu erlauben, gibt es die Möglichkeit eigene WWW-Benutzer und Gruppen einzurichten. Hierzu ist das Programm htpasswd notwendig.

Ein Beispiel hierzu ist Login.

Die Beispieldateien hierzu.

Common Gateway Interface (CGI)

Neben statischen HTML-Dokumenten können auf dem Server auch Programme bzw. Skripte abgelegt werden, die beim Aufruf Eingabedaten wie z.B. Formulareingaben auswerten können und als Ausgabe HTML-Code erzeugen.

Innerhalb ihres Verzeichnisbaums kann jede Abteilung eigene Skripte im Unterverzeichnis /cgi-bin/ ablegen. Der Zugriff auf solche Skripte erfolgt über http://www.informatik.uni-ulm.de/<Abteilungskürzel>/cgi-bin/<Skript-Pfad>.

Beispiel: Einfaches Test-Skript

Skripte können beliebige Executables sein (Skripte oder Binaries).

Eine Auswahl  vorhandener Interpreter:

Beispiele

Die Dateien hierzu. incl. Dokumentation.

Weiterführende Links: The CGI Collection (Webindex rund um CGI)

Server-Side Includes (SSI)

Eine einfache Variante der dynamischen Generierung von HTML-Dokumenten sind die Server-Side Includes. Dateien mit Suffix '.shtml' können entsprechende SGML-Kommentare der Form
<!--#element attribute=value attribute=value... -->
enthalten (siehe Apache-Dokumentation). Diese Kommentare werden vom Webserver vor der Auslieferung des Dokuments interpretiert und können zur einfachen programmgesteuerten Generierung von Teilen des Dokuments verwendet werden.

Hierzu ein Beispiel.

SSI beherrscht Variablen, Includes, Execs, und if-Statements:

<!--#set var="variable" value="wert" -->
...
<!--#include virtual="/sgi/cgi-bin/bsp/hello.pl" -->
...
<!--#exec cmd="ls -al" -->
...
<!--#if expr="test_condition" -->
...
<!--#elif expr="test_condition" -->
...
<!--#else -->
...
<!--#endif -->

Test_condition kann folgende Formen annehmen: 'string' (true falls string nicht leer ist),  'string1 = string2', 'string1 != string2', '( test_condition)', '! test_condition', 'test_condition1 && test_condition2', 'test_condition1 || test_condition2'

Bsp.: <!--#if expr="$variable = wert && ..." --> ...

Personal Home Page Tools (PHP)

Wem SSI nicht reicht, dem sei PHP empfohlen. PHP ist in der Version 4.3 installiert und stellt eine sehr mächtige Skriptsprache zur dynamischen Generierung von HTML-Seiten zur Verfügung. Dateien mit dem Suffix '.phtml' werden von PHP interpretiert. PHP stellt

Die Original-Dokumentation.

Eine Einführung.

Hierzu einBeispiel.

Zugriffszähler

Das Rechenzentrum bietet einen einfachen Counter zur freien Benutzung in eigenen Webseiten an (Dokumentation).
Diese Seite wurde bereits Zähler - Bitte Bild laden mal geladen (Reload wird ignoriert!). Zur Verwendung siehe Quelltextansicht.

Weiterführende Links