15.7. Konfiguration

Wenn man Apache installiert hat, sind weitere Anpassungen nur nötig, wenn man spezielle Wünsche oder Anforderungen hat. Apache kann einerseits über konfiguriert werden, andererseits kann man auch die Datei /etc/apache2/httpd.conf direkt editieren.

15.7.1. Konfiguration mit

Die Einstellungen, die Sie in /etc/sysconfig/apache2 vornehmen können, werden mittels in die Konfigurationsdateien von Apache eingepflegt. Diese umfassen jene Konfigurationsmöglichkeiten, die für viele Fälle ausreichend sein dürften. Zu jeder Variable finden Sie erläuternde Kommentare in der Datei.

15.7.1.1. Eigene Konfigurationsdateien

Statt Änderungen in der Konfigurationsdatei /etc/apache2/httpd.conf direkt vorzunehmen, kann man mit Hilfe der Variablen APACHE_CONF_INCLUDE_FILES eine eigene Konfigurationsdatei angeben (beispielsweise httpd.conf.local), die dann in die Hauptkonfigurationsdatei eingelesen wird. Auf diese Weise bleiben auch eigene Änderungen an der Konfiguration erhalten, wenn die Datei /etc/apache2/httpd.conf bei einer Neuinstallation überschrieben wird.

15.7.1.2. Module

Module, die per bereits installiert wurden, werden aktiviert, indem man den Namen des Moduls in die für die Variable APACHE_MODULES angegebene Liste aufnimmt. Diese Variable findet sich in der Datei /etc/sysconfig/apache2.

15.7.1.3. Flags

Mit der Variable APACHE_SERVER_FLAGS können Flags angegeben werden, die bestimmte Bereiche in der Konfigurationsdatei an- und ausschalten. Ist also in der Konfigurationsdatei ein Abschnitt in

<IfDefine someflag>
.
.
.
</IfDefine>

eingeschlossen, so wird dieser nur aktiviert, wenn bei in der Variable ACTIVE_SERVER_FLAGS das entsprechende Flag gesetzt ist: ACTIVE_SERVER_FLAGS = ... someflag ... Auf diese Weise können größere Bereiche der Konfigurationsdatei zu Testzwecken einfach aktiviert oder deaktiviert werden.

15.7.2. Manuelle Konfiguration

15.7.2.1. Die Konfigurationsdatei

Die Konfigurationsdatei /etc/apache2/httpd.conf erlaubt Änderungen, die über Einstellungen in /etc/sysconfig/apache2 nicht möglich sind. Es folgen einige der Parameter, die dort eingestellt werden können. Sie sind ungefähr in der Reihenfolge aufgelistet, in der sie in dieser Datei vorkommen.

15.7.2.2. DocumentRoot

Eine grundlegende Einstellung ist die sogenannte DocumentRoot, das ist das Verzeichnis, unter dem Apache Webseiten erwartet, die vom Server ausgeliefert werden sollen. Sie ist für den Default-Virtual Host auf /srv/www/htdocs eingestellt und muss normalerweise nicht geändert werden.

15.7.2.3. Timeout

Gibt die Zeit an, die der Server wartet, bis er einen Timeout für eine Anfrage meldet.

15.7.2.4. MaxClients

Die Anzahl der Clients, die Apache maximal gleichzeitig bedient. Die Voreinstellung ist 150, dieser Wert könnte für eine viel besuchte Website aber auch zu niedrig sein.

15.7.2.5. LoadModule

Die LoadModule Anweisungen geben an, welche Module geladen werden. In Apache 2 wird die Ladereihenfolge durch die Module selbst angegeben, siehe dazu auch den Abschnitt 15.4. “Neuerungen mit Apache 2”. Ausserdem geben diese Anweisungen an, welche Datei das Modul enthält.

15.7.2.6. Port

Gibt den Port an, auf dem Apache auf Anfragen wartet. Dies ist normalerweise immer Port 80, der Standardport für HTTP. Diese Einstellung zu ändern, ist im Normalfall nicht sinnvoll. Ein Grund, Apache auf einem anderen Port lauschen zu lassen, kann der Test einer neuen Version einer Website sein. Auf diese Weise ist die funktionierende Version der Website nach wie vor über den Standardport 80 erreichbar.

Ein weiterer Grund kann sein, dass man Seiten lediglich im Intranet zur Verfügung stellen will, weil sie Informationen enthalten, die nicht jeden etwas angehen. Dazu stellt man den Port beispielsweise auf den Wert 8080 ein und sperrt Zugriffe von aussen auf diesen Port in der Firewall. So ist der Server vor jedem Zugriff von ausserhalb abgesichert.

15.7.2.7. Directory

Mit dieser Direktive werden die Zugriffs- und andere Rechte für ein Verzeichnis gesetzt. Auch für die DocumentRoot existiert eine solche Direktive, der dort angegebene Verzeichnisnname muss immer parallel mit DocumentRoot geändert werden.

15.7.2.8. DirectoryIndex

Hiermit kann eingestellt werden, nach welchen Dateien Apache sucht, um eine URL zu vervollständigen, bei der die Angabe der Datei fehlt. Die Voreinstellung ist index.html. Wird also beispielsweise vom Client die URL http://www.xyz.com/foo/bar aufgerufen und existiert unterhalb der DocumentRoot ein Verzeichnis foo/bar, das eine Datei names index.html enthält, so liefert Apache diese Seite an den Client zurück.

15.7.2.9. AllowOverride

