====== Apache aus den Quellen kompilieren ======
Als Erstes alle Sources (%%httpd-2.4.27.tar.gz%%, %%apr-1.6.2.tar.gz%%, %%apr-iconv-1.2.1.tar.gz%%, %%apr-util-1.6.0.tar.gz%%) inklusive Patches und Hashes unter "${HOME}/download/Apache_HTTP_Server_2.4.27/Source" untergebracht.
Nach der Prüfung der Kontrollsummen (%%*.md5%%, %%*.sha1%%, %%*.sha256%%, %%*.asc%%) die %%.gz%%-Archive dort entpackt:
userid@rhel:/users/userid/download/Apache_HTTP_Server_2.4.27/Source> ls -l
total 68076
-rwxr-x---. 1 userid groupid 5826560 Jun 9 14:56 apr-1.6.2.tar
-rwxr-x---. 1 userid groupid 1071074 Oct 5 11:24 apr-1.6.2.tar.gz
-rwxr-x---. 1 userid groupid 8683520 Nov 15 2007 apr-iconv-1.2.1.tar
-rwxr-x---. 1 userid groupid 1233989 Oct 5 11:24 apr-iconv-1.2.1.tar.gz
drwxr-x---. 2 userid groupid 4096 Oct 5 11:28 apr-patches
-rwxr-x---. 1 userid groupid 3481600 May 4 01:20 apr-util-1.6.0.tar
-rwxr-x---. 1 userid groupid 565507 Oct 5 11:24 apr-util-1.6.0.tar.gz
drwxr-x---. 2 userid groupid 4096 Oct 2 17:52 httpd-2.4.27-patches
-rwxr-x---. 1 userid groupid 39874560 Oct 2 17:22 httpd-2.4.27.tar
-rwxr-x---. 1 userid groupid 8603417 Oct 5 10:59 httpd-2.4.27.tar.gz
-rwxr-x---. 1 userid groupid 793 Oct 2 17:24 httpd-2.4.27.tar.gz.asc
-rwxr-x---. 1 userid groupid 54 Oct 2 17:24 httpd-2.4.27.tar.gz.md5
-rwxr-x---. 1 userid groupid 62 Oct 2 17:24 httpd-2.4.27.tar.gz.sha1
-rwxr-x---. 1 userid groupid 86 Oct 2 17:24 httpd-2.4.27.tar.gz.sha256
userid@rhel:/users/userid/download/Apache_HTTP_Server_2.4.27/Source>
Folgende Abhängigkeiten musste ich nachinstalliert (sonst konnte ich nicht kompilieren):
* expat-devel
* pcre-devel
**%%httpd-2.4.27.tar%%** ins Verzeichnis **%%apache%%** (unterhalb von %%${HOME}%%) verschoben und dort entpackt.
Folgende %%.tar%%-Pakete samt Patches ins Verzeichnis **%%srclib%%** (unterhalb von %%${HOME}/apache/httpd-2.4.27%%) verschoben und dort entpackt:
* apr
* apr-iconf
* apr-util
Zuerst alle Patches eingespielt, danach kompiliert in der Reihenfolge:
* apr
* apr-iconf
* apr-util
* httpd
Hier der Ablauf:
cd ${HOME}/apache/httpd-2.4.27
export PREFIX_APACHE=${PWD}
export PATH_SRC_APACHE=${PREFIX_APACHE}
export PATH_SRC_APR=${PATH_SRC_APACHE}/srclib/apr-1.6.2
export PATH_SRC_APR_UTIL=${PATH_SRC_APACHE}/srclib/apr-util-1.6.0
export PATH_SRC_APR_ICONV=${PATH_SRC_APACHE}/srclib/apr-iconv-1.2.1
export LIB=${PATH_SRC_APR}/lib:${PATH_SRC_APR_UTIL}/lib:${PATH_SRC_APR_ICONV}/lib:${PREFIX_APACHE}/lib
export LIBPATH=${LIB}
export LIBRARY_PATH=${LIB}
export INCLUDE=${PATH_SRC_APACHE}/include:${PATH_SRC_APR_ICONV}/include:${PATH_SRC_APR}/include:${PATH_SRC_APR_UTIL}/include
cd srclib
cd apr-1.6.2
./configure --prefix=${PREFIX_APACHE}
make
make install
cd ..
cd apr-iconv-1.2.1
./configure --prefix=${PREFIX_APACHE} --with-apr=${PATH_SRC_APR}
make
make install
cd ..
cd apr-util-1.6.0
./configure --prefix=${PREFIX_APACHE} --with-apr=${PATH_SRC_APR}
make
make install
cd ..
cd ..
./configure --prefix=${PREFIX_APACHE} --enable-so --enable-modules="most" --enable-debugger-mode --with-apr=${PATH_SRC_APR} --with-apr-util=${PATH_SRC_APR_UTIL}
make
make install
Dabei werden einige Meldungen ausgegeben, unter anderem:
Während "make install" von "apr-1.6.2":
libtool: warning: remember to run 'libtool --finish /usr/local/apr/lib'
Während "make" von "apr-iconv-1.2.1":
iconv_ccs.c: In function 'apr_iconv_ccs_event':
iconv_ccs.c:47:16: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]
mod->im_data = mod->im_desc->imd_data;
^
Während "make install" von "apr-util-1.6.0":
libtool: warning: relinking 'libaprutil-1.la'
Ich habe diese Meldungen zunächst ignoriert.
:!: Um ein einzelnes MPM auszuwählen, das statisch kompiliert werden soll, wird die Option **--with-mpm=Name** verwendet. Für UNIX stehen folgende Varianten zur Auswahl:
* %%prefork%% – für jede Client-Verbindung wird ein eigener Prozess verwendet; es werden stets einige Prozesse auf Vorrat geforkt.
* %%worker%% – eine kleine Anzahl von Prozessen verwaltet für jede Client-Verbindung einen Thread; dieses Modell ist speicherschonender als prefork.
* %%event%% – eine erweiterte Variante von worker, bei der Keepalive-Verbindungen nicht permanent einen Thread blockieren.
Um MPMs (in Apache 2.4) dynamisch laden zu können, muss die Option **--enable-mpms-shared=Liste** verwendet werden. Beispiel: --enable-mpms-shared="prefork worker"
Jetzt den neuen Apache starten (vorher nur noch die **conf/httpd.conf** anpassen):
userid@rhel:/users/userid/apache/httpd-2.4.27> bin/httpd -k start
userid@rhel:/users/userid/apache/httpd-2.4.27>
...oder beenden:
userid@rhel:/users/userid/apache/httpd-2.4.27> bin/httpd -k stop
userid@rhel:/users/userid/apache/httpd-2.4.27>
...oder neu starten:
userid@rhel:/users/userid/apache/httpd-2.4.27> bin/httpd -k restart
userid@rhel:/users/userid/apache/httpd-2.4.27>
Zur Kontrolle im Web-Browser auf die URL [[http://rhel/]] (bzw. den host-Namen "rhel" durch einen korrekten DNS-Namen ersetzen) gehen, als Bestätigung soll der Browser einen einzigen String **It works!** zeigen.
Konfiguration von [[EDV:Soft:Server:Web-Server#Apache]].
Parameter, die beim Start angegeben werden können: [[https://httpd.apache.org/docs/2.4/programs/httpd.html]]\\
Für Entwicklungs- und Debug-Zwecke sind davon folgende besonders interessant:
|-f config |Ein anderes KonfigurationsFile anstelle von "conf/httpd.conf" nutzen. Der Pfad soll relativ zum **ServerRoot** angegeben werden. |
|-e level |Setzt LogLevel während des StartUps. |
|-E file |Schreibt Fehlermeldungen in das File **file** während des StartUps. |
|-X |Startet Apache im **Debug**-Modus. Es wird **ein einziger Worker** gestartet und der Server wird sich von der Konsole nicht verabschieden. |
----
Stand: 26.07.2018
EOF