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.
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.
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.
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.
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.
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.
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.
Gibt die Zeit an, die der Server wartet, bis er einen Timeout für eine Anfrage meldet.
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.
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.
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.
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.
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.
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.
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:
jeden Zugriff erlauben, aber Ausnahmen definieren
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
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.
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.
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.
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“.
Diese Anweisung ähnelt der Alias-Anweisung. Sie gibt
zusätzlich an, dass die Dateien im Zielverzeichnis als CGI-Skripten
behandelt werden sollen.
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.
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>