Apache HTTP Server
Der Apache HTTP Server (auch: Apache) ist ein Produkt der Apache Software Foundation und der meistbenutzte Webserver im Internet. Neben Unix und Linux unterstützt er auch Windows (Win32), Netware sowie viele weitere Betriebssysteme.
Gegenwärtig werden noch die folgenden stabilen Versionen unterstützt und somit beispielsweise mit Sicherheitsupdates versorgt. Die Apache-Entwickler empfehlen aber, die Version 2.2.x einzusetzen, da sie diese Version für die beste erhältliche halten.
Entwicklungsreihe | Aktuelle Version (August 2009) |
---|---|
1.3.x | Apache HTTP Server 1.3.41 |
2.0.x | Apache HTTP Server 2.0.63 |
2.2.x | Apache HTTP Server 2.2.12 |
Merke: Unix is like a wigwam: no windows, no gates - only Apache inside...
Funktionsweise
Der Webserver-Daemon des Apache HTTP Server heisst httpd und arbeitet im Hintergrund. Beim Starten des Dienstes wird er als erster Prozess angestossen. Erst später kommen je nach Konfiguration (und je nach Anzahl Zugriffe auf den Webserver) weitere httpd-Instanzen als Kindprozesse dazu.
In Version 2.0 wurde die Stabilität und Geschwindigkeit des Apache HTTP Server erheblich verbessert: Die Bibliothek Apache Portable Runtime / APR stellt eine Verallgemeinerung wichtiger Systemaufrufe zur Verfügung, sodass die Stärken des jeweiligen Betriebssystems ausgenutzt werden können.
Verschiedene Multiprocessing-Module / MPM bieten je nach Plattform unterschiedliche Lösungen für die gleichzeitige Bedienung mehrerer Client-Anfragen an.
- das MPM "prefork" bildet das Verhalten des Apache HTTP Server 1.3 nach und stellt gewissermasssen den Kompatibilitätsmodus des Apache HTTP Server 2 dar. Dieses MPM eignet sich besonders, wenn etwa PHP als Modul und nicht über das CGI eingebunden werden soll.
- das MPM "worker" verschafft dem Webserver Multithreading-Fähigkeit und damit Performancegewinn.
- weitere MPMs befinden sich noch im Experimentalstadium.
Wird der Apache HTTP Server selber kompiliert, so kommt standardmässig das MPM "prefork" zum Zuge, ein anderes Modul muss mit der configure-Option "--with-mp=mpm-name ausgewählt werden.
Der Apache HTTP Server ist modular aufgebaut: Durch entsprechende Module kann er beispielsweise die Kommunikation zwischen Webbrowser und Webserver verschlüsseln ("mod_ssl"), als Proxyserver eingesetzt werden ("mod_proxy") oder komplexe Manipulationen von HTTP-Kopfdaten ("mod_headers") und URLs ("mod_rewrite") durchführen. Von allen in der Apache HTTP Server-Distribution enthaltenen Modulen werden auf Unix-artigen Betriebssystemen standardmässig nur die Basismodule kompiliert und statisch gelinkt. Soll eines davon nicht eingesetzt werden, so muss es ausdrücklich von der Kompilierung ausgenommen werden. Erweiterungs- und experimentelle Module dagegen müssen ausdrücklich hinzugefügt werden. Die Basismodule sind die folgenden:
Apache HTTP Server 2-Basismodule | |
---|---|
Modul | Beschreibung |
core mpm_common |
Nicht deaktivierbare Kernmodule des Webservers. |
mod_access mod_auth |
Rechner- und benutzerbasierte Zugriffskontrolle. |
mod_actions mod_cgi mod_cgid |
Führen Skripte als Handler oder CGI-Anwendungen aus. Das Modul "mod_cgid" wird beim Verwendung von Multithreading-MPMs automatisch ausgewählt. |
mod_alias mod_dir mod_userdir |
URL-Abbildung und Verzeichnishandling. |
mod_asis | Dateien mit eigenen Headern senden. |
mod_autoindex | Automatische Indexerstellung für Verzeichnisse. |
mod_env mod_setenvif |
Beeinflussung von Umgebungsvariablen. |
mod_imap | Serverseitige verweissensitive Grafiken (engl. image maps). |
mod_include | Ausführung von Server Side Includes / SSI. Damit können einfache dynamische Webseiten erstellt und der Verwaltungsaufwand von statischen Webseiten minimiert werden. |
mod_log_config | Protokollierung. |
mod_mime mod_negotiation |
Auswahl und Zuordnung von MIME-Type, Sprache und Kodierung. |
mod_status | Webserverüberwachung. |
http | Unterstützung für das Hypertext Transfer Protocol. Dieses Modul macht den Apache HTTP Server erst zu einem HTTP-Server. |
Der Apache bietet die Möglichkeit, mittels serverseitiger Skriptsprachen Webseiten dynamisch zu erstellen. Häufig verwendete Skriptsprachen sind Perl, PHP und Ruby. Diese sind kein Bestandteil des Webservers, sondern müssen ebenfalls entweder als Module ("mod_perl", "mod_php" usw.) eingebunden werden oder über das Common Gateway Interface / CGI angesprochen werden. Ein Nachteil der CGI-Variante ist allerdings der damit einhergehende Performanceverlust.
Geschichte
Datum | Version | Beschreibung |
---|---|---|
1995.04 | Apache HTTP Server 0.6.2 | allererste öffentlich verteilte Version |
1995.12.01 | Apache HTTP Server 1.0 | |
2002.04 | Apache HTTP Server 2.0 |
Installation
Konfiguration
Verwendung
Starten des Apache HTTP Servers
Je nach Linux-Distribution findet sich im Verzeichnis "/etc/init.d" üblicherweise ein Skript (im Beispiel namens "apache") zum Starten und Stoppen des Apache HTTP Server. Das Starten und Stoppen des Webservers erfolgt damit wie folgt.
$ /etc/init.d/apache start $ /etc/init.d/apache stop
Weitere Optionen dieses Startskripts sind:
- "reload" liest nur die Konfigurationsdatei "httpd.conf" neu ein, ohne den Apache HTTP Server neu zu starten.
- "restart" fährt einen bereits laufenden Apache HTTP Server zu erst herunter und anschliessend wieder hoch.
Zusätzlich bringt Apache von sich aus das Skript "apachectl" mit; dieses ist z. B. im Verzeichnis "/usr/local/apache2/bin" zu finden. Zusätzlich zu "start", "stop" und "restart" besitzt dieses Skript folgende Optionen:
- "graceful" liest nur die Konfigurationsdatei "httpd.conf" neu ein, ohne den Apache HTTP Server neu zu starten.
- "configtest" testet nur die aktuelle Konfiguration.
Starten des Apache HTTP Server
# /usr/local/apache2/bin/apachectl start # ps -ef | grep httpd root 4621 1 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd bin 4622 4621 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd bin 4623 4621 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd bin 4624 4621 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd bin 4625 4621 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd bin 4626 4621 0 12:23 ? 00:00:00 /usr/local/apache2/bin/httpd root 4630 866 0 12:24 tty2 00:00:00 grep httpd
Anzeige der aktuell laufenden Instanzen des Apache HTTP Servers.
$ ps waux | grep httpd bzw. $ ps waux | grep apache root 9800 0.0 0.4 23812 7144 ? Ss 09:12 0:01 /usr/sbin/apache2 -k start www-data 9816 0.0 0.7 28636 11764 ? S 09:12 0:00 /usr/sbin/apache2 -k start www-data 9820 0.0 0.8 29904 12916 ? S 09:12 0:00 /usr/sbin/apache2 -k start ...
Nach erfolgreichem Start des Apache HTTP Servers kann er über den Webbrowser mit "http://rechnername/" aufgerufen werden, je nach Konfiguration z. B. über http://localhost/.
Logging
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Apache Software Foundation | enge | Apache HTTP Server projectwbm | Offizielle Homepage |
Apache Friends | ger | Apache Friendswbm | |
Wikipedia | ger | Apache HTTP Serverwbm | Enzyklopädischer Artikel |