Kompilieren eines Apache Webservers


Kompilieren eines Apache Webservers

Title: Apache Kompilieren
Author: Christian Folini
Tutorial Nr: 1
Letztes Update: 02.12.2019
Erscheinungsdatum: 21.10.2010
Schwierigkeit: Leicht
Dauer: 1/2h

Was machen wir?

Wir kompilieren einen Apache Webserver für ein Testsystem.

Es gibt auch einen Video Walkthrough für dieses Tutorial.

Warum tun wir das?

Im professionellen Einsatz des Webservers geschieht es regelmässig, dass besondere Bedürfnisse (Security, zusätzliche Debug-Messages, spezielle Funktionalität dank eines neuen Patches etc.) einen zwingen, sich von den Distributionspaketen zu verabschieden und rasch eigene Binaries herzustellen. In diesem Fall ist es wichtig, dass die Infrastruktur bereit steht und man erste Erfahrungen mit dem Kompilieren und Produktivschalten der eigenen Binaries mitbringt. Zudem lässt sich in einem Laborsetup leichter mit selbst kompiliertem Apache arbeiten, was auch beim Debuggen von Vorteil ist.

Schritt 1: Bereitmachen des Verzeichnisbaumes für den Sourcecode

Prinzipiell spielt es keine grosse Rolle, wo der Sourcecode liegt. Das Folgende ist ein Vorschlag, der sich am File Hierarchy Standard orientiert. Der FHS definiert den Pfadbaum eines Unix-Systems; also die Ablagestruktur für sämtliche Dateien. Das whoami auf der zweiten Zeile ergibt als Resultat übrigens unseren User und nicht etwas root (trotz sudo).

$> sudo mkdir /usr/src/apache
$> sudo chown `whoami` /usr/src/apache
$> cd /usr/src/apache

Schritt 2: Erfüllen der Vorbedingungen apr und apr-util

Seit dem Erscheinen von Apache 2.4 wird der Apache Webserver ohne zwei wichtige Bibliotheken ausgeliefert, die vormals Teil der Distribution waren. Wir müssen nun apr und apr-util selbst installieren, bevor wir Apache kompilieren können. Bei apr handelt es sich um die Apache Portable Runtime Bibliothek. Sie erweitert den normalen Satz an C-Bibliotheken mit weiteren Funktionen, die von Server-Software typischerweise benötigt wird. Darunter fallen etwa Funktionen zur Verwaltung von Hash-Tabellen oder Listen. Diese Bibliothek wird nicht nur vom Webserver Apache, sondern auch von anderen Projekten der Apache Software Foundation verwendet, weshalb sie aus dem Source-Code von Apache herausgelöst wurde. Wie apr ist apr-util Teil der Portable Runtime Libraries, welche durch apr-util ergänzt werden.

Beginnen wir mit apr und laden das Paket herunter:

$> wget https://www-eu.apache.org/dist/apr/apr-1.7.0.tar.bz2

Nun laden wir die Checksum der Sourcecodedatei direkt von Apache herunter. Leider bietet www.apache.org nur eine md5-Checksum für apr an. Wir testen sie dennoch. Sicherheitshalber verwenden wir beim Herunterladen eine gesicherte Verbindung. Ohne https macht diese Überprüfung keinen grossen Sinn. Beide Files, der Sourcecode und die kleine Prüfsummendatei, sollten nebeneinander in /usr/src/apache liegen. Dann lässt sich die Prüfsumme testen:

$> wget https://www.apache.org/dist/apr/apr-1.7.0.tar.bz2.sha256
$> sha256sum --check apr-1.7.0.tar.bz2.sha256
apr-1.7.0.tar.bz2: OK

Das Überprüfen sollte keine Probleme machen, OK. Wir können also mit dem Entpacken, Vorkonfigurieren und dem Kompilieren der apr fortfahren.

$> tar -xvjf apr-1.7.0.tar.bz2
$> cd apr-1.7.0
$> ./configure --prefix=/usr/local/apr/

