4 Webserver

Als Webserver wird das Programm Apache [6] eingesetzt. Warum dieses Programm gewählt wurde, wird mit Bild 4.1 deutlich. Der Apache - Webserver ist der erfolgreichste und meist eingesetzte Server im Internet. Laut Netcraft (www.netcraft.co.uk/survey/) laufen zur Zeit ca. 57% aller Webserver unter Apache. Und ein weiterer nicht zu unterschätzender Faktor ist, das Programm ist umsonst und kann jederzeit unter www.apache.org heruntergeladen werden.


Bild 4.1. Webserververteilung laut Netcraft


Als Alternative soll hier jedoch noch ein anderer kostenloser Webserver angegeben werden: Roxen Challenger [7] der unter www.roxen.com heruntergeladen werden kann. In diesem Kapitel wird allerdings nur vom Apache - Server ausgegangen.

 

4.1 Installation

Bei der Download Apache - Version handelt es sich um den Quellcode welcher zuerst kompiliert werden muß. Dazu ist die Datei apache_1_3_6_tar.tgz in das Verzeichnis wo das Programm installiert werden soll zu kopieren. Mit dem Befehl:

tar xfvz apache_1_3_6_tar.tgz

wird das Programm dadurch in ein eigenes Unterverzeichnis apache_1.3.6/ entpackt. Hier wird die Installation in den Dateien INSTALL und README beschrieben.

Davon sollte der Linux - Einsteiger allerdings Abstand nehmen und auf die bereits bekannte Installation mit YaST zurückgreifen. So wird der Server völlig automatisch installiert und gestartet. Der Anwender kann dann im lokalen Netz unmittelbar auf den Server zugreifen und die Online - Dokumentationen des Servers in Ruhe lesen. Zusätzlich können noch Dokumentationspakete über Linux installiert werden, die dann direkt über einen Browser von einem anderen Rechner im Netz abrufbar sind.

Die Distributionen können allerdings nicht der rasanten Entwicklung der Programme folgen und somit enthalten sie nicht immer die allerletzte Version, dafür ist die enthaltene Version aber meist relativ stabil. Bei der Distribution SuSE 6.0 ist die Version 1.3.4 des Apache - Servers enthalten. Viele der gebotenen Möglichkeiten werden sicherlich nicht voll ausgeschöpft.

 

Installation

YaST starten, Installation festlegen/starten, Konfiguration ändern/erstellen

Apache:
Dokumentation:
in der Serie n apache auswählen
in der Serie doc folgende Pakete auswählen:

suse_hilf Hauptseite
susepak oder susepake Paketbeschreibungen
sdb_de oder sdb_en Support - Datenbank
howtodeh oder howtoenh Howto-Dokumente für viele Bereiche
ldp

Linux Documentation Project

Mit F10 die Paketauswahl beenden und Installation starten.

YaST gibt eine Warnung aus, daß eines der folgenden Pakete noch installiert werden müsse. Hierbei handelt es sich um drei Browser wobei arena und netscape nur unter X - Windows laufen. Im Moment kann dies übersprungen werden mit "Weiter" oder lynx, ein rein textorientierter Browser aus der Serie n, zusätzlich installiert werden. Mit diesem Programm können dann lokal die Seiten, aber ohne Bilder, betrachtet werden. Anschließend wird das Programm SuSEconfig die nötigen Änderungen am System vornehmen.

Der Server muß nun noch mit: /sbin/init.d/apache start gestartet werden.
Anschließend ist der Webserver bereit und die Informationen können von:

a) dem lokalen Rechner mit
lynx localhost oder
lynx 158.64.19.6 (IP - Adresse des eigenen Rechners) oder
lynx <host> (host: Rechnername)
b)

einem anderen Rechner im Netz mit Netscape oder Internet Explorer aufgerufen werden über die IP - Adresse oder den FQDN falls der Rechner bereits in dem Nameserver eingetragen ist.

 


Bild 4.2 Der Webserver



