Apache HTTP Server Version 2.0

Funktionsweise


[ Seminar Linux und Apache ] ... [ Inhaltsübersicht ] ... [ Modularisierung und Erweiterbarkeit ]


Übersicht: Funktionsweise

Nach oben

Wichtige Dateien

httpd.conf

Die Hauptkonfigurationsdatei heißt httpd.conf und liegt in dem Verzeichnis /usr/local/apache2/conf. Das Verzeichniss kann vor der Kompilierung des Projektes natürlich bestimmt werden.
Mit dieser Datei wird der Server über sogenannte Direktiven konfiguriert. Über die "Include"-Direktive können weitere Konfigurationsdateien hinzugefügt werden. Diese Möglichkeit kann die Übersichtlichkeit erhöhen. So kann zB die Konfiguration von virtuellen Servern ausgelagert werden.

Es gibt drei Gruppen von Konfigurations-Direktiven:
  1. Direktiven die Operationen des Apache-Server-Prozesse kontrollieren. "Section 1: Global Environment"
  2. Direktiven, die die Parameter des Haupt-Servers definieren. Diese Parameter sind auch die Standartwerte für die virtuellen Server, können aber in deren Konfiguration überschrieben werden. "Section 2: 'Main' server configuration"
  3. Direktiven, die die virtuellen hosts konfigurieren. "Section 3: Virtual Hosts "

Einflußbereich der Direktiven
Man kann den Einflußbereich der Direktiven beschränken, indem man sie in bestimmte Kontainer schreibt.

Seit Apache Version 1.2 kann auf die Kontainer <....Match> verzichtet werden, da auch in den anderen Kontainern reguläre Ausdrücke verwendet werden können.
Nach oben

.htaccess

Die Konfiguration von Verzeichniseigenschaften kann man auch über ".htaccess"-Dateien vornehmen.
Diese Dateien können in den übers den Server erreichbaren Verzeichnissen liegen.
Die Direktiven, die in einer solchen Datei stehen gelten wie beim Directory-Kontainer unterhalb des Verzeichnisses, in dem die Datei liegt.
Die Verwendung von ".htaccess"-Dateien hat den Vorteil, dass bei Änderungen von den Verzeichniseigenschaften die Hauptkonfigurationsdatei nicht verändert werden muss und der Server nicht neu gestartet werden muss, um die Konfigurationsdateien einzulesen. Ein weiterer Vorteil ist, dass auch Benutzer, die keinen Zugriff auf die zentralen Konfigurationsdateien haben, so die Eigenschaften der Verzeichnisse, auf die sie Zugriff haben, ändern können.

In der Hauptkonfigurationsdatei httpd.conf kann mit der Direktive AllowOverride eingeschränkt werden welche Direktiven überschrieben werden dürfen.

Nach oben

mime.types

Mit dieser Konfigurationsdatei kann Apache bestimmten Datei-Endungen MIME-Typen zuordnen. Diesen MIME-Type schickt der Server im HTTP-Header an den HTTP-Client (Browser) mit. So kann der Browser die empfangenen Dateien mit den entsprechenden Programmen anzeigen.

Auszug aus mime.types:

application/pdf            pdf
application/postscript     ai eps ps

Nach oben

access_log

In dieser Datei werden alle Anfragen protokoliert.
Das Format eines Eintrages kann konfiguriert werden.
Hier ist die Standardformatierung der Log-Einträge definiert:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

Über LogFormat werden Aliasse erzeugt und mit CustomLog wird die Logdatei bestimmt und deren Format über den Alias gewählt.
%h: remote host
%l: remote username
%u: HTTP authenticated username
%t: time
%r: HTTP-Request
%s: HTTP-Status
%b: bytes

Hier ist zur Veranschaulischung ein Logeintrag aus meiner access_log-Datei.

195.37.86.129 - - [11/Dec/2001:23:17:42 +0100] "GET /manual/configuring.html HTTP/1.0" 200 10739

Nach oben

error_log

Alle bei der Verarbeitung der Anfragen auftretenden Fehler und Diagnose-Informationen, werden hier protokoliert.
Beispiel:

[Tue Dec 11 21:24:03 2001] [error] [client 195.37.86.227] File does not exist: /usr/local/apache2/htdocs/martin

Nach oben

Einlesen von httpd.conf

Die Art der Auswertung der Konfigurationsdatei hat sich von Version 1.3 zu 2 geändert.
In Version wurde Apache direkt während des zeilenweisen Einlesen der Datei konfiguriert.
Bei Apache 2 wird jede Zeile eingelesen und in einen Konfigurationsbaum gespeichert. Dieser Baum wird dann traversiert und jede directive wird ausgeführt.
Sobald die Konfiguration in die Baumstruktur eingelesen wurde, werden die pre_config-Methoden aller Module aufgerufen. Dies ermöglicht es den Modulen den Baum zu modifizieren bevor er traversiert wird. Sobald die pre_config-Methoden aller Module gerlaufen sind, wird der Baum durchlaufen und die Konfiguration des Servers beendet.

Nach oben

Starten/Stoppen des Servers

Man kann den Server direkt starten, indem man bin/httpd ausführt. Zum Beenden kann man die Prozess-ID des Hauptprozesses aus der Datei logs/httpd.pid und den Prozess killen. (Die Pfadangaben sind relativ zu dem Apache-Installationsverzeichnis gemeint.)

Praktischer ist die Verwenung des Programs bin/apachectl.
Parameter:
start,stop,restart,graceful
graceful: Eltern-Prozeß weißt die Kind-Prozesse an, sich nach Beantwortung ihrer derzeitigen Anfrage zu beenden. Die Konfigurationsdateien werden neu gelesen und die Logfiles neu geöffnet.

Nach oben

Virtuelle Hosts

Es ist mit Apache möglich mehr als eine Website auf dem gleichen Server laufen zu lassen.
Virtual hosts sind Websites mit unterschiedlichen Namen, die alle auf der gleichen Server-Hardware laufen.
In der Konfigurationsdatei gibt es für jeden virtuellen Server einen Kontainer, in dem die Parameter, die von der Basiskonfiguration abweichen eingestellt werden können. ("Section 3: Virtual Hosts ")

Es gibt zwei Arten von virtuellen Hosts:

  1. IP-Adressen basiert
    Jede Website bekommt ihre eigene IP-Adresse.
    Auf dem Rechner müssen dafür mehrere IP-Adressen eingerichtet werden. Auf den aktuellen Betriebsystemen ist es möglich auch ohne mehrere Netzwerkkarten mehrere IP-Adressen für den gleichen Rechner zu benutzen. (unter Unix /etc/hosts)
    Wenn Domainnamen für die virtuellen Server verwendet werden sollen, müssen diese Namen auf dem DNS eingetragen werden.
  2. Namen basiert
    Auf dem DNS werden für die IP-Adresse des Rechners weitere Namen eingetragen. Diese weiteren Einträge heißen C-records oder Hostname-Aliase.
    Mit Hilfe des HTTP-Host-Headers kann eine Umleitung auf den DocumentRoot des virtuellen Servers ausgeührt werden.

Nach oben

[ Seminar Linux und Apache ] ... [ Inhaltsübersicht ] ... [ Modularisierung und Erweiterbarkeit ]