Früher besaß der Apache mehrere Konfigurationsdateien, die alle abgearbeitet wurden. Das waren – jeweils in dem Verzeichnis, das als Konfigurationsverzeichnis angegeben war – die Dateien

  • httpd.conf
  • access.conf
  • srm.conf
  • mime.types

Auch heute versucht der Server all diese Dateien abzuarbeiten, aber die beiden Dateien access.conf und srm.conf sind in der Regel einfach leer. Alles, was früher dort untergebracht wurde, finden wir heute in der zentralen Konfigurationsdatei httpd.conf.

Diese Datei ermöglicht es, den Webserver komplett zu konfigurieren, von der Einstellung, auf welchen Port er hören soll, bis hin zur Angabe welcher User welche Verzeichnisse sehen darf. Die standardmäßige Konfigurationsdatei des Webservers enthält bereits eine wohldurchdachte und sehr gut kommentierte Konfigurationsdatei, die entsprechend angepasst werden kann.

Grunsätzlich ließt der Webserver diese Datei beim Start. Das heißt, wenn in dieser Datei Veränderungen vorgenommen werden sollen, dann muß der Server danach neu gestartet werden. Bitte nochmal zur Definition: Server meint hier das Programm und nicht den Rechner!

Einfache Konfigurationsanweisungen

Die Konfigurationsdatei des Webservers kennt hunderte verschiedener Anweisung, die hier nicht alle dargestellt werden können. Wir werden uns hier also auf die wichtigsten Anweisungen beschränken. Die Konfigurationsdatei ist in drei Bereiche aufgeteilt: Die globalen Einstellungen, die Einstellungen des Hauptservers und die Einstellungen für die virtuellen Server. Der dritte Punkt wird uns später beschäftigen. Zunächst also die globalen Einstellungen.ServerType standalone|inetdDiese Anweisung legt fest, ob der Webserver standalone oder durch inetd gestartet werden soll. Wie schon gesagt ist es nicht empfehlenswert, den Apache durch inetd zu starten, also solte hier der Begriff standalone stehen.ServerRoot „/usr/local/httpd“Die Angabe des Verzeichnisses, in dem der Apache seine Dateien vorfindet. Hier liegen in der Regel alle wichtigen Dateien und Verzeichnisse, die der Server zum Betrieb benötigt. Nicht verwechseln mit DocumentRoot.LockFile /var/lock/subsys/httpd/httpd.accept.lockDas Lock-File des Servers. Diese Datei wird vom Server beim Start angelegt und beim Herunterfahren gelöscht. Damit kann der Server selbst feststellen, ob schon ein Apache-Server im Speicher gestartet ist.PidFile /var/run/httpd.pidAuch diese Datei wird vom Server beim Start angelegt. Er schreibt seine ProzessID hier hinein, so dass ein späterer Zugriff – etwa zum Versenden eines Kill-Signals – auf den Server möglich ist, ohne erst lang mit dem ps-Kommando die PID herausfinden zu müssen.Timeout 300Die Anzahl von Sekunden, die der Server beim Senden und Empfangen von Daten wartet, bis er aufgibt und einen Timeout-Fehler ausgibt.KeepAlive OnKeepAlive ermöglicht es, mehrere Transfers pro Verbindung zuzulassen (On) oder zu verbieten (Off). Damit wird verhindert, dass wegen jeder einzelnen Nachfrage erneut der komplette TCP-Handshake erfolgen muß.MaxKeepAliveRequests 100Dieser Wert bestimmt die maximale Menge der zulässigen aufeinanderfolgenden Verbindungen, ohne erneuten TCP-Handshake. Steht der Wert auf 0, so bedeutet das, dass es keine Einschränkungen gibt (unendlich).KeepAliveTimeout 15Die Anzahl von Sekunden nach der Übertragung einer Datei bis zum Beginn der nächsten Nachfrage, die ohne zusätzlichen Handshake stattfinden darf.StartServers 1Die Anzahl der Serverprozesse, die beim Start geladen werden sollen.MinSpareServers 1Die minimale Anzahl der unbenutzten Serverprozesse (Childs). Wird dieser Wert unterschritten, so werden neue Server gestartet.MaxSpareServers 1Die maximale Anzahl unbenutzter Serverprozesse (Childs). Wird dieser Wert überschritten, so werden unbenutzte Serverprozesse heruntergefahren.MaxClients 150Die maximale Anzahl gleichzeitig bedienbarer TCP-Verbindungen. Kommen gleichzeitig mehr als angegeben herein, so bekommen die übrigen eine Fehlermeldung und werden nicht mehr bedient.MaxRequestsPerChild 0Nach der angegebenen Zahl von abgearbeiteten Aufträgen wird ein Child-Prozess heruntergefahren und durch einen neuen ersetzt. Steht der Wert auf 0, so findet keine Ersetzung statt (0 = unendlich). Damit kann z.B. im Dauerbetrieb festgelegt werden, dass kein Server-Child mehr als 30 Anfragen beantwortet. So wird verhindert, dass ein eventuell hängender Prozess über Tage hinweg den Server stört.

