| |
Apache HTTP Server Version 2.0
Funktionsweise
[
Inhaltsübersicht ] ... [
Modularisierung und Erweiterbarkeit ]
Übersicht: Funktionsweise
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:
- Direktiven die Operationen des Apache-Server-Prozesse kontrollieren. "Section
1: Global Environment"
- 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"
- 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.
- <
Directory>
<Directory directory-path>...</Directory>
Direktiven gelten nur unterhalb des angegebenen Verzeichnisses.
Jokerzeichen sind erlaubt.
Mit mit vorangestelltem "~" auch reguläre Ausdrücke.
<Directory ~ "^/test[0-9]">
<DirectoryMatch>
Verzeichnisse werden über reguläre Ausdrücke bestimmt. (geht
auch mit <Directory> )
<Files>
Die Direktiven gelten nur für die angegebenen Dateien. Jokerzeichen und
reguläre Ausdrücke wie bei <Directory>..
Wird nach Direktory-Sektionen und .htaccess-Dateien ausgewertet.
<FilesMatch>
Dateien werden über reguläre Ausdrücke bestimmt.
<Location>
Die Direktiven gelten nur für die angegebenen URLs. Wildcards und reguläre
Ausdrücke (mit ~) erlaubt.
Wird nach Direktory, .htaccess und Files ausgewertet.
<LocationMatch>
Die URLs werden über reguläre Ausdrücke bestimmt...
<VirtualHost>
Direktiven betreffen nur diesen virtual host.
Die anderen Kontainer dürfen auch innerhalb dieses Kontainers benutzt
werden.
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.
.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.
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
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
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
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.
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.
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:
- 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.
- 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.
[
Inhaltsübersicht ] ... [
Modularisierung und Erweiterbarkeit ]
|
| |
|
|