Die Apache-Software ist modulartig aufgebaut. Sämtliche Funktionen mit Ausnahme der wichtigsten Aufgaben werden in Modulen zur Verfügung gestellt. Dies geht sogar so weit, dass selbst HTTP durch ein Modul verarbeitet wird (http_core).
Apache-Module können bei der Entwicklung in die Apache-Binaries kompiliert oder während der Laufzeit dynamisch geladen werden. Informationen zum dynamischen Laden von Modulen erhalten Sie unter Abschnitt 26.4.2, „Aktivieren und Deaktivieren von Modulen“.
Apache-Module lassen sich in vier Kategorien einteilen:
Basismodule sind standardmäßig in Apache enthalten. In Apache von SUSE Linux sind nur die Basismodule mod_so und http_core kompiliert. Alle anderen Basismodule stehen als gemeinsame Objekte zur Verfügung: Sie sind zwar nicht im Server-Binary enthalten, können jedoch während der Laufzeit hinzugefügt werden.
Im Allgemeinen sind Erweiterungsmodule im Apache-Softwarepaket enthalten, jedoch nicht statisch im Server kompiliert. In SUSE Linux stehen diese Module als gemeinsame Objekte zur Verfügung, die während der Laufzeit in Apache geladen werden können.
Externe Module sind nicht in der offiziellen Apache-Distribution enthalten. SUSE Linux bietet jedoch einige externe Module an, die ohne großen Aufwand sofort verwendet werden können.
Multiprocessing-Module (MPMs) sind dafür verantwortlich, Anforderungen an den Webserver anzunehmen und zu verarbeiten, und stellen damit das Kernstück der Webserver-Software dar.
Wenn Sie das Standardinstallationsverfahren für Apache durchgeführt haben (siehe Abschnitt 26.1.2, „Installation“), wird Apache mit allen Basis- und Erweiterungsmodulen sowie dem Multiprocessing-Modul Prefork und dem externen Modul PHP5 installiert.
In YaST können Sie weitere externe Module installieren. Starten Sie dazu YaST und wählen Sie apache. Die Ergebnisliste zeigt nun neben anderen Paketen alle verfügbaren externen Apache-Module an.
+ . Wählen Sie danach + und suchen Sie nachDie Skriptsprachenmodule PHP5, Perl, Python und Ruby können Sie in YaST mit der im Abschnitt Abschnitt 26.2.2.1, „HTTP Server Wizard (HTTP-Server-Assistent)“ beschriebenen Modulkonfiguration aktivieren oder deaktivieren. Alle anderen Module werden, wie im Abschnitt Abschnitt 26.2.2.2.2, „Server Modules (Server-Module)“ beschrieben, aktiviert oder deaktiviert.
Manuell können Sie die Module mit dem Befehl a2enmod mod_foo
bzw. a2dismod mod_foo
aktivieren bzw. deaktivieren. a2enmod -l gibt eine Liste aller zurzeit aktiven Module aus.
Einschließen der Konfigurationsdateien externer Module | |
---|---|
Wenn Sie externe Module manuell aktivieren, müssen Sie sicherstellen, dass auch ihre Konfigurationsdateien in allen virtuellen Hostkonfigurationen geladen werden. Die Konfigurationsdateien externer Module befinden sich im Verzeichnis |
Alle Basis- und Erweiterungsmodule werden ausführlich in der Apache-Dokumentation beschrieben. An dieser Stelle gehen wir daher nur kurz auf die wichtigsten Module ein. Informationen zu den einzelnen Modulen erhalten Sie auch unter http://httpd.apache.org/docs/2.2/mod/.
Dieses Modul stellt die Direktiven Alias
und Redirect
bereit. Damit können Sie eine URI einem bestimmten Verzeichnis zuordnen (Alias
) bzw. eine angeforderte URL umleiten. Dieses Modul ist standardmäßig aktiviert.
Die Authentifizierungsmodule stellen zwei Authentifizierungsmethoden bereit: Die Standardauthentifizierung mit mod_auth_basic und die Digest-Authentifizierung mit mod_auth_digest. Die Digest-Authentifizierung in Apache 2.2 befindet sich noch im Versuchsstadium.
mod_auth_basic und mod_auth_digest funktionieren nur gemeinsam mit dem Authentifizierungsanbietermodul mod_authn_* (z. B. mod_authn_file für die Authentifizierung auf Basis einer Textdatei) und mit dem Autorisierungsmodul mod_authz_* (z. B. mod_authz_user für die Benutzerautorisierung).
Weitere Informationen zu diesem Thema erhalten Sie im Artikel „Gewusst wie: Authentifizierung“ unter http://httpd.apache.org/docs/2.2/howto/auth.html
Wenn keine Indexdatei vorhanden ist (z. B. index.html
), generiert mod_autoindex Verzeichnislisten. Das Aussehen dieser Indizes kann konfiguriert werden. Dieses Modul ist standardmäßig aktiviert. Allerdings sind Verzeichnislisten durch die Options
-Direktive standardmäßig deaktiviert – Sie müssen diese Einstellung daher in Ihrer virtuellen Hostkonfiguration ändern. Die Standardkonfigurationsdatei dieses Moduls befindet sich unter /etc/apache2/
und heißt mod_autoindex-defaults.conf
.
mod_cgi wird zur Ausführung von CGI-Skripts benötigt. Dieses Modul ist standardmäßig aktiviert.
Mit diesem Modul kann Apache so konfiguriert werden, dass bestimmte Dateitypen automatisch vor der Bereitstellung komprimiert werden.
mod_dir stellt die DirectoryIndex
-Direktive bereit, mit der Sie festlegen können, welche Dateien bei Anforderung eines Verzeichnisses automatisch zurückgegeben werden (standardmäßig index.html
). Außerdem leitet dieses Modul automatisch zur korrekten URI um, wenn in einer Verzeichnisanforderung der nachgestellte Schrägstrich fehlt. Dieses Modul ist standardmäßig aktiviert.
Mit mod_expires legen Sie fest, wie häufig Ihre Dokumente über Proxy- und Browser-Caches durch Zustellung eines Expires
-Header aktualisiert werden. Dieses Modul ist standardmäßig aktiviert.
mod_include ermöglicht die Verwendung von serverseitigen Includes (SSI), die die grundlegende Funktionalität für die dynamische Generierung von HTML-Seiten bereitstellen. Dieses Modul ist standardmäßig aktiviert.
Dieses Modul stellt unter http://localhost/server-info/ eine umfassende Übersicht über die Serverkonfiguration bereit. Aus Sicherheitsgründen sollte der Zugriff auf diese URL generell eingeschränkt sein. Standardmäßig erhält nur localhost
Zugriff auf diese URL. mod_info wird in der Datei /etc/apache2/mod_info.conf
konfiguriert.
Mit diesem Modul konfigurieren Sie den Aufbau der Apache-Protokolldateien. Dieses Modul ist standardmäßig aktiviert.
Dieses Modul sorgt dafür, dass eine Datei auf Basis seiner Dateinamenerweiterung mit dem korrekten MIME-Header bereitgestellt wird (z. B. text/html
für HTML-Dokumente). Dieses Modul ist standardmäßig aktiviert.
Dieses Modul ist für die Inhaltsverhandlung erforderlich. Weitere Informationen erhalten Sie unter http://httpd.apache.org/docs/2.2/content-negotiation.html. Dieses Modul ist standardmäßig aktiviert.
Dieses Modul stellt die gleiche Funktionalität wie mod_alias bereit, bietet aber mehr Funktionen und ist somit flexibler. Mit mod_rewrite können Sie URLs auf Basis verschiedener Regeln umleiten, Header anfordern und einiges mehr.
mod_speling versucht, typografische Fehler in URLs, beispielsweise die Groß-/Kleinschreibung, automatisch zu korrigieren.
Dieses Modul ermöglicht verschlüsselte Verbindungen zwischen dem Webserver und den Clients. Weitere Einzelheiten finden Sie unter Abschnitt 26.6, „Einrichten eines sicheren Webservers mit SSL“. Dieses Modul ist standardmäßig aktiviert.
Dieses Modul stellt unter http://localhost/server-status/ Informationen über die Aktivität und Leistung des Servers bereit. Aus Sicherheitsgründen sollte der Zugriff auf diese URL generell eingeschränkt sein. Standardmäßig erhält nur localhost
Zugriff auf diese URl. mod_status wird in der Datei /etc/apache2/mod_status.conf
konfiguriert.
Dieses Modul ermöglicht die Ausführung von CGI-Skripts unter einem anderen Benutzer oder einer anderen Gruppe. Dieses Modul ist standardmäßig aktiviert.
Dieses Modul ermöglicht benutzerspezifische Verzeichnisse unter ~
. In der Konfiguration muss die user
/UserDir
-Direktive angegeben sein. Dieses Modul ist standardmäßig aktiviert.
SUSE Linux bietet zwei Multiprocessing-Module (MPMs) für Apache.
Das Prefork-MPM implementiert einen Prefork-Webserver, der keine Threads verwendet. Mit diesem Modul verhält sich der Webserver, was die Handhabung von Anforderungen betrifft, ähnlich wie Apache Version 1.x: Er isoliert jede einzelne Anforderung und verarbeitet sie in einem separaten untergeordneten Prozess (Forking). Eine Beeinträchtigung aller Anforderungen durch wenige problematische Anforderungen und somit eine Sperre des Webservers lassen sich dadurch vermeiden.
Die prozessbasierte Vorgehensweise des Prefork-MPM bietet zwar Stabilität, konsumiert aber mehr Systemressourcen wie das Worker-MPM. Für UNIX-basierte Betriebssysteme gilt das Prefork-MPM als Standard-MPM.
MPMs in diesem Dokument | |
---|---|
In diesem Dokument wird davon ausgegangen, dass Apache mit dem Prefork-MPM verwendet wird. |
Das Worker-MPM implementiert einen Multithread-Webserver. Ein Thread ist die „Lightweight-Version“ eines Prozesses. Der Vorteil von Threads gegenüber Prozessen ist deren geringerer Ressourcenkonsum. Anstatt lediglich untergeordnete Prozesse zu erstellen (Forking), verarbeitet das Worker-MPM Anforderungen durch Threads mit Serverprozessen. Die untergeordneten Prefork-Prozesse sind auf mehrere Threads aufgeteilt (Multithreading). Diese Ansatzweise macht den Apache-Server durch den geringeren Ressourcenkonsum leistungsfähiger als mit dem Prefork-MPM.
Ein gravierender Nachteil ist allerdings die geringere Stabilität des Worker-MPM: Ein beschädigter Thread kann sich auf alle Threads des Prozesses auswirken. Im schlimmsten Fall fällt der Server dadurch aus. Besonders bei gleichzeitiger Verwendung der Common Gateway Interface (CGI) auf einem überlasteten Apache-Server kann es zu internen Serverfehlern kommen, da Threads in diesem Fall unter Umständen nicht in der Lage sind, mit den Systemressourcen zu kommunizieren. Gegen die Verwendung des Worker-MPM in Apache spricht auch die Tatsache, dass nicht alle verfügbaren Apache-Module Thread-sicher sind und daher nicht in Verbindung mit dem Worker-MPM eingesetzt werden können.
Verwendung von PHP-Modulen mit MPMs | |
---|---|
Nicht alle verfügbaren PHP-Module sind Thread-sicher. Von einer Verwendung des Worker-MPM in Verbindung mit mod_php wird daher abgeraten. |
Nachfolgend finden Sie eine Liste aller externen Module, die mit SUSE Linux ausgeliefert werden. Die Dokumentation zu den einzelnen Modulen finden Sie in den jeweils genannten Verzeichnissen.
FastCGI ist eine sprachunabhängige, skalierbare Erweiterung zu CGI, die erstklassige Leistung ohne die Einschränkungen serverspezifischer APIs bietet. FastCGI-Anwendungen liegen persistent vor und sind daher äußerst schnell. Bei einer Anforderung kommt es zu keiner Verzögerung durch den Start und die Initialisierung der Anwendung.
Paketname: apache2-mod_fastcgi
|
Konfigurationsdatei: /etc/apache2/conf.d/mod_fastcgi.conf
|
Weitere Informationen: /usr/share/doc/packages/apache2-mod_fastcgi
|
mod_perl ermöglicht die Ausführung von Perl-Skripts in einem eingebetteten Interpreter. Durch den persistenten, im Server eingebetteten Interpreter lassen sich Verzögerungen durch den Start eines externen Interpreters und den Start von Perl vermeiden.
Paketname: apache2-mod_perl
|
Konfigurationsdatei: /etc/apache2/conf.d/mod_perl.conf
|
Weitere Informationen: /usr/share/doc/packages/apache2-mod_perl
|
PHP ist eine serverseitige, plattformübergreifende, in HTML eingebettete Skriptsprache.
Paketname: apache2-mod_php5
|
Konfigurationsdatei: /etc/apache2/conf.d/php5.conf
|
Weitere Informationen: /usr/share/doc/packages/apache2-mod_php5
|
mod_python bettet Python in den Apache-Webserver ein. Dies bringt Ihnen einen erheblichen Leistungsgewinn und zusätzliche Flexibilität bei der Entwicklung webbasierter Anwendungen.
Paketname: apache2-mod_python
|
Weitere Informationen: /usr/share/doc/packages/apache2-mod_python
|
mod_ruby bettet den Ruby-Interpreter in den Apache-Webserver ein. Dadurch können Ruby CGI-Skripts in Originalversion ausgeführt werden. Diese Skripts werden mit mod_ruby wesentlich schneller ausgeführt.
Paketname: apache2-mod_ruby
|
Weitere Informationen: /usr/share/doc/packages/apache2-mod_ruby
|
Dieses Modul stellt Konnektoren zwischen Apache und einem Tomcat Servlet-Container bereit.
Paketname: mod_jk-ap20
|
Weitere Informationen: /usr/share/doc/packages/mod_jk-ap20
|
Apache kann von erfahrenen Benutzern durch selbst entwickelte Module erweitert werden. Für die Entwicklung eigener Apache-Module und für die Kompilierung von Drittanbieter-Modulen sind neben dem Paket apache2-devel
auch die entsprechenden Entwicklungstools erforderlich. apache2-devel
enthält unter anderem die apxs2-Tools, die zur Kompilierung von Apache-Erweiterungsmodulen erforderlich sind.
apxs2 ermöglicht die Kompilierung und Installation von Modulen aus dem Quellcode (einschließlich der erforderlichen Änderungen an den Konfigurationsdateien). Dadurch ergeben sich Dynamic Shared Objects (DSOs), die während der Laufzeit in Apache geladen werden können.
Die Binaries von apxs2 befinden sich unter /usr/sbin
:
/usr/sbin/apxs2
: Für die Entwicklung von Erweiterungsmodulen, die mit allen MPMs verwendbar sind. Die Module werden im Verzeichnis /usr/lib/apache2
installiert.
/usr/sbin/apxs2-prefork
: Für die Entwicklung von Prefork-MPM-Modulen. Die Module werden im Verzeichnis /usr/lib/apache2-prefork
installiert.
/usr/sbin/apxs2-worker
: Für die Entwicklung von Worker-MPM-Modulen.
Die von apxs2 installierten Module können für alle MPMs verwendet werden. Die anderen beiden Programme installieren ihre Module so, dass sie nur für die jeweiligen MPMs (also „Prefork“ bzw. „Worker“) verwendet werden können. apxs2 installiert seine Module in /usr/lib/apache2
. apxs2-prefork und apxs2-worker installieren ihre Module hingegen in /usr/lib/apache2-prefork
bzw. in /usr/lib/apache2-worker
.
Zur Installation und Aktivierung eines Moduls aus dem Quellcode verwenden Sie den Befehl cd /Pfad/der/Modulquelle; apxs2 -cia mod_foo
.c (-c
kompiliert das Modul, -i
installiert es und -a
aktiviert es). Alle weiteren Optionen von apxs2 werden auf der Manualpage apxs2(1)
beschrieben.