Auf diesen Seiten kann man viele Informationen einsehen und sogar ganze Handbücher durchlesen. Besonders hervorzuheben ist das "Linux Documentation Project" [8] welches eine zentrale Sammelstelle von Linux - Informationen darstellt. Auf dem lokalen Rechner ist dies unter http://<host>/docs/LDP/ zu finden. Die neueste Version ist im Internet auf dem Server der Universität von North Carolina unter http://metalab.unc.edu/LDP/ abrufbar.

! Achtung: Auch hier unterscheidet Linux zwischen Groß- und Kleinschrift.

 

4.2 Konfiguration

Auch wenn der Server jetzt schon funktioniert, so muß er dennoch richtig konfiguriert werden.
Die Einstellungen des Apache - Servers stehen wie alle Konfigurationsdateien im Verzeichnis /etc. Die Dateien des WWW - Servers befinden sich übersichtshalber in einem eigenen Unterverzeichnis /etc/httpd. Der Name httpd wird benutzt da das eigentliche Serverprogramm httpd heißt: http ist das Protokoll mit dem Webseiten übertragen werden, und d steht für Damön. Ein Dämon ist ein Systemprozeß, der agiert, ohne daß ihn ein Benutzer dazu aufgefordert hätte.
In diesem Unterverzeichnis sind einige Dateien vorhanden. Bis zur Version 1.2.x wurde der Server mittels dreier Dateien konfiguriert:

Die restlichen Dateien mime.types und magic müssen in der Regel nicht verändert werden. Ab der Version 1.3.4 werden alle Einstellungen in der Datei httpd.conf vorgenommen; es soll der Übersicht dienen, da jetzt nicht noch überlegt werden muß welche Zeile in welche Datei zu schreiben ist. Die Datei httpd.conf ist allerdings recht lang.

An dieser Stelle sei erwähnt, daß es im Rahmen dieser Arbeit unmöglich ist auf die vielen Konfigurationsparameter dieses leistungsstarken Servers einzugehen. In diesem Kapitel werden nur grundlegende Konfigurationseinstellungen vorgestellt, sowie Lösungsvorschläge zu speziell aufgetretenen Problemen.
Für detaillierte Informationen ist www.apache.org [6] natürlich die erste Adresse. Wer lieber die Informationen in der Hand hält, dem ist das Buch "Apache Web - Server" [9] von Lars Eilebrecht, Mitglied der Apache Group, zu empfehlen.

Die Datei httpd.conf, eine reine Textdatei, kann mit dem Programm less httpd betrachtet werden und mit einem Texteditor (z.B.: joe) verändert werden. Die Originaldatei ist 946 Zeilen lang, sie ist aber mit sehr vielen Kommentaren versehen die zumal am Anfang sehr hilfreich sind. Jede Zeile die mit dem Zeichen "#" beginnt, ist ein Kommentar und wird vom Server selbst ignoriert.

 

4.2.1 Globale Einstellungen

Alle verfügbaren Konfigurationsanweisungen und deren detaillierte Beschreibung sowie Beispiele können auf dem eigenen Rechner abgerufen werden:
http://158.64.19.6/manual/mod/core.html
oder im Internet unter http://www.apache.org/docs/mod/core.html

Achtung: Konfigurationsänderungen werden erst nach einem Neustart des Servers wirksam: /sbin/init.d/apache restart
oder: /sbin/init.d/apache reload

 

 

4.2.2 Hauptserver - Konfiguration

Da zuerst nur ein Server betrachtet wird, ist das Wort Hauptserver verwirrend. Für den Anfang ist es jedoch die eigentliche Konfiguration des Servers. Da mit dem Apache - Server mehrere Server mit unterschiedlichen Adressen oder Namen betrieben werden können und jeder Server getrennt konfigurierbar ist, werden diese als virtuelle Server bezeichnet. Auf die Aktivierung solcher zusätzlicher Server wird weiter unten eingegangen.

 

4.2.3 Eigenschaften der Verzeichnisse und Dateien

