====== 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