Wir begeben uns nach dem Entpacken in das neue Verzeichnis mit dem Sourcecode und starten configure. Damit konfigurieren wir den Compiler. Wir geben den Installationspfad vor und configure sucht sich dann eine Vielzahl von Informationen und Einstellungen zu unserem System selbst zusammen. Bisweilen kommt es zu einer Warnung zum Thema libtoolT. Dies kann ignoriert werden. Der Configure-Befehl beschwert sich oft über fehlende Komponenten. Ist klar: Ohne funktionierenden Compiler können wir nicht kompilieren und das Configure hat die Aufgabe nachzusehen, ob alles gut beisammen ist.

Sachen, die typischerweise fehlen, sind folgende:

  • build-essential
  • binutils
  • gcc

Und wenn wir schon dabei sind, nützen wir doch die Gelegenheit und installieren sämtliche weitere Pakete, welche wir in diesem und den folgenden Tutorials benötigen:

  • gawk
  • libexpat1-dev
  • libpcre3-dev
  • libssl-dev
  • libxml2-dev
  • libyajl-dev
  • nikto
  • ruby
  • ssl-cert
  • zlibc
  • zlib1g-dev

Das sind die Paket-Namen auf einer debian-basierten Distribution. Andernorts mögen die Pakete anders heissen. Das Fehlen lässt sich leicht beheben, indem man sie mit den Hilfsmitteln der eigenen Distribution nachinstalliert. Danach configure neu ausführen, eventuell nochmals etwas nachinstallieren und irgendwann läuft das Skript dann erfolgreich durch (einzelne Warnungen mitten drin spielen bei configure übrigens keine Rolle. Wichtig ist, dass das Skript nicht mitten drin abbricht).

Wenn dies problemlos durchläuft, wovon wir ausgehen, ist es Zeit für das Kompilieren.

$> make

Das dauert einen Moment und wir erhalten die kompilierte apr, die wir umgehend installieren.

$> sudo make install

Wenn dies erfolgreich geschehen ist, verfahren wir mit den apr-util analog.

$> cd /usr/src/apache
$> wget https://www-eu.apache.org/dist/apr/apr-util-1.6.1.tar.bz2
$> wget https://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2.sha256
$> sha256sum --check apr-util-1.6.1.tar.bz2.sha256
apr-util-1.6.1.tar.bz2: OK
$> tar -xvjf apr-util-1.6.1.tar.bz2
$> cd apr-util-1.6.1
$> ./configure --prefix=/usr/local/apr/ --with-apr=/usr/local/apr/
$> make
$> sudo make install

Wenn das in beiden Fällen geklappt hat, sind wir bereit für den Webserver selbst.

Schritt 3: Herunterladen des Sourcecodes und Überprüfen der Checksum

Jetzt laden wir den Programmcode vom Netz herunter. Man kann das mit dem Browser direkt von Apache tun, oder man schont die Bandbreite des Apache Projektes und zieht ihn mittels wget von einem Mirror.

$> cd /usr/src/apache
$> wget https://www-eu.apache.org/dist//httpd/httpd-2.4.41.tar.bz2

Der gepackte Sourcecode hat etwa eine Grösse von MB.

Nun laden wir die Checksum der Sourcecodedatei direkt von Apache herunter. Dankenswerterweise steht sie immerhin als sha1-Checksum zur Verfügung. Sicherheitshalber verwenden wir dazu wieder eine gesicherte Verbindung. Ohne https macht diese Überprüfung keinen Sinn.

$> wget https://www.apache.org/dist/httpd/httpd-2.4.41.tar.bz2.sha256
$> sha256sum --check httpd-2.4.41.tar.bz2.sha256
httpd-2.4.41.tar.bz2: OK

Schritt 4: Entpacken und Compiler konfigurieren

Nach der Überprüfung können wir das Paket entpacken.

$> tar -xvjf httpd-2.4.41.tar.bz2

Das ergibt etwa 38MB.

Wir gehen nun in das Verzeichnis und konfigurieren den Compiler mit unseren Eingaben und mit Informationen zu unserem System. Anders als bei apr sind unsere Eingaben sehr umfangreich.