Jedes Verzeichnis, aus dem Apache Dokumente ausliefert, kann eine Datei enthalten, die global eingestellte Zugriffsrechte und andere Einstellungen für dieses Verzeichnis abändern kann. Diese Einstellungen gelten rekursiv für das aktuelle Verzeichnis und seine Unterverzeichnisse, bis sie in einem Unterverzeichnis von einer weiteren solchen Datei geändert werden. Dies bedeutet auch, dass solche Einstellungen, wenn sie in einer Datei in DocumentRoot angegeben sind, global gelten. Diese Dateien haben normalerweise den Namen .htaccess, man kann das jedoch ändern, siehe dazu den Abschnitt 15.7.2.11. “AccessFileName”.

Mit AllowOverride kann man einstellen, ob die in den lokalen Dateien angegebenen Einstellungen die globalen Einstellungen überschreiben können. Mögliche Werte sind None, All sowie jede mögliche Kombination von Options, FileInfo, AuthConfig und Limit. Die Bedeutung dieser Werte ist in der Dokumentation zu Apache ausführlich beschrieben. Die (sichere) Voreinstellung ist None.

15.7.2.10. Order

Diese Option beeinflusst, in welcher Reihenfolge die Einstellungen für die Zugriffsrechte Allow, Deny angewandt werden. Die Voreinstellung ist:

Order allow,deny

Es werden also zuerst die Zugriffsrechte für erlaubte Zugriffe und dann die für verbotene Zugriffe angewandt. Die zugrundeliegende Denkweise ist eine von zweien:

allow all

jeden Zugriff erlauben, aber Ausnahmen definieren.

deny all

jeden Zugriff verweigern, aber Ausnahmen definieren.

Beispiel für deny all:

Order deny,allow
Deny from all
Allow from example.com
Allow from 10.1.0.0/255.255.0.0

15.7.2.11. AccessFileName

Hier lässt sich der Name für die Dateien einstellen, die in von Apache ausgelieferten Verzeichnissen die globalen Einstellungen für Zugriffsrechte etc. überschreiben können (siehe dazu auch Abschnitt 15.7.2.9. “AllowOverride”). Die Voreinstellung ist .htaccess.

15.7.2.12. ErrorLog

Gibt den Namen der Datei an, in der Apache Fehlermeldungen ausgibt. Die Voreinstellung ist /var/log/httpd/errorlog. Fehlermeldungen für Virtual Hosts (siehe Abschnitt 15.10. “Virtual Hosts”) werden ebenfalls in diese Datei ausgegeben, wenn im VirtualHost-Abschnitt der Konfigurationsdatei keine eigene Log-Datei angegeben wurde.

15.7.2.13. LogLevel

Fehlermeldungen werden je nach Dringlichkeit in verschiedene Stufen eingeteilt. Diese Einstellung gibt an, ab welcher Dringlichkeitsstufe die Meldungen ausgeben werden. Eine Einstellung auf einen Level gibt an, dass Meldungen dieser Stufe und dringendere Meldungen ausgegeben werden. Voreinstellung ist warn.

15.7.2.14. Alias

Mit einem Alias kann man einen Shortcut für ein Verzeichnis angeben, mit dem man dann direkt auf dieses Verzeichnis zugreifen kann. So kann man beispielsweise über das Alias /manual/ auf das Verzeichnis /srv/www/htdocs/manual zugreifen, auch wenn die DocumentRoot auf ein anderes Verzeichnis als /srv/www/htdocs eingestellt ist. Solange die DocumentRoot diesen Wert hat, macht das keinen Unterschied. Im Falle dieses Alias kann man dann direkt mit http://localhost/manual auf das entsprechende Verzeichnis zugreifen. Eventuell kann es nötig sein, für das in einer Alias-Direktive angegebene Zielverzeichnis eineDirectory-Direktive anzugeben, in der die Rechte für das Verzeichnis eingestellt werden (vgl. Abschnitt 15.7.2.7. “Directory”).

15.7.2.15. ScriptAlias

Diese Anweisung ähnelt der Alias-Anweisung. Sie gibt zusätzlich an, dass die Dateien im Zielverzeichnis als CGI-Skripte behandelt werden sollen.

15.7.2.16. Server Side Includes

Server Side Includes können aktiviert werden, indem man alle ausführbaren Dateien nach SSIs durchsuchen lässt. Dies geschieht mit der folgenden Anweisung:

<IfModule mod_include.c>
XBitHack on
</IfModule>

Um eine Datei nach Server Side Includes durchsuchen zu lassen, muss man sie dann lediglich mit chmod +x dateiname ausführbar machen. Alternativ kann man auch explizit den Typ der Dateien angeben, die nach SSIs durchsucht werden sollen. Dies geschieht mit

AddType text/html .shtml
AddHandler server-parsed .shtml

Es ist keine gute Idee, hier einfach .html anzugeben, da Apache dann alle Seiten nach Server Side Includes durchsucht (auch solche, die mit Sicherheit keine solchen enthalten), was die Performance erheblich beeinträchtigt. Bei sind diese beiden Anweisungen bereits in der Konfigurationsdatei eingetragen, es sind also normalerweise keine Anpassungen nötig.

15.7.2.17. UserDir

Mit Hilfe des Moduls mod_userdir und der Direktive UserDir kann man ein Verzeichnis im Home-Verzeichnis des Anwenders angeben, in dem dieser seine Dateien über Apache veröffentlichen kann. Dies wird in über die Variable HTTPD_SEC_PUBLIC_HTML eingestellt. Um Dateien veröffentlichen zu können, muss diese Variable auf den Wert yes gesetzt sein. Dies führt zu folgendem Eintrag in der Datei /etc/httpd/suse_public_html.conf, die von /etc/apache2/httpd.conf eingelesen wird.

<IfModule mod_userdir.c>
UserDir public_html
</IfModule>