Apache HTTP Server Version 2.0
Dieses Dokument umfaßt nur die Kompilierung und Installation des Apache auf Unix und Unix-ähnlichen Systemen. Für die Kompilierung und Installation unter Windows lesen Sie bitte Den Apache unter Microsoft Windows betreiben. Für andere Plattformen lesen Sie bitte die Dokumentation Plattformen.
Die Konfigurations- und Installationsumgebung des Apache 2.0 hat sich seit dem Apache 1.3 komplett verändert. Der Apache 1.3 benutzt einen speziellen Satz von Skripten, um eine einfache Installation zu ermöglichen. Der Apache 2.0 dagegen verwendet nun libtool
und autoconf
, um eine Umgebung zu schaffen, die der vieler anderer Open Source Projekte ähnlich sieht.
Download | $ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz |
Auspacken | $ gzip -d httpd-2_0_NN.tar.gz |
Konfigurieren | $ ./configure --prefix=PREFIX |
Kompilieren | $ make |
Installieren | $ make install |
Anpassen | $ vi PREFIX/conf/httpd.conf |
Testen | $ PREFIX/bin/apachectl start |
NN muss durch die Nummer der Unterversion ersetzt werden, und PREFIX durch den Verzeichnispfad, in dem der Server installiert werden soll. Wenn PREFIX nicht angegeben ist, wird die Voreinstellung /usr/local/apache2
verwendet.
Beginnend mit den Anforderungen für die Kompilierung und Installation des Apache HTTPD ist weiter unten jeder Abschnitt des Kompilierungs- und Installationsvorganges genauer beschrieben.
Folgende Anforderungen gelten für die Erstellung des Apache:
PATH
wesentliche Generierungswerkzeuge wie make
enthalten.ntpdate
oder xntpd
verwendet, die auf dem Network Time Protocol (NTP) basieren. Nähere Informationen über NTP Software und öffentliche Zeitserver finden Sie in der Usenet Newsgroup comp.protocols.time.ntp und auf der NTP Homepage.configure
'-Skript gefunden werden kann, macht das jedoch nichts. Selbstverständlich können Sie den Apache 2.0 auch so generieren und installieren. Lediglich diese Pflegeskripte können dann nicht verwendet werden. Wenn Sie mehrere Perl Interpreter installiert haben (vielleicht Perl 4 durch Ihren Händler und Perl 5 durch Sie selbst), dann ist die Verwendung der --with-perl
Option (siehe unten) empfehlenswert, um sicherzustellen, dass der richtige Interpreter von ./configure
ausgewählt wird.Der Apache kann von der Apache HTTP Server Downloadseite heruntergeladen werden, auf der verschiedene Spiegelserver angegeben sind. Sie finden hier die jeweils aktuelle stabile Version.
Nach dem Download, insbesondere, wenn ein Mirror benutzt wurde, ist es wichtig, zu prüfen, dass Sie eine vollständige, nicht modifizierte Version des Apache HTTP Servers erhalten haben. Dies kann durch Prüfen des heruntergeladenen Tarballs gegen die PGP-Signatur erreicht werden. Dies ist wiederum ein Zweischrittverfahren. Zuerst müssen Sie die KEYS
-Datei ebenfalls von der Apache Distributionsseite beziehen. (Um sicherzustellen, dass die KEYS
-Datei selbst nicht verändert wurde, ist es sinnvoll, eine Datei aus einer früheren Distribution des Apache zu verwenden, oder den Schlüssel von einem öffentlichen Schlüsselserver zu importieren.) Die Schlüssel werden mit einem der folgenden Befehle (abhängig von Ihrer PGP Version) zu Ihrem persönlichen Schlüsselring hinzugefügt:
$ pgp < KEYS
oder
$ gpg --import KEYS
Der nächste Schritt ist das Testen des Tarballs gegen die PGP-Signatur, die immer von der Apache Originalseite bezogen werden sollte. Den Link zur Signaturdatei finden Sie hinter dem jeweiligen Download-Link oder im entsprechenden Verzeichnis auf der Apache-Distributionsseite Sie hat den gleichen Dateinamen wie der Tarball, aber zusätzlich die Endung .asc
. Nun können Sie die Distribution mit einem der folgenden Befehle (wiederum abhängig von Ihrer PGP Version) prüfen:
$ pgp httpd-2_0_NN.tar.gz.asc
oder
$ gpg --verify httpd-2_0_NN.tar.gz.asc
Sie sollten eine Meldung wie
Good signature from user "Martin Kraemer <[email protected]>".
erhalten.
Abhängig von den Vertrauensbeziehungen in Ihrem Schlüsselring können Sie auch eine Meldung erhalten, die besagt, dass die Beziehungen zwischen dem Schlüssel und dem Unterzeichner des Schlüssels nicht verifiziert werden können. Solange Sie der Authentizität der KEYS
-Datei vertrauen, ist dies kein Problem.
Das Auspacken des Quellcodes aus dem Apache HTTPD Tarball besteht aus einem simplen Dekomprimieren und danach "Ent-tarren":
$ gzip -d httpd-2_1_NN.tar.gz
$ tar xvf httpd-2_1_NN.tar
Dies erstellt unterhalb des aktuellen Verzeichnisses ein neues Verzeichnis, das den Quellcode für die Distribution enthält. Sie sollten mit cd
in dieses Verzeichnis wechseln, bevor Sie mit der Kompilierung des Servers weitermachen.
Der nächste Schritt ist die Konfiguration des Apache-Codebaumes für Ihre spezielle Plattform und Ihre persönlichen Bedürfnisse. Dies wird mit dem Skript configure
durchgeführt, das im Wurzelverzeichnis der Distribution enthalten ist. (Entwickler, welche die CVS Version des Apache-Codebaumes herunterladen, müssen autoconf
und libtool
installiert haben und müssen buildconf
ausführen, bevor sie mit den nächsten Schritten fortfahren können. Dies wird bei offiziellen Releases nicht notwendig sein.)
Um den Codebaum mit den Standardeinstellungen zu konfigurieren, geben Sie einfach ./configure
ein. Zur Änderung dieser Voreinstellungen akzeptiert configure
eine Reihe von Variablen und Kommandozeilenoptionen. Umgebungsvariablen werden üblicherweise vor den ./configure
-Befehl gesetzt, während andere Optionen danach gesetzt werden. Die wichtigste Option hierbei ist der vorangestellte Ablageort, unter dem der Apache später installiert wird, denn der Apache muss auf diesen Ablageort eingestellt werden, um korrekt zu arbeiten. Es gibt jedoch noch eine Reihe weiterer Optionen für Ihre persönlichen Wünsche.
Um einen kurzen Eindruck zu gewinnen, welche Möglichkeiten Sie haben, folgt hier ein typisches Beispiel, das den Apache mit einem speziellen Compiler und Compilerflags für das Installationsverzeichnis /sk/pkg/apache
kompiliert, sowie die beiden zusätzlichen Module mod_rewrite
und mod_speling
für späteres Laden durch den DSO-Mechanismus:
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared
Wenn configure
startet, benötigt es mehrere Minuten, um die Verfügbarkeit von Features auf Ihrem System zu prüfen und ein Makefile zu generieren, das später zur Kompilierung des Servers verwendet wird.
Die einfachste Art und Weise, alle Konfigurationsflags für den Apache herauszufinden, ist, ./configure --help
aufzurufen. Hier folgt eine kurze Beschreibung der meisten Argumente und Umgebungsvariablen.
Der autoconf
-Generierungsvorgang verwendet verschiedene Umgebungsvariablen für die Konfiguration der Generierungsumgebung. Im allgemeinen verändern diese Variablen die Methode, die benutzt wird, um den Apache zu erstellen, nicht aber die letztendlichen Features des Servers. Diese Variablen können vor dem Aufruf von configure
im Environment gesetzt werden, doch es ist üblicherweise einfacher, sie in der configure
-Befehlszeile, wie im obigen Beispiel gezeigt, anzugeben.
CC=...
CPPFLAGS=...
CFLAGS=...
LDFLAGS=...
LIBS=...
-L
" und "-l
" Optionen), die an den Linker durchgereicht werden.INCLUDES=...
-IVerzeichnis
").TARGET=...
[Default: apache
]NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
NOTEST
. Diese Variablen werden jedoch nur auf den Generierungsprozess angewendet, nachdem autoconf seine Featuretests durchgeführt hat. Dies erlaubt die Einbeziehung von Flags, die während des Featuretests Probleme bereiten würden, aber für die endgültige Kompilierung verwendet werden müssen.SHLIB_PATH=...
--help
--quiet
checking...
" Nachrichten.--verbose
Gegenwärtig existieren zwei Möglichkeiten, die Pfade zu konfigurieren, in denen der Apache seine Dateien installiert. Bei der ersten können Sie ein Verzeichnis angeben und den Apache veranlassen, sich selbst unterhalb dieses Verzeichnisses in seinen voreingestellten Ablageorten zu installieren.
--prefix=PREFIX
[Default: /usr/local/apache2
]Es ist möglich, anzugeben, dass Architektur-abhängige Dateien in einem anderen Verzeichnis abgelegt werden sollen.
--exec-prefix=EPREFIX
[Default: PREFIX
]Die zweite und flexiblere Weise, den Installationspfad für den Apache einzustellen, ist die Verwendung der Datei config.layout
. Wenn Sie diese Methode benutzen, können Sie den Ablageort für jeden Dateityp innerhalb der Apache-Installation separat angeben. Die Datei config.layout
enthält verschiedene Konfigurationsbeispiele. Sie können auch anhand der Beispiele Ihre eigene individuelle Konfiguration erstellen. Die verschiedenen Layouts in dieser Datei sind gruppiert in <Layout FOO>...</Layout>
-Abschnitte und werden mit Namen wie FOO
bezeichnet.
--enable-layout=LAYOUT
config.layout
, um die Installationspfade genau anzugeben.Der Apache ist ein modularer Server. Nur die grundlegendste Funktionalität ist im Kernserver enthalten. Erweiternde Features stehen in verschiedenen Modulen bereit. Während des Konfigurationsprozesses müssen Sie auswählen, welche Module für die Verwendung mit Ihrem Server kompiliert werden sollen. Eine Liste von Modulen ist in dieser Dokumentation enthalten. Module mit dem Status "Base" sind standardmäßig enthalten und müssen ausdrücklich deaktiviert werden (z.B. mod_userdir
), wenn Sie sie nicht verwenden möchten. Module mit einem anderen Status (z.B. mod_expires
) müssen ausdrücklich aktiviert werden, wenn Sie sie verwenden möchten.
Es gibt zwei Möglichkeiten, Module zu kompilieren und mit dem Apache zu benutzen. Module können statisch kompiliert werden, was bedeutet, dass sie permanent in dem Apache Binary eingebunden sind. Wenn Ihr Betriebssystem Dynamic Shared Objects (DSOs; Anm. d. Übersetzers: dynamisch eingebundene Bibliotheken) unterstützt und autoconf
diese Unterstützung erkennen kann, dann können Module alternativ dynamisch kompiliert werden. DSO-Module werden von der Apache Binary getrennt gespeichert und können vom Server unter Verwendung der Direktiven zur Laufzeitkonfiguration, die von mod_so
bereitgestellt werden, ein- oder ausgeschlossen werden. mod_so wird automatisch dem Server hinzugefügt, sobald ein dynamisches Modul in die Kompilierung einbezogen wird. Wenn Sie Ihren Server für das Laden von DSOs tauglich machen wollen, ohne jedoch ein dynamisches Modul zu kompilieren, können Sie dies explizit mit --enable-so
angeben.
--enable-MODULE[=shared]
=shared
hinzu.--disable-MODULE
--enable-modules=MODUL-LISTE
--enable-mods-shared=MODUL-LISTE
Die MODUL-LISTE in den Optionen --enable-modules
und --enable-mods-shared
ist üblicherweise eine durch Leerzeichen getrennte Liste von Modul-Bezeichnern. Zum Beispiel können zum Aktivieren von mod_dav
und mod_info
beide benutzt werden, sowohl
./configure --enable-dav --enable-info
oder äquivalent
./configure --enable-modules="dav info"
Zusätzlich können die speziellen Schlüsselwörter all
oder most
benutzt werden, um alle oder die meisten der Module in einem Schritt hinzuzufügen. Sie können Module, die Sie nicht benutzen möchten, mit der Option --disable-MODUL
entfernen. Um beispielsweise alle Module mit Ausnahme von mod_info
als DSOs einzubinden, können Sie
./configure --enable-mods-shared=all --disable-info
verwenden.
Zusätzlich zum Standard-Set von Modulen fügt der Apache 2.0 auch eine Auswahl von Multi-Processing Modulen (MPMs) ein. Ein, und nur ein einziges, MPM muss in den Kompilierungsprozess eingebunden werden. Das voreingestellte MPM jeder Plattform ist in der MPM Dokumentation aufgeführt, kann jedoch mit der configure
-Kommandozeile überschrieben werden.
--with-mpm=NAME
Um ein MPM mit dem Namen mpm_name zu aktivieren, verwenden Sie
./configure --with-mpm=mpm_name
Verschiedene Apache-Features, darunter mod_auth_dbm
und DBM RewriteMap
aus mod_rewrite
, verwenden einfache Schlüssel/Wert-Datenbanken für eine schnelle Suche nach Informationen. Der Apache-Quellcode enthält SDBM, so dass diese Datenbank immer verfügbar ist. Wenn Sie einen anderen Datenbanktyp benutzen möchten, können Sie die folgenden configure
-Optionen dazu verwenden:
--with-gdbm[=Pfad]
--with-ndbm[=Pfad]
--with-berkeley-db[=Pfad]
/lib
und Pfad/include
nach relevanten Dateien zu suchen. Letztlich kann Pfad auch die speziellen Include- und Bibliothek-Pfade durch Doppelpunkt getrennt auflisten.Der Apache enthält ein Hilfsprogramm namens suexec, das zur Isolation benutzereigener CGI-Programme verwendet werden kann. Wenn suexec jedoch unsachgemäß konfiguriert wurde, kann es schwere Sicherheitsprobleme verursachen. Deshalb sollten Sie die suexec Dokumentation sorgfältig lesen und beachten, bevor Sie dieses Feature implementieren.
Nun können Sie die verschiedenen Teile, die das Apache-Paket bilden, einfach durch Ausführen des folgenden Befehls erstellen:
$ make
Seien Sie hierbei bitte geduldig, denn eine Basiskonfiguration benötigt ungefähr 3 Minuten auf einem Pentium III/Linux 2.2. System. Dies kann aber abhängig von Ihrer Hardware und der Anzahl der Module, die Sie aktiviert haben, sehr stark variieren.
Nun endlich installieren Sie das Package unter dem konfigurierten Installations-PREFIX (siehe oben: Option --prefix
durch Aufrufen von:
$ make install
Wenn Sie upgraden, wird die Installation Ihre Konfigurationsdateien oder Dokumente nicht überschrieben.
Als nächstes können Sie Ihren Apache HTTP Server anpassen, indem Sie die Konfigurationsdateien unterhalb von PREFIX/conf/
editieren.
$ vi PREFIX/conf/httpd.conf
Werfen Sie auch einen Blick in das Apache-Handbuch unter docs/manual/. Die aktuellste Version dieses Handbuchs sowie eine komplette Referenz der verfügbaren Konfigurationsanweisungen finden Sie unter http://httpd.apache.org/docs-2.0/.
Sie können nun Ihren Apache HTTP Server starten, indem Sie einfach
$ PREFIX/bin/apachectl start
ausführen.
Danach sollten Sie Ihr erstes Dokument unter dem URL http://localhost/
anfordern können. Die Webseite, die Sie sehen, ist im DocumentRoot
abgelegt, welches üblicherweise PREFIX/htdocs/
ist. Den Server stoppen Sie wieder durch Ausführen von:
$ PREFIX/bin/apachectl stop