Konfigurationsdateien
Allgemeines
- Speicheroert der Konfigdateien wird beim Kompilieren festgelegt, oder wird beim Start mit dem Schalter -f festgelegt
- Default:
[Programmverzeichnis]/conf/httpd.conf
- Innerhalb der httpd.conf können weiter Konfigurationsdateien über den Befehl
Include
hinzugefügt werden - Änderungen in der httpd.conf werden nur bei einem Neustart verarbeitet
Syntax der Konfigurationsdateien
- Eine Direktive pro Zeile (Zeilenumbruch mit ** einleiten)
- Argumente werden durch Leerzeichen getrennt
- Argumente, die Leerzeichen enthalten müssen in Anführungszeichen gesetzt werden
- Direktiven sind nicht case-sensitive, die Argumente der Direktiven hingegen oft doch
- Variablen müssen die Form
${VAR}
haben - Variablen werden mit
Define
definiert. Es können aber auch Umgebungsvariablen verwendet werden (auch auf Windows?) - Syntaxfehler kann man leicht mit
apachectl configtest
oder-t
finden
Module
- Ein Basis-Set an Modulen wird direkt beim Kompilieren eingebunden
- Weitere Module können über die
LoadModule
Direktive geladen werden - Konfigurations-Direktiven können in Abhängikeit von Module eingebunden werden. Dafür nutzt man den
<IfModule>
Block
Wirkungsbereich der Direktiven
- Direktiven in der Hauptkonfiguration wirken auf dem ganzen Server
- Direktiven in den einzelnen Sektionen (z.B.
<Directory>, <Files>, Location>
) wirken nur dort - Auch für einzelne virtuelle Hosts (
<VirtualHost>
Sektion) können Direktiven gesetzt werden, die nur dort Wirkung zeigen
Abschnitte (Section Containers)
- Die meisten Container werden bei jedem Request verarbeitet
<IfDEfine>, <IfModule>, <IfVersion>
werden nur beim Start des Servers verarbeitet- In
<Directory>, <Files>, <Location>
Direktiven können auch Wildcards eingesetzt werden - In
<DirectoryMatch>, <FilesMatch>, <LocationMatch>
Direktiven sind Perl-kompatible Reguläre Ausdrücke einsetzbar - Einige Section Typen lassen sich ineinander verschachteln. Dabei ist zu beachten, dass die verschachtelten Sektionen nach den nicht verschachtelten Sektionen des gleichen Typs verarbeitet werden
- Wie die einzelnen Sektionen abgearbeitet werden ist hier detailliert erklärt
Filesystem Containers
- Filesystem und Webspace Direktiven enthalten zwar beide Datei-Pfade, nur dass sich die Filesystem Direktiven auf das Dateisystem beziehen, und die Webspace Direktiven auf den Pfad im Webspace
- Eine
<Directory>
Direktive wirkt sich auf das benannte Verzeichnis und alle Unterverzeichnisse aus -
<Directory>
und `´ Direktiven können auch kombiniert/verschachtelt werden -
httpd ermöglicht die dezentrale Konfiguration über spezielle Dateien
-
Normalerweise heisen dies
.htaccess
. in derAccessFileName
Direktive können aber auch andere Namen definiert werden. -
Die Syntax entspricht der in der Hauptkonfiguration
-
Die Direktiven in diesen Dateien wirken auf das Verzeichnis, in dem sie liegen und allen Unterverzeichnissen
-
Welche Direktiven in diesen Dateien plaziert werden können hängt vom Kontext ab
-
Ausserdem kann der Server-Admin steuern, welche Direktiven dort plaziert werden können. Er nutzt dazu die
AllowOverride
Direktive in der Hauptkonfiguration
.htaccess Dateien
Virtual Hosts
Mit dem Aufruf apachectl -S
kann man die Virtual Host Konfiguration debuggen
- Virtuelle Hosts können auf Basis des Namens oder auf Basis der IP-Adresse angelegt werden. IP-basierte VHs benötigen eine eigene Adresse je Host
- Wird dem Host keine explizite IP-Adresse gegeben (also *) sollte die Option
ServerName
gesetzt werden, weil sonst der in der Basis-Konfiguration hinterlegte Name oder (wenn auch der nicht vorhanden ist)der FQDN des System-Hostnamens verwendet wird - Innerhalb des
<VirtualHost<
Blocks sollte mindestensDocumentRoot
undSevername
gesetzt werden - Soll ein Server untermehreren Namen erreichbar sein, verwendet man die Option
SeverAlias
(Im DNS müssen diese Namen natürlich vorher richtig konfiguriert sein) - Viele andere Direktiven lassen sich auch im Block
VirtualHost
unterbringen. Sie überschreiben dann die in der Haupt-Konfiguration gesetzten Werte
Konfigurations Direktiven
- DocumentRoot
- ServerName
- ServerAlias