![]() |
Die Apache-Konfigurationsdatei:
|
|
| |
Es hat einige Zeit gedauert, bis sich die Entwickler der verschiedenen Distributionen dazu durchringen konnten, einen Apache 2.0.x in den Installationsroutinen als Standard zu setzen (falls man denn bei der Systeminstallation angibt, daß man einen Webserver haben möchte). Das ist erst mit der Freigabe der Apache-Version 2.0.49 im März 2004 geschehen, die offenbar die Skeptiker davon überzeugen konnte, daß die neue Apache-Version tatsächlich stabil ist und auch für den Einsatz als produktiver Server geeignet (die SuSE war etwas schneller).
Dabei scheinen die Entwickler, die sich für die Bereitstellung des Apache Webservers in den verschiednen Distributionen verantwortlich fühlen, zeitgleich auf vergleichbare Ideen gekommen zu sein. Keine der in diesem Artikel mehrfach genannten Distributionen verzichtet ab Apache 2.0.49 auf die Möglichkeit, die Apache-Konfigurationsdatei in mehrere kleinere Dateien zu zerlegen. Sie tun es jedoch alle auf jeweils etwas andere Art und Weise. Einzig FreeBSD bleibt bei einer "default"-Konfigurationsdatei, und Fedora Core 2 nimmt nur sehr geringe Änderungen vor. Die anderen Distributionen machen es jetzt aber nach eigenen Konzepten, womit einem "Anfänger" leider der Zugang zum Verständnis etwas erschwert werden kann.
Es hat sich darüberhinaus eine "default"-Einstellung durchgesetzt, bei der in der "main server configuration" gar kein DocumentRoot mehr vorgegeben wird. Stattdessen wird vorausgesetzt (bis auf FreeBSD), daß grundsätzlich mit mindestens einem virtuellen Host gearbeitet werden soll. Das muß nicht immer im Sinn des Benutzers sein, da sich mit einem virtuellen Host eben doch nicht alle Server-Einstellungen vornehmen lassen. Dennoch birgt dieses Konzept der Aufsplittung der httpd.conf in mehrere Einzeldateien erhebliche Vorteile in sich und darf
gewürdigt werden.
Es gibt mehrere Dutzend Linux-Distributionen, die alle irgendwelche Vorzüge und bisweilen auch Nachteile haben - im Vergleich zu den anderen. Es wäre unsinnig, auf alle diese Distributionen eingehen zu wollen. In diesem Artikel werden beispielsweise Besonderheiten von Slackware und Mandrake (es gibt auch in bezug auf die Apache-Konfiguration solche Besonderheiten) nicht benannt. Wer das Prinzip verstanden hat, wird sich zurechtfinden und den Apache administrieren und konfigurieren können.
Es muß angemerkt werden, daß die unten kurz angesprochenen konzeptionellen Vorschläge der Distributoren eben Vorschläge sind, nicht mehr, aber auch nicht weniger. Man kann ihnen folgen, wenn man es sich leicht machen möchte. Sinnvoller ist es aber, ein eigenes Konzept zu entwickeln und die vorgeschlagene Konfiguration lediglich zum Vergleich heranzuziehen. Für den Fall, daß ein Administrator doch lieber anhand der "default"-Datei sein eigenes Konfigurationskonzept verfolgen möchte, liegt eine solche Datei auch vor. Sie kann httpd.conf.default oder httpd-std.conf heißen und im Verzeichnis /usr/share/doc/apache2 bzw. an einem vergleichbaren Ort unterhalb von /usr/share zu finden sein.
Für den älteren Apache 1.3.x gab es einige Unterschiede der "default"-Konfigurationsdatei auf den Plattformen Linux und Windows. Die Konfigurationsdatei des aktuellen Apache 2.0.50 weist dagegen kaum noch plattformspezifische Unterschiede auf - abgesehen von den Systempfaden, der Modulliste und der für Linux benötigten Angabe eines Benutzers und dessen Gruppenzugehörigkeit. Im folgenden wird eine solche "default"-Konfigurationsdatei in übersetzter Form vorgestellt. Als Vorlage dafür wurde die Datei httpd-std.conf.in aus dem Sourcenpaket verwendet, was dazu führt, daß es einige ungewohnte Variablen gibt. Es handelt sich um Variablen für die jeweiligen Systempfade, die ja von Distribution zu Distribution unterschiedlich ausfallen - beispielsweise DocumentRoot "@exp_htdocsdir@". Diese Variablen werden während des Kompilierlaufs durch die system- bzw. distributionsspezifischen Werte ersetzt.
Damit alles einigermaßen übersichtlich bleibt, ist die Übersetzung für die hier angebotene Darstellung in 14 Einzeldateien zerschnitten worden. Wenn sich nun aber jemand diese "default"-Datei gerne als Ganzes anschauen möchte, ist das selbstverständlich auch möglich:
gesamte httpd.conf anzeigen.
Kleiner Hinweis: niemand wird daran gehindert, sich mit einem Klick auf die rechte Maustaste den Quelltext in seinen Editor zu laden und auf die eigene Platte zu kopieren. Es geht aber auch wesentlich einfacher. Auf der
letzten Seite dieses Artikels gibt es einen Download-Link zu einem kleinen ZIP-Archiv, das die Übersetzungen der vier in diesem Artikel angesprochenen "default"-Konfigurationsdateien als Textdateien enthält.
Die ersten etwa 30 Zeilen der httpd.conf (im übersetzten Beispiel sind es aufgrund zusätzlich eingefügter Kommentarzeilen etwas mehr) enthalten noch keinerlei Anweisungen, sondern lediglich einige kurze Hinweise allgemeiner Art.
httpd.conf-Abschnitt anzeigen
Dieser Abschnitt der Konfigurationsdatei enthält zunächst einige allgemeine Anweisungen zur Arbeitsumgebung des Webservers.
httpd.conf-Abschnitt anzeigen
Danach folgt die Liste der einzubindenden Module. Über das Konzept der Multi-Prozessing-Module können weitere Informationen unter
http://httpd.apache.org/docs-2.0/mpm.html nachgelesen werden. Grundsätzlich wird eines dieser Module benötigt, voreingestellt ist im Konfigurationsscript "prefork". Die MPM für WinNT, BeOS, NetWare und OS/2 sind für ein Linux-System irrelevant, sie können (und sollten) gestrichen werden.
Obwohl es die Anweisung "LoadModule" nach wie vor gibt, ist hier zunächst gar keine Liste zuladbarer Module enthalten. Das hängt damit zusammen, daß für die Übersetzung dieser "default"-Datei ins Deutsche die Vorlage aus dem Sourcenpaket Verwendung gefunden hat. Die Liste mit den LoadModule-Anweisungen wird aber erst während des Kompilierlaufs zusammengestellt, entsprechend den Anweisungen, die ./configure mitgegeben werden. Daher steht hier anstelle einer längeren Liste die Variable @@LoadModule@@.
httpd.conf-Abschnitt anzeigen
Das ist der anfangs, ehe man daran gehen kann, die httpd.conf zu bearbeiten (falls sie entgegen dem
Rat dieses Artikels nicht völlig neu zusammengestellt wird), umfangreichste Abschnitt. An seinem Beginn stehen zunächst ein paar Anweisungen dafür, welche auf dem Server-Rechner vorhandenen Verzeichnisse angesprochen und von wem sie ausgelesen werden dürfen.
httpd.conf-Abschnitt anzeigen
Für eine lokale Installation, die lediglich zu Testzwecken genutzt wird, ist ein Zugriffsschutz nicht unbedingt erforderlich. Allerdings wird die Möglichkeit, .htaccess-Dateien einzusetzen, dann enorm wichtig, wenn viele Benutzer auf den Server zugreifen dürfen und ihnen die Möglichkeit eingeräumt werden soll, Zugangskriterien für ihre Dokumente selbst festzulegen.
httpd.conf-Abschnitt anzeigen
Der Apache muß darüber informiert werden, welche Dateitypen er zur Weiterleitung übergeben bekommt und wie er darauf reagieren soll.
httpd.conf-Abschnitt anzeigen
Sowohl für Testzwecke wie auch im öffentlichen Betrieb sind Protokolle, die über verschiedene Zugriffe, aber auch über aufgetretene Fehler informieren, sehr wichtig. Selbstverständlich können auch diese Protokolldateien vielfältig konfiguriert werden.
httpd.conf-Abschnitt anzeigen
Da es sehr mühsam wäre, immer den vollständigen Pfad in der Adreßzeile eines Browsers einzugeben, kann mit einer Vielzahl von Aliases gearbeitet werden. Einige wenige dieser Aliasnamen sind voreingestellt.
httpd.conf-Abschnitt anzeigen
Gelegentlich möchte man sich anhand einer Auflistung einen schnellen Überblick über einen Verzeichnisinhalt verschaffen. Für die Ausgabe dieser Informationen benötigt Apache einige Anweisungen, die jetzt folgen.
httpd.conf-Abschnitt anzeigen
Festlegungen zur Spracheinstellung sowie zum verwendeten Zeichensatz können sehr wichtig sein und sollten sorgfältig ausgewählt werden.
httpd.conf-Abschnitt anzeigen
Der Apache übermittelt Daten, die Bestandteile ganzer Dateien sind, sendet und empfängt aber auch andere Daten. Er muß darüber informiert werden, welche Dateitypen er zur Weiterleitung übergeben bekommen darf und wie er darauf reagieren soll. Der größte Teil dieser Informationen über die verschiedenen MIME-Typen wird in einer externen Datei mime.types zusammengefaßt, deren Inhalt vom Server wieder ausgelesen werden muß. Das ist bereits weiter oben geschehen. Sie können diese Informationen ergänzen oder überschreiben.
Die primäre Aufgabe eines Webservers ist die Datenübermittlung, nicht aber die Datenverarbeitung. Häufig verlangen jedoch Webseiten bestimmte Vorgänge der Datenverarbeitung. Dazu übergibt der Apache die Daten an einen seiner Partner, beispielsweise an Perl, und nimmt dann dessen Arbeitsergebnisse wieder entgegen. Um das tun zu können, werden sogenannte Handler (Behandlungsroutinen) festgelegt.
httpd.conf-Abschnitt anzeigen
Man kann selbst bestimmen, in welcher Art der Apache Fehlermeldungen an einen aufrufenden Browser übermitteln soll.
httpd.conf-Abschnitt anzeigen
Am Ende des zweiten Abschnitts der Apache-Konfigurationsdatei stehen noch Anweisungen zu spezifischen Angaben über die Serverkonfiguration.
httpd.conf-Abschnitt anzeigen
Vorgegeben wird von der Apache Software Foundation lediglich ein sehr kleines und wenig aussagekräftiges Beispiel für einen virtuellen Host. Soll der Apache als produktiver Server eingesetzt werden, kann sich daraus allerdings eine sehr lange Liste entwickeln.
httpd.conf-Abschnitt anzeigen
Die SuSE GmbH hat bereits mit Apache 2.0.48 ihr neues Konzept für den Umgang mit der Konfigurationsdatei dieses Webservers eingeführt. Die httpd.conf liegt in /etc/apache2, der Ordner enthält jedoch noch mehrere zusätzliche Unterordner, in denen weitere Teile der Konfiguration liegen. In der Tradition der "httpd.conf-Kommentare" sind Hinweise zur neuen Struktur in die zentrale Konfigurationsdatei aufgenommen worden. Das hätte auch gleich in deutscher Sprache geschehen können, da die SuSE nun einmal ihr wichtigstes Verbreitungsgebiet im deutschsprachigen Raum hat. Eine übersetzte deutschsprachige Fassung dieser neuen httpd.conf kann
hier eingesehen werden.
Die einzelnen Dateien, die mit Include in die httpd.conf eingebunden werden, sind:
| Dateiname | Aufgabengebiet |
|---|---|
/etc/apache2/uid.conf |
bestimmt den Apache-Benutzer und legt dessen Gruppenzugehörigkeit fest |
/etc/apache2/server-tuning.conf |
legt fest, welches der MPM-Module genutzt werden soll - die nicht benötigten Einträge können entfernt werden. Außerdem enthält sie Festlegungen zu Timeouts und anderes zur Größe des Serverpools |
/etc/apache2/sysconfig.d/loadmodule.conf |
enthält die Liste der vom Webserver verwendeten Module. Im SuSE-Konzept wird sie erst zur Startzeit des Servers generiert, es macht also keinen Sinn, hier Anpassungen oder Veränderungen vornehmen zu wollen. Wenn man die Liste verändern und beispielsweise ein PHP-Modul aktivieren möchte, so muß das entweder im Systemkonfigurations-Editor in YaST oder durch manuelles Nachbearbeiten von /etc/sysconfig/apache2 erfolgen |
/etc/apache2/listen.conf |
enthält Angaben zur IP des Servers und/oder zum verwendeten Port. Sie sollte den individuellen Bedürfnissen entsprechend angepaßt werden |
/etc/apache2/mod_log_config.conf |
enthält Angaben zur Formatierung der Protokolldateien. Sie kann den individuellen Bedürfnissen entsprechend angepaßt werden |
/etc/apache2/sysconfig.d/global.conf |
wird im SuSE-Konzept erst zur Startzeit des Servers generiert, es macht also keinen Sinn, hier Anpassungen oder Veränderungen vornehmen zu wollen. Sie enthält einige wenige globale Optionen |
/etc/apache2/mod_status.conf |
legt fest, ob auch von Clients aus Informationen über den Serverstatus abgerufen werden dürfen |
/etc/apache2/mod_info.conf |
legt fest, ob auch von Clients aus Informationen über die Serverkonfiguration abgerufen werden dürfen. Die Ausgabe enthält eine Übersicht der geladenen Module einschließlich aller in der httpd.conf notierten Anweisungen |
/etc/apache2/mod_autoindex-defaults.conf |
bestimmt das optische Aussehen von servergenerierten Browseranzeigen |
/etc/apache2/errors.conf |
bestimmt die Erscheinungsweise und den Inhalt von servergenerierten Fehlermeldungen |
/etc/apache2/ssl-global.conf |
ist für globale Sicherheitseinstellungen zuständig |
/etc/apache2/default-server.conf |
enthält einige grundsätzliche Anweisungen, zum Beispiel die Systempfade zu Verzeichnissen mit Seiten, die bei Anfragen ausgeliefert werden können. Hier wird auch festgelegt, ob und wie CGI-Scripts ausgeführt werden sollen. Zusätzlich können - wiederum mit Include - weitere Konfigurationsschnipsel aus /etc/apache2/conf.d/ eingebunden werden, um beispielsweise die für PHP nötigen Anweisungen bereitzustellen |
/etc/apache2/sysconfig.d/include.conf |
wird bei Serverstart generiert und dient dazu, eventuell vorhandene weitere Dateien einzubinden |
/etc/apache2/vhosts.d/*.conf |
Der Platzhalter zeigt an, daß es sich hier um mehrere Dateien handeln kann. Die SuSE legt in diesem Verzeichnis zwei Dateien an, die vhost.template und vhost-ssl.template heißen und als Vorlagen genutzt werden können |
Es ist also eine Aufteilung nach Funktionsbereichen, wie sie (teilweise) von den Modulen vorgegeben werden, getroffen worden. In den neuen *.conf-Dateien sind zum Teil diejenigen Kommentare enthalten, die die Apache Software Foundation ihrer "default"-Konfigurationsdatei mitgegeben hat. Wie sich die SuSE die Konfiguration eines virtuellen Host vorstellt, kann man sich anhand der Vorlagendatei /etc/apache2/vhosts.d/vhost.template
hier einmal ansehen.
Innerhalb von /etc/apache2 liegen noch einige Unterverzeichnisse, die zwar keine *.conf-Dateien enthalten, aber benötigt werden, um das gewählte Multiprozessing-Modul (prefork, worker oder perchild) ansprechen bzw. das SSL-Protokoll näher bestimmen zu können. Zusätzlich kann YaST mit dem Systemkonfigurations-Editor auf die *.conf-Dateien, die in /etc/apache2/sysconfig.d liegen, zugreifen und sie verändern.
Ein Script apachectl, das den Webserver startet, gibt es nicht mehr. Soll er als "Dämon" bzw. als Dienst bereits bei Systemstart aktiviert werden, so müssen einige Einstellungen in dem Script /etc/sysconfig/apache2 vorgenommen werden. Diese Veränderungen können auch von einer grafischen Anwendung aus erfolgen, in YaST ist ein "Editor für Systemkonfigurationsdateien" enthalten, der entfernt an die registry der Windows-Systeme erinnert. Auch dieses Script kann in einer übersetzten Fassung
hier vorgestellt werden.
Die Liste der Module (DSO) wird zwar in /etc/apache2/sysconfig.d/loadmodule.conf dem Apache zur Verfügung gestellt, aber dieser Teil der Apache-Konfiguration wird über /etc/sysconfig/apache2 verändert beziehungsweise gesteuert, so daß es nicht sinnvoll ist, individuelle Einstellungen in loadmodule.conf vornehmen zu wollen. Stattdessen muß das Script /etc/sysconfig/apache2 bearbeitet werden - oder man nimmt YaST zuhilfe. Die Modulliste wird an folgender Stelle festgelegt:
...
## Typ: string
## Standardwerte: "access actions alias auth auth_dbm autoindex cgi dir env
## expires include log_config mime negotiation setenvif ssl
## suexec userdir php4"
## ServiceRestart: apache2
#
# [Es kann unverständlich erscheinen, daß nicht einfach die Anweisung "LoadModule"
# in der httpd.conf bearbeitet werden kann. Aber da die "LoadModule"-Anweisungen
# unter Umständen einen absoluten Pfad für die angesprochenen Module benötigen, kann
# es bei einem Wechseln der MPM etwas ärgerlich werden. Daher ist es einfacher, die
# Modulnamen hier anzugeben.]
# [...]
# Ihre Einstellungen
APACHE_MODULES="access actions alias auth auth_dbm autoindex cgi dir env expires
include log_config mime negotiation setenvif ssl suexec userdir php4"
...
Das Installationstool anaconda greift bei einer Installation des Apache so gut wie gar nicht in die httpd.conf ein, sie wird also nahezu im "default"-Zustand der Apache Software Foundation übernommen und in /etc/httpd/conf abgelegt. Einzige Ausnahme: man kann auswählen, ob man zusätzliche externe Module wie zum Beispiel mod_php, mod_perl oder mod_python einbinden möchte. Das kann auch nachträglich geschehen, da es in Fedora einen Paketmanager gibt mit vergleichbaren Aufgaben, wie sie YaST bei SuSE erfüllt:
In einem solchen Fall werden im Verzeichnis /etc/httpd/conf/conf.d modulspezifische *.conf-Dateien angelegt.
In Debian wird ein ähnliches Konzept verfolgt, wie es das auch bei der SuSE gibt, wenn auch längst nicht so drastisch. Wird zur Integration des Apache in ein Debian-System das distributionsspezifische .deb-Paket benutzt, so sind bereits einige Module fest einkompiliert, so daß sie nicht zusätzlich mit LoadModule eingebunden werden müssen. Man kann es mit dem Konsolenbefehl apache2 -l nachprüfen:
Die Konfigurationsdatei hat den neuen Namen apache2.conf und liegt im Verzeichnis /etc/apache2. Dieses Verzeichnis enthält mehrere Unterverzeichnisse für einzelne Konfigurationsabschnitte. Die apache2.conf wird im Vergleich mit der "default"-Konfigurationsdatei lediglich gekürzt, es gibt mehrere kleinere Dateien, die mit Include in die Konfigurationsdatei eingebunden werden. Im einzelnen gehören folgende Dateien zur Apache-Konfiguration:
| Dateiname | Aufgabengebiet |
|---|---|
/etc/apache2/apache2.conf |
enthält Anweisungen zur Arbeitsumgebung, zum Multiprozessing-Modul, zu den Protokolldateien und bindet weitere Konfigurationsabschnitte ein |
/etc/apache2/httpd.conf |
ist vorläufig vollkommen leer und kann vom Administrator genutzt werden, um die benötigten Anweisungen einzutragen |
| /etc/apache2/mods-enabled/*.load /etc/apache2/mods-enabled/*.conf |
Die Platzhalter zeigen an, daß es sich um mehrere Dateien handelt bzw. handeln kann.Das Verzeichnis enthält für jedes Modul, das als shared object angesprochen werden soll, eine einzelne LoadModule-Anweisung und einen eigenen Konfigurationsschnipsel |
/etc/apache2/ports.conf |
enthält einen Konfigurationsschnipsel mit der Listen-Anweisung |
/etc/apache2/conf.d |
Dieses Verzeichnis enthält eine Datei apache2-doc, mit der ein Alias zum Ansprechen der Apache-Dokumentation festgelegt wird. |
/etc/apache2/sites-enabled |
Das Verzeichnis ist für die Konfiguration virtueller Hosts vorgesehen. Anfangs liegt dort nur eine Vorlage, die benötigt wird, damit http://localhost/ einen Inhalt bekommen kann. |
Die Kommentare werden übrigens rigoros gekürzt und zu einem Großteil gestrichen. Um die Konfiguration des Apache und die Bedeutung der einzelnen Anweisungen zu verstehen, ist ein Debian-Benutzer also von vornherein gezwungen, in der Online-Dokumentation nachzulesen. Außerdem sind einige Anweisungen nicht enthalten, die von der Apache Software Foundation in einer "default"-Konfigurationsdatei vorformuliert wurden. Zum Vergleich steht aber eine solche "default"-Datei im Verzeichnis /usr/share/doc/apache2/examples zur Verfügung.
Gentoo ist zur Zeit das Betriebssystem, das auf der Server-Hardware, von der aus
http://www.selfhtml.org gehostet wird, zum Einsatz kommt (Stand Juli 2004). Und selbstverständlich ist der Server, der die Webangebote des SELFHTML-Raums ausliefert, ein Apache ...
Wenn man sich mit emerge apache den Apache-Webserver ins System einbauen läßt, gibt es ebenfalls ein distributionsspezifisches Verhalten für die Zusammenstellung der Apache-Konfiguration. Gentoo trennt du ursprüngliche httpd.conf im wesentlichen in drei kleinere Dateien auf. Es wird dabei weitgehend dem Vorschlag der Apache Software Foundation gefolgt, die ja, wie
weiter vorn dargestellt, drei "Hauptabschnitte" benannt hat. Je nachdem, ob und welche Zusatzmodule (mod_perl, mod_php usw.) genutzt werden sollen, gibt es für diese Zusatzmodule eigene *.conf-Dateien, so daß die Apache-Konfiguration aus folgenden Bestandteilen aufgebaut sein kann:
| Dateiname | Aufgabengebiet |
|---|---|
/etc/apache2/conf/apache2.conf |
entspricht dem Abschnitt "global environment" in der default-Konfigurationsdatei und definiert damit die Arbeitsumgebung des Servers |
/etc/apache2/conf/commonapache2.conf |
entspricht dem Abschnitt "main server configuration" in der default-Konfigurationsdatei und definiert damit die Arbeitsweise des Servers |
/etc/apache2/conf/vhosts/vhosts.conf |
entspricht dem Abschnitt "virtual hosts" in der default-Konfigurationsdatei und definiert damit einen oder mehrere virtuelle Hosts |
| /etc/apache2/conf/vhosts/dynamic-vhosts.conf /etc/apache2/conf/vhosts/virtual-homepages.conf |
zwei kleine Vorlagen für virtuelle Hosts |
| /etc/apache2/conf/modules.d/40_mod_ssl.conf /etc/apache2/conf/modules.d/41_mod_ssl.default-vhost.conf /etc/apache2/conf/modules.d/45_mod_dav.conf |
Konfigurationsabschnitte für externe Module (es können weitere externe Module hier angesprochen werden) |
Die Vorlage für virtuelle Hosts unterscheidet sich von dem, was in einer "default"-httpd.conf vorgeschlagen wird. Es lohnt sich, einen Blick darauf zu werfen:
################# vhosts.conf # # Hier wird die Konfiguration für virtuelle Hosts abgelegt. # # Seit Apache 1.3.19 haben wir das Setup modifiziert, um ein paar nette Tricks # nutzen zu können: # #- Eine Anweisung"SuExecUserGroup [user] [group]"wurde eingefügt, damit # virtuelle Hosts jetzt mit dem Befehlsuexecarbeiten können. Ist die # Anweisung aktiv, wird der Apache dadurch veranlaßt, sämtliche CGI-Scripts # mit dieser Gruppen- und Benutzerkennung laufen zu lassen (vorausgesetzt, # uid und gid liegen aus Sicherheitsgründen über 1000). Die Verzeichnisse # und CGI-Scripts müssen allerdings diesem Benutzer und dieser Gruppe ange- # hören, damit das Ganze auch funktioniert. #- Eine Anweisung"Setenv VLOG"wurde eingefügt. Das funktioniert in Zusam- # menarbeit mit derCustomLog-Anweisung in commonapache2.conf. Ist"Setenv # VLOG"festgelegt, wird Apache eine Protokolldatei # /var/log/apache2/VLOG-YYYY-MM-<ServerName>.log erstellen, statt alles # in access_log einzutragen. Nutzen Sie diese Möglichkeit und definieren # Sie nicht für jeden virtuellen Host eine eigene Protokolldatei, da Sie damit # einige Dateibeschreibungen verlieren. #- Sie können auch für jeden virtuellen Host einen eigenen Pfad für dieses # VLOG definieren, wenn Sie beispielsweise die Protokolle in jedem Benutzer- # verzeichnis ablegen möchten. Wenn Sie so eine Protokolldatei für Kontroll- # zwecke einsetzen möchten, sollten Sie sie in ein Verzeichnis legen, das # root gehört, da ein Benutzer sie sonst löschen könnte. #- Es wird empfohlen, die error_log *nur dann* einzubinden, wenn der virtuelle # Host CGI-Scripts einsetzen darf. Mit diesem Protokoll werden Dateiinformati- # onen gespeichert. ################# IP-based Virtual Hosts #<VirtualHost 192.168.2.100> #SuExecUserGroup jmdault jmdault #DocumentRoot /home/jmdault/public_html #ServerName test2.com #Setenv VLOG /home/jmdault/logs #ErrorLogs /home/jmdault/test2-error_log #RewriteEngine On #RewriteOptions inherit #</VirtualHost> ################# Named VirtualHosts #NameVirtualHost 111.222.33.44 #<VirtualHost 111.222.33.44> #ServerName www.domain.tld #ServerPath /domain #DocumentRoot /web/domain #</VirtualHost>
In Gentoo gibt es ein sehr interessantes und gut ausgebautes Konzept, mit dem das installierte System aktuell gehalten und Software dazuinstalliert werden kann. Es ist dem ports-System, das es in FreeBSD gibt, sehr ähnlich. In dem Verzeichnis /usr/portage liegen in zahlreichen Unterverzeichnissen vorgefertigte kleine Installationsscripts für nahezu alle existierenden Linux-Softwarekomponenten - das Verzeichnis erreicht dadurch eine beträchtliche Größe. Die Scripts, mit deren Hilfe Gentoo Softwarepakete ins System integriert, heißen "ebuild" und enthalten diejenigen Anweisungen, die ein Softwarepaket "distributionsspezifisch" ins System eingliedern. Für den Apache ist das das Script /usr/portage/net-www/apache/apache-2.0.50.ebuild. Dieses Script hat ähnliche Aufgaben wie ein Makefile (so heißt das Pendant in FreeBSD) und enthält unter anderem die Anweisungen für .configure. Wofür .configure benötigt wird, ist
weiter vorn bereits ausgeführt worden. Das "ebuild"-Script für den Apache enthält die .configure-Anweisungen in folgender Form:
./configure \
--with-suexec-safepath="/usr/local/bin:/usr/bin:/bin" \
--with-suexec-logfile=/var/log/apache2/suexec_log \
--with-suexec-bin=/usr/sbin/suexec2 \
--with-suexec-userdir=${USERDIR} \
--with-suexec-caller=apache \
--with-suexec-docroot=/var/www \
--with-suexec-uidmin=1000 \
--with-suexec-gidmin=100 \
--with-suexec-umask=077 \
--enable-suexec=shared \
\
${MY_BUILTINS} \
\
--cache-file=${S}/config.cache \
--with-perl=/usr/bin/perl \
--with-expat=/usr \
--with-ssl=/usr \
--with-z=/usr \
--with-port=80 \
--enable-layout=Gentoo \
--with-program-name=apache2 \
--with-devrandom=/dev/urandom \
--host=${CHOST} ${myconf} || die "bad ./configure please submit bug report to
bugs.gentoo.org. Include your config.layout."
#--with-mpm={worker|prefork|perchild|leader|threadpool}
Selbstverständlich können bei Bedarf in diesem Script individuelle Anpassungen vorgenommen werden, wenn man die Installationsumgebung anders gestalten möchte.
FreeBSD ist, wie bereits erwähnt, kein Linux (der Kernel ist dafür das entscheidende Kriterium). Der Systemaufbau und die zugrundeliegende "Philosophie" bieten aber ausgezeichnete Vergleichsmöglichkeiten. Es gibt mit dem Ports-System ein ausgefeiltes Konzept, mit dem die im System vorhandene Software aktuell gehalten und neue Software installiert werden kann. Die Ports werden nahezu täglich aktualisiert. Bei zahlreichen Softwarepaketen muß man nicht gleich eine ganze "neue Version" herunterladen und installieren, sondern es genügt, Patches einzuspielen. Das bringt es aber beispielsweise mit sich, daß der aktuelle port /usr/ports/www/apache2 zwar verspricht, einen Apache 2.0.49 zu installieren, tatsächlich aber Apache 2.0.50 installiert. Ausschlaggebend ist, welche Anweisungen das Makefile des ports enthält.
Die Makefiles in den ports und die anderen in einem FreeBSD-port vorhandenen Dateien zeigen deutlich, wie eine "distributionsspezifische" Zusammenstellung des Apache funktioniert. Es war
weiter vorn bereits auf die Möglichkeit aufmerksam gemacht worden, sich den Apache selbst zu bauen - zu "übersetzen", wie es wohl richtiger heißen müßte. Auf die Rolle der configure-Vorgaben ist dort bereits eingegangen worden. Diese configure-Vorgaben führt das Makefile des ports in folgender Form aus:
CONFIGURE_ARGS= --prefix=${PREFIX_RELDEST} \
--enable-layout=FreeBSD \
--with-perl=${PERL5} \
--with-port=${WITH_HTTP_PORT} \
--with-expat=${LOCALBASE} \
--with-iconv=${LOCALBASE} \
--libdir=${PREFIX_RELDEST}/lib/apache2 \
--includedir=${PREFIX_RELDEST}/include/apache2
CONFIGURE_ENV= CC="${CC}" CPPFLAGS="${CPPFLAGS}" \
CFLAGS="${CFLAGS}" \
LDFLAGS="${LDFLAGS}" CONFIG_SHELL="${SH}" \
LOCALBASE="${LOCALBASE}"
Der Ausschnitt zeigt, daß es eine ganze Reihe von Variablen gibt, mit denen letzten Endes festgelegt wird, wie der Apache kompiliert und an welchen Orten im System er installiert werden soll. Es gibt mehrere Makefiles in den verschiedenen Unterverzeichnissen des Sourcenpakets, die erst durch make über die gewünschten Systempfade informiert werden.
FreeBSD übernimmt den von der Apache Software Foundation vorgeschlagenen "default"-Zustand fast unverändert. Die Konfigurationsdatei heißt weiterhin httpd.conf und entspricht dem
oben vorgestellten Zustand. Sie liegt im Verzeichnis /usr/local/etc/apache2, und die ausführbere Programmdatei selbst ist /usr/local/sbin/httpd. Sie wird über das Script /usr/local/sbin/apachectl aufgerufen. Soll der Apache bei Systemstart als "Dämon" hochgefahren werden, so erhält (seit Apache 2.0.49) die Systemkonfigurationsdatei /etc/rc.conf einen Eintrag apache2_enable="YES".
© 2007
Impressum, für diese Seite:
christoph.schnauss@berlin.de