In diesem Abschnitt werden die Zugriffsrechte der Daten eingestellt:

Die Einstellungen werden im HTML - ähnlichen Format vorgenommen:

<Anweisung>

...

</Anweisung>

 

dies ist dann identisch mit folgender Angabe:

Options FollowSymLinks Indexes

Ebenso kann mit "-" gezielt wieder eine Option gelöscht werden. Die möglichen Optionen können unter http://host/manual/mod/core.html#options nachgelesen werden.

Beispiel:

Die Daten im Verzeichnis /intern sollen nur von Rechnern der Schule zugänglich sein.

<Directory /intern>
Order deny,allow
deny from all
allow from .ltc.lu
</Directory>


Mit Order wird angegeben ob zuerst die deny - Anweisung oder die allow - Anweisung ausgewertet wird. Hier werden erst einmal alle abgewiesen und den Rechnern der Domäne ltc.lu wird dann doch der Zugriff gewährt.
Hier sind viele Varianten möglich die gut überlegt sein sollten. Bei deny und allow können anstatt Namen auch IP - Adressen verwendet werden oder mehrere Angaben angegeben werden.
Beispiel: <Directory /notes_service/data>
    AllowOverride
Options
IndexOptions
None
Indexes
FancyIndexing \
ScanHTMLTitles \
SuppressLastModified \
SuppressSize
IndexIgnore *.doc
  </Directory>

 

 

4.2.4 Benutzerverzeichnisse

Man trifft oft auf URLs der Form http://www.somewhere.tld/~user/
Beim Apache wird die Tilde "~" benutzt um die Benutzerverzeichnisse zu kennzeichnen und nach der Tilde steht dann der Accountname des gewünschten Benutzers.
Auch beim Arbeiten an der Shell repräsentiert die Tilde das Heimatverzeichnis: Durch Eingabe von cd ~ wechselt man sofort ins eigene Heimatverzeichnis.

Die Benutzerverzeichnisse werden mit dem Modul UserDir in der Konfigurationsdatei httpd.conf des Apache - Servers aktiviert.

UserDir public_html

Jetzt können alle Benutzer ihre eigene Homepage veröffentlichen, indem sie in ihrem Heimatverzeichnis ein Unterverzeichnis public_html anlegen. Alle Daten in diesem Verzeichnis sind dann über http://www.domain.tld/~user/ zugänglich.

Durch das Ausschalten der Option Indexes (siehe oben) kann kein komplettes Verzeichnis angezeigt werden. Beim Zugriff auf ~user/ wird also nicht das Listing des Verzeichnisses public_html angezeigt, sondern nach dem durch DirectoryIndex definierten Dateinamen gesucht: normalerweise index.htm oder index.html. Falls keine dieser Dateien vorhanden ist meldet der Server "Not Found".
Im Gegensatz zum obigen Beispiel kann auch ein absoluter Pfad angegeben werden:

UserDir /home/*/www

Beim Zugriff auf /~user/datei.html würde dann die Datei /home/user/www/datei.html angezeigt werden. Der Stern * wird hier als Platzhalter für den Benutzernamen eingesetzt. Diese Variante ist allerdings nicht so flexibel, da alle Benutzerverzeichnisse im gleichen Verzeichnis (hier z.B. /home) stehen müßten.
Ebenso ist es möglich die Benutzerverzeichnisse von einem anderen Web-Server zu laden durch:

UserDir http://www.otherdomain.tld/users

Es ist darauf zu achten, daß die Benutzerverzeichnisse standardmäßig aktiviert sind und dies explizit ausgeschaltet werden muß falls es erwünscht ist.

UserDir disabled

Trotzdem können dann gezielt ausgewählte Benutzer freigeschaltet werden mit:

UserDir enable user1 user2 user3

Ebenso ist folgende Kombination möglich:

UserDir public_html
UserDir disable root user4

Die obige Methode ist einfach und schnell zu realisieren, hat allerdings auch Nachteile:

Mit dem Rewrite Modul lassen sich die URLs viel flexibler manipulieren. Ziel ist es die realen Benutzernamen anstelle des Accountnamens zu verwenden und eine Trennung zwischen Schüler- und Lehrerseiten herzustellen.
Die Benutzerverzeichnisse werden mit UserDir disabled deaktiviert. Die Homepages der Benutzer werden trotzdem im Verzeichnis ~/public_html abgelegt. Für diese Verzeichnisse werden dann sehr restriktive Einstellungen festgelegt:

<Directory /*/public_html>
AllowOverride None
Options None
</Directory>