$> cd httpd-2.4.41
$> ./configure --prefix=/opt/apache-2.4.41 --with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config --enable-mpms-shared=event \
--enable-mods-shared=all --enable-nonportable-atomics=yes

Hier bestimmen wir das Zielverzeichnis für den zukünftigen Apache Webserver; wieder konform mit dem FHS. Darauf folgen zwei Optionen, um die beiden als Vorbedingung installierten Bibliotheken anzubinden. Mittels --enable-mpms-shared wählen wir ein sogenanntes Prozessmodell des Servers aus. Das ist – vereinfacht gesagt – so etwas wie der Motorentyp der Maschine: Benzin oder Diesel. In unserem Fall stehen event, worker, prefork und ein paar experimentelle Motoren zur Verfügung. Wir nehmen hier das Modell event, das unter 2.4 den neuen Standard darstellt und deutlich performanter ist als die übrigen Architekturen. In den Versionslinien 2.0 und 2.2 gab es bei diesem Entscheid deutlich mehr als nur die Performance zu bedenken, aber seit 2.4 hat sich die Problematik deutlich entschärft und wir fahren nun mit event am besten. Mehr Infos zu den verschiedenen Prozessmodellen (MPMs) liefert das Apache Projekt.

Dann bestimmen wir, dass wir alle (all) Module mitkompilieren möchten. Dabei ist zu berücksichtigen, dass all hier nicht wirklich alle bedeutet. Aus historischen Gründen meint all nur sämtliche Kern-Module, was auch schon eine ganze Menge ist. Das Schlüsselwort shared besagt, dass wir die Module separat kompiliert haben möchten, um sie dann einzeln als optionale Module einbinden zu können. Zu guter Letzt folgt mit enable-nonportable-atomics ein Compiler-Flag, das den Compiler instruiert, besondere Optionen zu verwenden, welche nur auf modernen x86-Prozessoren zur Verfügung stehen und sich günstig auf die Performance auswirken.

Schritt 5: Kompilieren

Nach dem Durchlauf von configure sind wir bereit für den Compiler. Hier sollte nun nichts mehr schief gehen.

$> make

Das dauert wohl einige Zeit. Dabei werden aus den 38MB knapp 100MB.

Schritt 6: Installieren

Wenn das Kompilieren geklappt hat, dann installieren wir den selbst gebauten Apache Webserver. Wir müssen das Installieren durch den Superuser vornehmen lassen. Aber danach schauen wir gleich zu, dass wir wieder in Besitz des Webservers kommen. Für ein Testsystem ist das viel praktischer.

$> sudo make install

Auch die Installation dauert eine Weile.

$> sudo chown -R `whoami` /opt/apache-2.4.41

Und jetzt noch ein Kniff: Wenn man professionell mit Apache arbeitet, dann hat man oft mehrere verschiedene Versionen nebeneinander auf der Testmaschine. Verschiedene Versionen, verschiedene Patches, andere Module etc. führen zu recht mühsamen und langen Pfaden mit Versionsnummern und weiteren Beschreibungen. Ich mache es dann jeweils so, dass ich einen Softlink von /apache auf den aktuellen Apache Webserver lege. Dabei ist darauf zu achten, dass auch der Softlink uns und nicht dem root-User gehört (dies wird bei der Konfiguration des Servers wichtig).

$> sudo ln -s /opt/apache-2.4.41 /apache
$> sudo chown `whoami` --no-dereference /apache
$> cd /apache

Unser Webserver hat nun also einen klaren Pfad, der ihn mit der Versionsnummer eindeutig beschreibt. Im Alltag verwenden wir aber einfach /apache für den Zugriff. Das erleichtert die Arbeit.

Schritt 7: Starten

Dann wollen wir mal sehen, ob die Maschine anspringt. Das müssen wir für den Moment wieder durch den Superuser erledigen lassen:

$> sudo ./bin/httpd -X

