Linux-Arbeitskreis Hamburg |
Der Apache ist momentan der meistgenutzte Web-Server. Es wird auch bei der
S.u.S.E.-Distribution mitgeliefert und standardmäßig mitgeliefert
und gestartet.
Wem die mitgelieferte Dokumentation nicht langt, der kann auch auf
das Buch:
zurückgreifen.
Bei HTTP, dem HyperText Transfer Protocol, sendet der Client (meist Browser genannt) eine Anfrage nach einem Dokument an den Server (den HTTP-Dämon). Dieser liefert ihm dann einerseits den MIME-Typ der angeforderten Datei und die Datei selber. Aus dem MIME-Typ schließt der Client nun, was er mit dem empfangenen Ding anfangen soll.
text/html wird als HTML-Dokument angezeigt
text/plain ist normaler ASCII-Text.
Daneben gibt es noch eine Vielzahl anderer. Die Datei mime.types
enthält Einträge der Form:
text/html .html .htm
Das heißt, daß der HTTP-Dämon bei Dateien mit der Endung
.html oder .htm als Typ text/html übermitteln soll. Zeigt der Browser
HTML-Dateien im Quellcode an, ist das meist ein Problem mit
mime.types.
Für jede laufende Verbindung ist ein httpd-Prozeß zuständig. Der WWW-Server startet also bei Bedarf Kopien seiner Selbst, die dann die zusätzlichen Verbindungen bedienen und killt diese dann wieder.
HTTP-KeepAlive ist eine Erweiterung des Protokolls, die es vorsieht, mit einer Verbindung mehrere Dateien zu übertragen. Sie wird beispielsweise vom Netscape Navigator unterstützt.
Trotz vieler laufender Prozesse gibt es dank Linux (oder des jeweils verwendeten Systems) keine Speicherverschwendung, weil alle Kopien des WWW-Servers den Speicher gemeinsam nutzen. Das heißt, es gibt im gesamten Speicher die ausführbaren Daten nur genau einmal.
Das Apache-Paket besteht aus folgenden Dateien:
/usr/sbin/httpd | Dies ist die Binärdatei, die den eigentlichen News-Server bildet. Diese Datei sollte beim Booten des Rechners gestartet werden. |
/sbin/init.d/apache | Das Start-/Stop Script für den Apache |
/etc/httpd/httpd.conf | Die Hauptkonfigurationsdatei |
/etc/httpd/srm.conf | Enthält Details über Extras wie Verzeichnisindex, Server Side Includes und anderes. |
/etc/httpd/access.conf | Enthält die Zugriffsbeschränkungen |
/etc/httpd/mime.types | Enthält Informationen, welcher Dateiendung welcher MIME-Typ entspricht. |
.htaccess | Im jeweiligen Dokumentenverzeichnis (der Verzeichnisbaum ab /usr/local/httpd/htdocs) Enthält verzeichnisspezifische Optionen |
Der Apache WWW-Server erlaubt es, ein Dokument in mehreren Sprachen zu lagern. Beispielsweise heißt dann das deutsche Dokument doku.html.de, das französische heißt doku.html.fr, das englische doku.html.fr.
Natürlich hat die gesamte Sache einen Haken: die meisten Browser (einschließlich Netscape und besonders der Internet Explorer) lassen den Benutzer nicht frei entscheiden, welche Präferenzen er hat. Jemand, der eine englische Browserversion besitzt wird deswegen mit diesem Trick nur die englische Dokumentenversion zu sehen bekommen, es sei denn er gibt explizit eine Sprache im Dateinamen an.
Noch ein Haken: Das dumme DOS läßt leider keine solchen Zweit-Endungen zu. Wer seine Dokumente also auf einer DOS-Partition zwischenspeichert, wird unerwünschte Nebeneffekte befürchten müssen.
Man muß in die Datei .htaccess im betreffenden Verzeichnis (wenn sie nicht da ist, legt man sich halt eine an) die Zeile "Options MultiViews" schreiben (wenn schon eine Options... -Zeile existiert schreibt man das MultiViews in jene Zeile).
Die Datei .htaccess ist eine Punkt-Datei. Für ls ist sie unsichtbar, für ls -a dagegen nicht.
Wenn nun die Datei doku.html angefordert wird und es keine Datei doku.html, sondern eine namens doku.html.de und eine namens doku.html.fr gibt, handelt der WWW-Server mit dem Browser aus, welches Dokument dieser bekommt.
Wer das FancyIndexing-Feature (automatische Generation von Verzeichnisindices) nutzt, ärgert sich oft darüber, daß die enthaltenen Dateinamen (z.B: heinrich.psz, lwdp33.zip, spranz.xp) Uneingeweihten sehr wenig verständlich sind. Dem kann man abhelfen, indem man in die .htaccess eine Zeile wie
AddDescription "Sprite-Anzahl berechnen" spranz.xp
in die Datei .htaccess des betreffenden Verzeichnisses einträgt.