Kompilierung und Installation von Apache HTTPD aus dem Quellcode
Die meisten Linux-Distributionen bieten eine bestimmte Version von Apache HTTPD-Binärpaketen aus ihren Haupt-Repositorys an. Der Nachteil ist, dass diese Version oft erst mit der Hauptversion der nächsten Distribution aktualisiert wird.
Um die Vorteile von Funktionen, die nur von einer neueren Version zu nehmen oder eine benutzerdefinierte Binärdateien zu erstellen, Kompilierung und Installation von Apache HTTPD aus dem Quellcode ist einfach.
Dieses Tutorial beschreibt die Kompilierungs- und Installationsschritte von Apache HTTPD unter RPM-basierten (Fedora, CentOS, …) und Deb-basierten (Debian, Ubuntu, …) Linux-Distributionen. Die neueste verfügbare Version (2.4.x) verwendet wird.
Apache HTTPD Quellcode
Das Verzeichnis /usr/local/src/ wird im Allgemeinen für Build-bezogene Aktivitäten verwendet (erfordert Root-Rechte). Es wird in diesem Tutorial als Build-Verzeichnis verwendet.
Der Quellcode von Apache HTTPD ist als TAR-Datei verfügbar unter: http://httpd.apache.org/download.cgi.
Im Folgenden finden Sie die Schritte zum Herunterladen und Extrahieren des Quellcodes im Build-Verzeichnis (Die Versionsnummern können nach Bedarf geändert werden):
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzls -lcd httpd-2.4.43pwdls
Installation von Build-Abhängigkeiten
Die Kompilierung von Apache HTTPD erfordert die Installation der Entwicklungstools (C-Compiler, Linker, …) und einiger zusätzlicher Bibliotheken.
Die benötigten Bibliotheken sind:
- apr
- apr-util
- openssl
- expat
- prce
Die meisten Linux-Distributionen stellen diese Bibliotheken aus den Haupt-Repositorys bereit. Wenn das System eine alte Version einer Bibliothek enthält, kann der Quellcode separat heruntergeladen und kompiliert werden. In einem späteren Abschnitt wird beschrieben, wie Sie den Quellcode der Bibliotheken apr und apr-util als Teil des Apache HTTPD-Kompilierungsprozesses herunterladen und erstellen.
Auf RPM-basierten (Fedora, Centos, …) Linux-Distributionen können die Bibliotheken-Entwicklungspakete mit den folgenden Befehlen installiert werden:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
Auf Deb-basierten (Debian, Ubuntu, …) Linux-Distributionen können die Bibliotheken Entwicklungspakete mit dem folgenden Befehl installiert werden:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
Build-Konfigurationsoptionen
Nach dem Herunterladen des Apache HTTPD-Quellcodes und der Installation der Build-Abhängigkeiten können die Build-Konfigurationsoptionen festgelegt werden (Compiler-Optionen, Installationsverzeichnis, Module aktivieren / deaktivieren, …).
Da Apache HTTPD das Autoconf-Build-System verwendet, stellt es ein Skript namens configure bereit, um die Build-Konfigurationsoptionen festzulegen und die Makefile-Dateien zu generieren.
Sofern keine Änderungen erforderlich sind, können die Standardwerte beibehalten werden. Standardmäßig werden die meisten Module kompiliert und das Installationsverzeichnis auf /usr/local/apache2/ festgelegt.
Um die Standardwerte zu verwenden, wird das Skript configure ohne Argumente aufgerufen:
cd /usr/local/src/httpd-2.4.43./configure
Um alle möglichen Optionen aufzulisten, wird das Skript configure mit dem Argument –help aufgerufen:
cd /usr/local/src/httpd-2.4.43./configure --help
In den folgenden Abschnitten werden einige nützliche Build-Konfigurationsoptionen vorgestellt.
Installationsverzeichnis: -Präfixoption
Das Installationsverzeichnis unterscheidet sich vom Build-Verzeichnis. Hier werden die resultierenden Binärdateien und Konfigurationsdateien abgelegt, sobald die Kompilierung erfolgreich ist und der Befehl make install ausgeführt wird (siehe Abschnitt Installation).
Die Option -prefix wird verwendet, um einen anderen Installationspfad auszuwählen. Diese Option ist nützlich, wenn wir verschiedene Versionen von Apache HTTPD erstellen und installieren müssen.
Das folgende Beispiel zeigt, wie Sie das Installationsverzeichnis auf /opt/apache setzen-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
So aktivieren / deaktivieren Sie ein Modul: -enable-MODULE / -disable-MODULE
Die meisten Apache-HTTPD-Module werden standardmäßig als dynamische Bibliotheken erstellt. Die Option -enable-MODULE kann verwendet werden, um ein Modul zu aktivieren oder seinen Buildtyp von dynamisch in statisch zu ändern. Die Option -disable-MODULE wird verwendet, um die Erstellung eines Moduls zu deaktivieren. MODUL wird durch den tatsächlichen Modulnamen ersetzt.
Das folgende Beispiel zeigt, wie das Modul Rewrite als statische Bibliothek erstellt wird:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
Compileroptionen
Bei Bedarf werden Compileroptionen als Umgebungsvariablen an das Konfigurationsskript übergeben.
Die Variablen sind in der folgenden Tabelle zusammengefasst:
CC | Wird verwendet, um den C-Compiler-Befehl auszuwählen. Es ist standardmäßig cc (der GNU-Compiler), aber Clang ist auch eine Option |
CFLAGS | Wird verwendet, um C-Compiler-Flags zu übergeben |
LDFLAGS | Wird verwendet, um Linker-Flags zu übergeben |
LIBS | Wird verwendet, um Bibliotheken an den Linker zu übergeben |
CPPFLAGS | Wird verwendet, um (Objective) C / C ++ – Präprozessor-Flags zu übergeben |
CPP | Wird verwendet, um C-Präprozessorparameter zu übergeben |
Das folgende Beispiel zeigt, wie ein Optimierungsflag an den C-Compiler übergeben wird:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
Kompilierung und Installation
Nach der Ausführung des Skripts configure zum Festlegen der Build-Konfigurationsoptionen und zum Generieren der Makefile-Dateien wird der Kompilierungsprozess mit dem Befehl make gestartet.
Das folgende Beispiel zeigt, wie der Kompilierungsprozess gestartet wird:
cd /usr/local/src/httpd-2.4.43./configuremake
Nach erfolgreicher Kompilierung kann die Installation in das Installationsverzeichnis mit folgendem Befehl gestartet werden:
make install
Die Installation legt alle erforderlichen Binärdateien und Konfigurationsdateien im Installationsverzeichnis /usr/local/apache2 ab. Die ausführbaren Dateien befinden sich in /usr/local/apache2/bin/. Die Konfigurationsdateien befinden sich in /usr/local/apache2/conf/.
So listen Sie die kompilierten Module auf
Die kompilierten Module können mit dem folgenden Befehl aufgelistet werden:
/usr/local/apache2/bin/httpd -M
Starten und stoppen Sie den Dienst
Der neue Build von Apache HTTPD kann mit dem Befehl /usr/local/apache2/bin/apachectl gestartet werden.
Um den Dienst zu starten:
/usr/local/apache2/bin/apachectl start
So beenden Sie den Dienst:
/usr/local/apache2/bin/apachectl stop
Erstellen von apr und apr-util aus dem Quellcode
Die erforderlichen Bibliotheken für die Kompilierung von Apache HTTPD können aus den Haupt-Repositorys der Linux-Distribution installiert werden. In diesem Fall kann der Quellcode der Bibliothek auch zusammen mit Apache HTTPD heruntergeladen und kompiliert werden.
Die Bibliotheken apr und apr-util sind zwei der Kernbibliotheken, auf die Apache HTTPD für seine interne Arbeit angewiesen ist, um die Portabilität über viele Betriebssysteme hinweg sicherzustellen.
Der Apache HTTPD-Quellcode enthält ein Unterverzeichnis namens srclib. Es wird verwendet, um die Bibliotheken zu speichern, die vom Server erstellt und verwendet werden können, anstatt die Systembibliotheken zu verwenden.
Um den Quellcode der apr- und apr-util-Bibliotheken als Teil des Kompilierungsprozesses von Apache HTTPD zu integrieren, wird ihr Quellcode heruntergeladen und in das Unterverzeichnis srclib extrahiert.
Das folgende Beispiel zeigt, wie Sie den Quellcode der beiden Bibliotheken apr und apr-util herunterladen und extrahieren. Wenn die TAR-Datei extrahiert wird, sollte die Versionsnummer entfernt werden.Sie können von der offiziellen Website heruntergeladen werden: https://apr.apache.org/download.cgi.
cd /usr/local/src/httpd-2.4.43/srclib/wget https://downloads.apache.org/apr/apr-1.7.0.tar.gztar -xzf apr-1.7.0.tar.gzmv apr-1.7.0 aprlswget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gztar -xzf apr-util-1.6.1.tar.gzmv apr-util-1.6.1 apr-utillscd /usr/local/src/httpd-2.4.43./configuremakemake install
So aktualisieren Sie von Version 2.x bis 2.y
Die Aktualisierung eines Apache HTTPD, der aus dem Quellcode installiert wird, ist möglich. Es wird empfohlen, für jede Version ein separates Installationsverzeichnis zu verwenden und das Konfigurationsunterverzeichnis von der alten Version in das neue Verzeichnis zu kopieren.
Das folgende Beispiel zeigt, wie eine bereits installierte Version 2.4.0, die in /usr/local/apache-2.4.0 installiert ist, auf eine neuere Version 2.4.43 aktualisiert wird, die in /usr/local/apache-2.4.43 installiert wird.
Zum Herunterladen, Kompilieren und Installieren der neuen Version:
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzcd httpd-2.4.43./configure --prefix=/usr/local/apache-2.4.43makemake install
Stoppen Sie den Dienst von der alten Version:
/usr/local/apache-2.4.0/bin/apachectl stop
Kopieren Sie das Konfigurationsverzeichnis aus dem Verzeichnis der alten Version in das Verzeichnis der neuen Version:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
Starten Sie den Dienst ab der neuen Version:
/usr/local/apache-2.4.43/bin/apachectl start