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.
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.
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:
|
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.
|
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.
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
|
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.
In diesem Abschnitt werden die Zugriffsrechte der Daten eingestellt:
Die Einstellungen werden im HTML - ähnlichen Format vorgenommen:
<Anweisung>
...
</Anweisung>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Options +Indexes
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.
|
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
DirectoryIndex index.html index.htm default.htm
Options [+|-] Indexes
Ist die Option
Indexes nicht gesetzt, so wird nach einer der in Directory
Index definierten Dateien gesucht und, falls gefunden, zurückgegeben.
Wenn sich keine dieser Dateien im Verzeichnis befindet, so wird eine Fehlermeldung
zurückgegeben.
Ist die Option Indexes gesetzt und es wird
keine der angegebenen Dateien gefunden, so wird der Server den Index selbst
erzeugen und den Verzeichnisinhalt anzeigen. Das Erscheinungsbild dieses
Indexes kann mit IndexOptions verändert werden.
|
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.
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:
|
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.
NameVirtualHost 158.64.19.6
<VirtualHost 158.64.19.6>
DocumentRoot /usr/local/httpd/htdocs1
ServerName www1.domain.tld
</VirtualHost>
Dies funktioniert allerdings nur falls der gewünschte Name mit übermittelt wird. Bei einer Anfrage per IP - Adresse wird der zuerst angegebene Server reagieren.
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: 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
![]() |