Das ist wieder ein Kniff für den Testbetrieb: Apache ist eigentlich ein Daemon der im Hintergrund läuft. Für einfache Tests ist das aber eher nervig, da wir den Daemon andauernd starten, stoppen, neu laden und sonstwie manipulieren müssen. Mit der Option -X teilen wir Apache mit, dass er sich das mit dem Daemon erst mal sparen und dass er schön im Vordergrund als Single-Prozess/-Thread bleiben soll. Auch das hilft bei der Arbeit.

Vermutlich gibt es nun beim Start eine Warnung:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using …
127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Das ist nicht weiter schlimm und wir können die Warnung für den Moment ignorieren.

Schritt 8: Ausprobieren

Die Maschine läuft jetzt. Aber funktioniert sie auch? Zeit für den Funktionstest: Wir sprechen den Apache mit dem Browser unter folgendem Link an:

http://127.0.0.1/index.html

Da erwarten wir dann Folgendes.

Screenshot: It works!

Im Browser zeigt der Apache ein erstes Lebenszeichen.

Super! Ziel erreicht: Der selbst kompilierte Apache läuft.

Zurück in die Shell und Abschalten des Servers mit STRG-C oder für uns Schweizer mit CTRL-C.

Schritt 9 (Bonus): Ansehen des Binaries und der Module

Bevor wir die Lektion abschliessen möchten wir den Server etwas genauer ansehen. Sozusagen mit den Fingern über die Karosserie streichen und die Motorhaube öffnen. Informationen zu unserem Binary erhalten wir wie folgt:

$> sudo ./bin/httpd -V
Server version: Apache/2.4.41 (Unix)
Server built:   November 12 2019 06:09:49
Server's Module Magic Number: 20120211:83
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/opt/apache-2.4.41"
 -D SUEXEC_BIN="/opt/apache-2.4.41/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Da wird die Version angegeben, wann wir kompiliert haben, apr kommt wieder zur Sprache und weiter unten der MPM event. Ganz unten finden wir übrigens den Hinweis auf das Standard-Konfigurationsfile des Webservers und etwas darüber den Pfad, unter dem wir das Default Errorlog finden können.

Man kann aber noch etwas mehr aus dem System rausholen und ihn etwa nach den Modulen fragen, welche fix in den Server hineinkompiliert sind:

$> sudo ./bin/httpd -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

Diese und die obenstehenden Informationen helfen bei der Fehlersuche und wenn man einen Bugreport einsenden will. Dies sind typischerweise auch die ersten Fragen, welche von den Entwicklern gestellt werden.

Das Binary selbst (/apache/bin/httpd) ist übrigens ungefähr 2.0MB gross und die Liste der Module sieht folgendermassen aus:

