Januar 22, 2022

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.