Um die realen Benutzernamen in den Pfad aufzunehmen, wäre eine aufwendige Verzeichnisstruktur erforderlich, oder es müßte für jeden Benutzer ein Alias angelegt werden. Diese Lösung ist allerdings kaum zu verwalten und mittels einer Abbildung der realen Namen auf die Accountnamen leichter lösbar:

Zuerst wird das Modul Rewrite aktiviert mit RewriteEngine on
Anschließend wird ein Textdokument erstellt wo die Abbildung der realen Namen auf die Accountnamen eingetragen werden.

Für die Lehrer: map.profs-dir

# realer Name Accountname
joe.schmitt jschmit
jang.schmitt jaschmi

Für die Schüler: map.eleves-dir

# realer Name Accountname
pierre.wagner pwagner
jemp.hollenscheider jhollen
   
Diese Textdateien werden auf dem Web - Server als Maps definiert:
  RewriteMap profs-dir txt:/home/profs/map.profs-dir
RewriteMap eleves-dir txt:/home/eleves/map.eleves-dir

Bei vielen Benutzern ist es allerdings sinnvoll die Maps als Datenbanken und nicht als Textdokumente zu erstellen, dadurch werden die Antwortzeiten wesentlich reduziert. Es gibt Skripte wie dbmmanage oder maptxt2dbm um diese Datenbank zu erstellen.

Mit Hilfe der Überschreibungsregeln werden dann die Zugriffe auf die realen Namen zu den entsprechenden Verzeichnissen umgeleitet. Diese Umleitung erfolgt jedoch vollkommen transparent und ist für den Besucher der Homepage nicht ersichtlich.
Eine genaue Beschreibung der Syntax ist unter:
http://host/manual/mod/mod_rewrite.html dargestellt:

^:
[^]:
?:
():
+:
*:
$:

Kennzeichnet den Beginn einer neuen Zeile
Keins der angegebenen Zeichen
Keins oder eins der vorangestellten Zeichen
Gruppierung von Zeichen zur späteren Referenzierung
Mindestens eins der vorangestellten Zeichen
Keins oder beliebig viele der vorangestellten Zeichen
Referenzierung


Für die Schüler:
RewriteRule ^/eleves/([^/]+\.[^/]+)/?(.*) \
/home/eleves/${eleves-dir:$1}/public_html/$2 [L]

Bei einem Zugriff auf www.domain.tld/eleves/pierre.wagner/test.html würde obige Regel zutreffen. Der reale Name pierre.wagner, in Klammern gruppiert, wird über $1 referenziert und im Map eleves-dir gesucht und durch den Accountnamen ersetzt.
Folgendes Dokument /home/eleves/pwagner/public_html/test.html wird als Antwort zurückgesendet. test.html entspricht der zweiten Gruppierung (.*) und $2 wird korrekt an die umgeschriebene Adresse angehängt.

[L] steht hier für last: Falls diese Regel zutrifft, so sollen die folgenden Regeln ignoriert werden. Bei mehreren komplexen Regeln ist dies wegen der Schnelligkeit sehr wichtig.

Analog für die Lehrer:
RewriteRule ^/enseignants/([^/]+\.[^/]+)/?(.*) \
/home/profs/${profs-dir:$1}public_hml/$2 [L]