$> ls -lh modules
total 8.8M
-rw-r--r-- 1 myuser root    14K Mar  5 21:09 httpd.exp
-rwxr-xr-x 1 myuser root    36K Mar  5 21:16 mod_access_compat.so
-rwxr-xr-x 1 myuser root    34K Mar  5 21:17 mod_actions.so
-rwxr-xr-x 1 myuser root    49K Mar  5 21:17 mod_alias.so
-rwxr-xr-x 1 myuser root    31K Mar  5 21:17 mod_allowmethods.so
-rwxr-xr-x 1 myuser root    30K Mar  5 21:17 mod_asis.so
-rwxr-xr-x 1 myuser root    47K Mar  5 21:16 mod_auth_basic.so
-rwxr-xr-x 1 myuser root   102K Mar  5 21:16 mod_auth_digest.so
-rwxr-xr-x 1 myuser root    79K Mar  5 21:16 mod_auth_form.so
-rwxr-xr-x 1 myuser root    30K Mar  5 21:16 mod_authn_anon.so
-rwxr-xr-x 1 myuser root    39K Mar  5 21:16 mod_authn_core.so
-rwxr-xr-x 1 myuser root    43K Mar  5 21:16 mod_authn_dbd.so
-rwxr-xr-x 1 myuser root    33K Mar  5 21:16 mod_authn_dbm.so
-rwxr-xr-x 1 myuser root    33K Mar  5 21:16 mod_authn_file.so
-rwxr-xr-x 1 myuser root    54K Mar  5 21:16 mod_authn_socache.so
-rwxr-xr-x 1 myuser root    70K Mar  5 21:16 mod_authz_core.so
-rwxr-xr-x 1 myuser root    46K Mar  5 21:16 mod_authz_dbd.so
-rwxr-xr-x 1 myuser root    37K Mar  5 21:16 mod_authz_dbm.so
-rwxr-xr-x 1 myuser root    41K Mar  5 21:16 mod_authz_groupfile.so
-rwxr-xr-x 1 myuser root    37K Mar  5 21:16 mod_authz_host.so
-rwxr-xr-x 1 myuser root    31K Mar  5 21:16 mod_authz_owner.so
-rwxr-xr-x 1 myuser root    31K Mar  5 21:16 mod_authz_user.so
-rwxr-xr-x 1 myuser root   129K Mar  5 21:17 mod_autoindex.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_buffer.so
-rwxr-xr-x 1 myuser root   103K Mar  5 21:17 mod_cache_disk.so
-rwxr-xr-x 1 myuser root   229K Mar  5 21:17 mod_cache.so
-rwxr-xr-x 1 myuser root   108K Mar  5 21:17 mod_cache_socache.so
-rwxr-xr-x 1 myuser root   118K Mar  5 21:17 mod_cgid.so
-rwxr-xr-x 1 myuser root    68K Mar  5 21:17 mod_charset_lite.so
-rwxr-xr-x 1 myuser root    33K Mar  5 21:17 mod_data.so
-rwxr-xr-x 1 myuser root   221K Mar  5 21:17 mod_dav_fs.so
-rwxr-xr-x 1 myuser root    83K Mar  5 21:17 mod_dav_lock.so
-rwxr-xr-x 1 myuser root   395K Mar  5 21:17 mod_dav.so
-rwxr-xr-x 1 myuser root    71K Mar  5 21:17 mod_dbd.so
-rwxr-xr-x 1 myuser root   100K Mar  5 21:17 mod_deflate.so
-rwxr-xr-x 1 myuser root    36K Mar  5 21:17 mod_dialup.so
-rwxr-xr-x 1 myuser root    37K Mar  5 21:17 mod_dir.so
-rwxr-xr-x 1 myuser root    33K Mar  5 21:17 mod_dumpio.so
-rwxr-xr-x 1 myuser root    34K Mar  5 21:17 mod_echo.so
-rwxr-xr-x 1 myuser root    32K Mar  5 21:17 mod_env.so
-rwxr-xr-x 1 myuser root    44K Mar  5 21:17 mod_expires.so
-rwxr-xr-x 1 myuser root    74K Mar  5 21:17 mod_ext_filter.so
-rwxr-xr-x 1 myuser root    42K Mar  5 21:17 mod_file_cache.so
-rwxr-xr-x 1 myuser root    62K Mar  5 21:17 mod_filter.so
-rwxr-xr-x 1 myuser root    73K Mar  5 21:17 mod_headers.so
-rwxr-xr-x 1 myuser root    30K Mar  5 21:17 mod_heartbeat.so
-rwxr-xr-x 1 myuser root    79K Mar  5 21:17 mod_heartmonitor.so
-rwxr-xr-x 1 myuser root   163K Mar  5 21:17 mod_include.so
-rwxr-xr-x 1 myuser root    85K Mar  5 21:17 mod_info.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_lbmethod_bybusyness.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_lbmethod_byrequests.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_lbmethod_bytraffic.so
-rwxr-xr-x 1 myuser root    52K Mar  5 21:17 mod_lbmethod_heartbeat.so
-rwxr-xr-x 1 myuser root   103K Mar  5 21:17 mod_log_config.so
-rwxr-xr-x 1 myuser root    43K Mar  5 21:17 mod_log_debug.so
-rwxr-xr-x 1 myuser root    37K Mar  5 21:17 mod_log_forensic.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_logio.so
-rwxr-xr-x 1 myuser root   467K Mar  5 21:17 mod_lua.so
-rwxr-xr-x 1 myuser root    56K Mar  5 21:17 mod_macro.so
-rwxr-xr-x 1 myuser root    88K Mar  5 21:17 mod_mime_magic.so
-rwxr-xr-x 1 myuser root    60K Mar  5 21:17 mod_mime.so
-rwxr-xr-x 1 myuser root   184K Mar  5 21:16 mod_mpm_event.so
-rwxr-xr-x 1 myuser root   136K Mar  5 21:16 mod_mpm_worker.so
-rwxr-xr-x 1 myuser root   117K Mar  5 21:17 mod_negotiation.so
-rwxr-xr-x 1 myuser root   198K Mar  5 21:17 mod_proxy_ajp.so
-rwxr-xr-x 1 myuser root   139K Mar  5 21:17 mod_proxy_balancer.so
-rwxr-xr-x 1 myuser root    59K Mar  5 21:17 mod_proxy_connect.so
-rwxr-xr-x 1 myuser root    40K Mar  5 21:17 mod_proxy_express.so
-rwxr-xr-x 1 myuser root    77K Mar  5 21:17 mod_proxy_fcgi.so
-rwxr-xr-x 1 myuser root    40K Mar  5 21:17 mod_proxy_fdpass.so
-rwxr-xr-x 1 myuser root   131K Mar  5 21:17 mod_proxy_ftp.so
-rwxr-xr-x 1 myuser root   114K Mar  5 21:17 mod_proxy_html.so
-rwxr-xr-x 1 myuser root   121K Mar  5 21:17 mod_proxy_http.so
-rwxr-xr-x 1 myuser root    66K Mar  5 21:17 mod_proxy_scgi.so
-rwxr-xr-x 1 myuser root   357K Mar  5 21:17 mod_proxy.so
-rwxr-xr-x 1 myuser root    59K Mar  5 21:17 mod_proxy_wstunnel.so
-rwxr-xr-x 1 myuser root    33K Mar  5 21:17 mod_ratelimit.so
-rwxr-xr-x 1 myuser root    34K Mar  5 21:17 mod_reflector.so
-rwxr-xr-x 1 myuser root    41K Mar  5 21:17 mod_remoteip.so
-rwxr-xr-x 1 myuser root    48K Mar  5 21:17 mod_reqtimeout.so
-rwxr-xr-x 1 myuser root    40K Mar  5 21:17 mod_request.so
-rwxr-xr-x 1 myuser root   210K Mar  5 21:17 mod_rewrite.so
-rwxr-xr-x 1 myuser root   144K Mar  5 21:17 mod_sed.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_session_cookie.so
-rwxr-xr-x 1 myuser root    53K Mar  5 21:17 mod_session_dbd.so
-rwxr-xr-x 1 myuser root    61K Mar  5 21:17 mod_session.so
-rwxr-xr-x 1 myuser root    47K Mar  5 21:17 mod_setenvif.so
-rwxr-xr-x 1 myuser root    32K Mar  5 21:17 mod_slotmem_plain.so
-rwxr-xr-x 1 myuser root    59K Mar  5 21:17 mod_slotmem_shm.so
-rwxr-xr-x 1 myuser root    52K Mar  5 21:17 mod_socache_dbm.so
-rwxr-xr-x 1 myuser root    40K Mar  5 21:17 mod_socache_memcache.so
-rwxr-xr-x 1 myuser root    82K Mar  5 21:17 mod_socache_shmcb.so
-rwxr-xr-x 1 myuser root    43K Mar  5 21:17 mod_speling.so
-rwxr-xr-x 1 myuser root   897K Mar  5 21:17 mod_ssl.so
-rwxr-xr-x 1 myuser root    80K Mar  5 21:17 mod_status.so
-rwxr-xr-x 1 myuser root    48K Mar  5 21:17 mod_substitute.so
-rwxr-xr-x 1 myuser root    35K Mar  5 21:17 mod_unique_id.so
-rwxr-xr-x 1 myuser root    37K Mar  5 21:17 mod_unixd.so
-rwxr-xr-x 1 myuser root    34K Mar  5 21:17 mod_userdir.so
-rwxr-xr-x 1 myuser root    44K Mar  5 21:17 mod_usertrack.so
-rwxr-xr-x 1 myuser root    27K Mar  5 21:17 mod_version.so
-rwxr-xr-x 1 myuser root    40K Mar  5 21:17 mod_vhost_alias.so
-rwxr-xr-x 1 myuser root    54K Mar  5 21:17 mod_watchdog.so
-rwxr-xr-x 1 myuser root    69K Mar  5 21:17 mod_xml2enc.so