Nach diesen Grundeinstellungen werden die Module geladen. An diesen Einstellungen ist eigentlich keinerlei Veränderung nötig, es sei denn, Sie haben eigene Module entwickelt und wollen sie einbinden.

Die zweite Sektion der Konfigurationsdatei bezieht sich auf die Angaben zum „Hauptserver“. Das ist der eigentliche HTTP-Server, der ohne weitere Gimmicks läuft. Im Regelfall ist das der einzige Server, nur in Spezialfällen werden sogenannte virtuelle Server dazugenommen.Port 80Die Portnummer, die verwendet werden soll, wenn der Server als standalone-Server läuft. Der Standard-Port ist 80. Ports unter 1023 müssen mit root-Rechten ausgestattet sein, es handelt sich ja um die sogenannten privilegierten Ports. Um Sicherheitslücken zu vermeiden, werden weitere Server unter anderen UserIDs gestartet.User wwwrunDie UserID, unter der die Child-Prozesse des Servers laufen. Alle Zugriffe des Servers aufs Dateisystem werden unter dieser ID ausgeführt.Group nogroupDie Gruppenmitgliedschaft der Child-Prozesse.Listen 80Diese Anweisung entspricht der Port-Anweisung, nur sind damit auch die Angabe mehrerer Ports möglich. Eine typische Form, um z.B auch das HTTPS-Protokoll (Secure Socket Layer) zu ermöglichen, wäre:

  <IfDefine SSL>
    Listen 80
    Listen 443
  </IfDefine>

ServerAdmin root@localhostDie E-Mail Adresse des Administrators dieses WebserversDocumentRoot „/usr/local/httpd/htdocs“Die Wurzel des Dokumentenbaums. Alle Pfade in URLs (außer CGI) beziehen sich auf die diesen Pfad.DirectoryIndex index.htmlDer Name (oder die Namen) der Datei, die in einem Verzeichnis aufgerufen werden soll, wenn nur der Verzeichnisname angegeben wurde. Wenn mehrere Namen angegeben werden, müssen sie durch Leerzeichen voneinander getrennt werden.ScriptAlias /cgi-bin/ „/usr/local/httpd/cgi-bin/“Mit dieser Anweisung wird festgelegt, welches Verzeichnis CGI-Scripts enthalten darf, die vom Server ausgeführt werden sollen. Der Alias /cgi-bin wird also auf das Verzeichnis /usr/local/httpd/cgi-bin/ gelegt. Damit werden URLs wie

  http://www.myhost.mydomain.de/cgi-bin/irgendwas.pl

auf das genannte Verzeichnis umgeleitet. Es ist zwar zu empfehlen, dass das Script-Verzeichnis außerhalb des Dokumentenbaums liegt, jedoch nicht notwendig. Falls mehrere solcher Aliase angelegt werden sollen, müssen sie jeweils andere Aliasnamen tragen:

  ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
  ScriptAlias /test/cgi-bin/ "/usr/cgi-bin/"
  ScriptAlias /users/hans/cgi-bin/ "/home/hans/cgi-bin/"

Die entsprechenden URLs für die drei verschiedenen Verzeichnisse wären jetzt:

  http://www.myhost.mydomain.de/cgi-bin/irgendwas.pl
  http://www.myhost.mydomain.de/test/cgi-bin/irgendwas.pl
  http://www.myhost.mydomain.de/users/hans/cgi-bin/irgendwas.pl

Die meisten weiteren Einstellungen benützen jetzt ein HTML-ähnliches Format, um die Gültgkeit auf bestimmte Bereiche zu reduzieren. Dazu werden die gewünschten Bereiche (Verzeichnisse, Dateien und URLs) in spitze Klammern geschrieben und mit einem entsprechenden Abschlußtag beendet. Ein paar Beispiele:

  <Directory "/usr/local/httpd/htdocs">
    Options FollowSymLinks
    DirectoryIndex default.htm
  </Directory>

Diese Angabe legt fest, dass die beiden Befehle in den Klammern nur für das Verzeichnis „/usr/local/httpd/htdocs“ und alle darin enthaltenen Unterverzeichnisse gelten.

Statt <Directory> kann auch <Location> stehen. Dann wird statt einer absoluten Pfadangabe eine URL angegeben. Das erspart einem Systemverwalter das Wissen über die tatsächliche Positionierung des DocumentRoot. Das muß dann selbstverständlich mit </Location> abgeschlossen werden.

Um einzelne Dateien direkt anzusprechen kann auch die Klammerung mit <Files> erfolgen. In der Klammer stehen dann Dateinamen, auf die sich die Angaben beziehen.

Die genaue Anwendung dieser drei Klammerungen werden auf der nächsten Seite beschrieben, da sich praktisch alle diese Angaben auf die Zugriffskontrolle beziehen.