30.6. Konfiguration

Wenn man Apache installiert hat, sind weitere Anpassungen nur nötig, wenn man spezielle Wünsche oder Anforderungen hat. Apache kann über YaST und SuSEconfig oder durch direktes Editieren der Datei /etc/apache2/httpd.conf konfiguriert werden.

30.6.1. Konfiguration mit SuSEconfig

Die Einstellungen, die Sie in /etc/sysconfig/apache2 vornehmen, werden durch SuSEconfig in die Konfigurationsdateien von Apache integriert. Diese umfassen jene Konfigurationsmöglichkeiten, die für viele Fälle ausreichend sind. Zu jeder Variable finden Sie erläuternde Kommentare in der Datei.

30.6.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. Diese Datei wird dann über die Hauptkonfigurationsdatei mit eingelesen. Auf diese Weise bleiben auch eigene Änderungen an der Konfiguration erhalten, wenn die Datei /etc/apache2/httpd.conf bei einer Neuinstallation überschrieben wird.

30.6.1.2. Module

Module, die per YaST bereits installiert wurden, werden aktiviert, indem man den Namen des Moduls in die Liste aufnimmt, die unter der Variablen APACHE_MODULES angegeben ist. Diese Variable findet sich in der Datei /etc/sysconfig/apache2.

30.6.1.3. Flags

Mit der Variablen 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 in der Variablen 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.

30.6.2. Manuelle Konfiguration

Durch Änderungen in der Konfigurationsdatei /etc/apache2/httpd.conf können Sie weitere Einstellungen vornehmen, die mit /etc/sysconfig/apache2 nicht abgedeckt 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.

30.6.2.1. 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.

30.6.2.2. Timeout

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

30.6.2.3. MaxClients

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

30.6.2.4. LoadModule

Die LoadModule-Anweisungen geben an, welche Module geladen werden sollen. Die Ladereihenfolge wird durch die Module selbst bestimmt. Außerdem geben diese Anweisungen an, welche Datei das Modul enthält.

30.6.2.5. Port

Gibt den Port an, auf dem Apache auf Anfragen wartet. Dies ist normalerweise 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 außen auf diesen Port in der Firewall. So ist der Server vor jedem Zugriff von außerhalb abgesichert.

30.6.2.6. 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 Verzeichnisname muss immer parallel mit DocumentRoot geändert werden.

30.6.2.7. 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.example.com/foo/bar aufgerufen und existiert unterhalb der DocumentRoot ein Verzeichnis foo/bar, das eine Datei namens index.html enthält, so liefert Apache diese Seite an den Client zurück.

30.6.2.8. 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 dessen Unterverzeichnisse, bis sie in einem Unterverzeichnis von einer weiteren solchen Datei geändert werden. Wenn solche Einstellungen in einer Datei in DocumentRoot angegeben sind, gelten sie global. Diese Dateien haben normalerweise den Namen .htaccess, den man jedoch gemäß Abschnitt 30.6.2.10, „AccessFileName“ ändern kann.

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.

30.6.2.9. 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
    

30.6.2.10. 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 30.6.2.8, „AllowOverride“). Die Voreinstellung ist .htaccess.

30.6.2.11. ErrorLog

Gibt den Namen der Datei an, in die Apache Fehlermeldungen schreibt. Die Voreinstellung ist /var/log/httpd/errorlog. Fehlermeldungen für virtuelle Hosts (siehe Abschnitt 30.9, „Virtuelle Hosts“) werden ebenfalls in diese Datei geschrieben, sofern im VirtualHost-Abschnitt der Konfigurationsdatei keine eigene Log-Datei angegeben wurde.

30.6.2.12. 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.

30.6.2.13. Alias

Mit einem Alias kann man ein Kürzel 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 DocumentRoot auf ein anderes Verzeichnis als /srv/www/htdocs eingestellt ist (wenn DocumentRoot auf dieses Verzeichnis gesetzt wird, hat das Alias keine Auswirkung). 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 eine Directory-Direktive anzugeben, in der die Rechte für das Verzeichnis eingestellt werden. Siehe Abschnitt 30.6.2.6, „Directory“.

30.6.2.14. ScriptAlias

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

30.6.2.15. 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
    

Geben Sie hier bitte nicht einfach .html an, 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 SUSE LINUX sind diese beiden Anweisungen bereits in der Konfigurationsdatei eingetragen, es sind also normalerweise keine Anpassungen nötig.

30.6.2.16. 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 SuSEconfig ü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 /etc/apache2/mod_userdir.conf, die von /etc/apache2/httpd.conf eingelesen wird.

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

SUSE LINUX Administrationshandbuch 9.3