Das sind alle Module, welche von Apache zusammen mit dem Server verteilt werden; bekanntlich haben wir bei den zu kompilierenden Modulen die Option all ausgewählt. Weitere Module gibt es von Drittanbietern. Alle unsere Module brauchen wir kaum, aber einige will man fast immer dabei haben: Sie stehen von Beginng weg für eine Einbindung bereit.

Newsletter

Hat dieses Tutorial Spass gemacht? Dann wäre doch unser Newsletter mit Infos zu neuen Artikeln hier bei netnea das Richtige. Hier geht es zum Einschreiben.
Der Newsletter erscheint in englischer Sprache.

Verweise

Lizenz / Kopieren / Weiterverwenden

Creative Commons License
Diese Arbeit ist wie folgt lizenziert / This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Changelog

  • 02. Dezember 2019: Updated Apache to version 2.4.41
  • 04. November 2019: Bugfix (md5->sha256)
  • 28. Oktober 2019: Änderungen im deutschen Text gemäss englischem Text nachgezogen
  • 17. Dezember 2017: Wechsel des Apache Mirrors (www-eu.apache.org), Update apr (1.6.3), apr-util (1.6.1) und Apache (2.4.29); Paketinstallationen neu arrangiert, Screenshot ausgewechselt
  • 17. Dezember 2017: Wechsel des Apache Mirrors (www-eu.apache.org), Update apr (1.6.3), apr-util (1.6.1) und Apache (2.4.29)
  • 25. September 2017: Update of apr (1.6.2), apr-util (1.6.0) and apache (2.4.27)
  • 28. Dezember 2016: Apache 2.4.23->2.4.25
  • 20. Dezember 2016: tar Optionen mit "-" eingeleitet
  • 12. Dezember 2016: Lokale Links neu alle auf netnea.com gesetzt
  • 25. August 2016: Zeilenumbrüche justiert
  • 15. Juli 2016: Apache 2.4.20 -> 2.4.23 (Luca Käser)
  • 16. Juni 2016: Link auf localhost um index.html erweitert
  • 16. Januar 2016: Lizenzhinweis eingefügt
  • 16. Oktober 2015: Version von 2.4.16 auf 2.4.17 erhöht
  • 12. Oktober 2015: Orthographie- und Stilvorschläge von Benjamin Affolter eingearbeitet
  • 10. Oktober 2015: Paketabhängigkeiten teilweise zu apr geschoben, build-essential hinzugefügt
  • 9. Oktober 2015: Spracahliche Überarbeitung, apr/apr-util Kompilierung besser kommentiert
  • 17. September 2015: Version von 2.2 auf 2.4.16 gehoben und Text überarbeitet
  • 14. Dezember 2013: html -> markdown, auf github eingecheckt (F. Tschannen)
  • 9. Juli 2013: Output des Bonusteils an neue Version angepasst
  • 2. Juli 2013: Version von 2.2.24 auf 2.2.25 erhöht
  • 15. April 2013: Version von 2.2.21 auf 2.2.24 erhöht
  • 13. April 2013: Link to http://httpd.apache.org/docs/trunk/programs/configure.html
  • 12. Oktober 2011: Version von 2.2.17 auf 2.2.21 erhöht
  • 27. Februar 2011: Erklärung zu FHS
  • 25. Februar 2011: "cd" Kommando bei Schritt 1 gestrichen (Wiederholung in Schritt 2), Rechtschreibfehler korrigiert
  • 7. Februar 2011: Rechtschreibfehler korrigiert
  • 1. Januar 2011: Rechtschreibfehler korrigiert
  • 6. November 2010: Ownership des Softlinks /apache angepasst
  • 21. Oktober 2010: Überarbeitet
  • 20. Oktober 2010: Erstellt