Falls keine der vorhergehenden Regeln zutrifft, wird durch die folgende Regel eine Fehlerdokumentdatei angezeigt. In diesem Dokument wird dem Besucher mitgeteilt, daß die Benutzerverzeichnisse über die Tilde nicht mehr erreichbar sind, und es werden die neuen Adressen angezeigt.
RewriteRule ^/~ /home/www/error-docs/error-user.html

Sicherlich sehen diese Regeln zuerst sehr kompliziert aus, allerdings lohnt es sich sie genauer zu untersuchen und zu verstehen. Durch diese Methode sind nicht nur Benutzerverzeichnisse flexibler zu gestalten, sondern jede Art von Adresse kann beliebig manipuliert werden.

 

4.2.5 Virtuelle Server

Der Apache - Server bietet die Möglichkeit nicht nur einen Webserver unter einer Adresse anzubieten, sondern er kann mehrere Server mit unterschiedlichen Adressen verwalten. Dies wird über folgende Anweisung erreicht:

<VirtualHost 158.64.19.5>
...
</VirtualHost>

Alle Einstellungen vom Hauptserver werden hier übernommen und können überschrieben werden. Dadurch wird die Konfiguration eines virtuellen Servers wesentlich kürzer.

Es gibt zwei grundsätzliche Möglichkeiten einen virtuellen Server zu betreiben:

Beispiel:
Der Rechner besitzt die Adresse 158.64.19.6 und es läuft bereits ein Hauptserver www.domain.tld. Durch die Angabe von:

<VirtualHost 158.64.19.5>
ServerName www2.domain.tld
DocumentRoot /usr/local/httpd/htdocs2
:
</VirtualHost>


werden beim Zugriff auf den Server www2.domain.tld die Dokumente aus dem Unterverzeichnis htdocs2 angezeigt. Der neue Name muß natürlich im Nameserver eingetragen sein.

Wie man dem Rechner eine zweite Adresse zuordnet, d.h. damit die Netzkarte auf beide Adressen reagiert, wird in Kapitel 7.4.4 mehrere Netzwerkkarten beschrieben.

Dies funktioniert allerdings nur falls der gewünschte Name mit übermittelt wird. Bei einer Anfrage per IP - Adresse wird der zuerst angegebene Server reagieren.

 

4.2.6 Das Proxy - Modul

Damit jede neu genutzte Adresse auch von außerhalb des eigenen Netzes erreichbar wird, muß diese aus Sicherheitsgründen vom Provider (hier: RESTENA) freigeschaltet werden. Durch Angabe des Dienstes, hier WWW für den neuen Rechner, wird das entsprechende Protokoll für diesen Rechner aktiviert. Damit aber Informationen von weiteren internen Servern von außen zugänglich werden, kann der Apache - Server als Proxy dienen. Das Proxy - Modul wird dann eine Anfrage an den internen, von außen nicht zugänglichen, Server starten und die empfangenen Daten dann selbst nach außen weiterleiten. Der interne Rechner kann also nicht direkt angesprochen werden, aber die Seiten auf diesem Rechner werden auf den von außen zugänglichen Server eingebunden. Der Client sieht nur den einen Server und die interne Abfrage geschieht völlig transparent.

Beispiel:
Ein weiterer Administrator, beispielsweise einer Fachrichtung, betreibt einen eigenen Server (server_fach1.domain.tld) der von außen nicht freigeschaltet ist. Auf dem Hauptserver wird dann mittels mod_rewrite eine interne Proxy - Abfrage durchgeführt:

RewriteRule ^/fach1/(.*) http://server_fach1.domain.tld/$1 [P]

Sämtliche Informationen unter /fach1 erscheinen dem Besucher als Unterverzeichnis auf dem Server www.domain.tld, werden allerdings als Proxy - Anfrage vom internen Server geholt wegen der zusätzlichen Angabe von [P]. Die Angabe [P] ist zwingend notwendig, da sonst eine einfache Umleitung auf den internen Server stattfindet und somit der Besucher eine Fehlermeldung erhält.


Home
© 1999 Claude Leniger claude.leniger@ltc.lu