Die Apache-Software ist modular aufgebaut. Alle Funktionen außer einigen Kernaufgaben werden von Modulen durchgeführt 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 28.4.2, „Aktivieren und Deaktivieren von Modulen“.
Apache-Module lassen sich in vier Kategorien einteilen:
Basismodule sind standardmäßig in Apache enthalten. In Apache in SUSE Linux sind nur mod_so (zum Laden anderer Module) und http_core kompiliert. Alle anderen Module sind als gemeinsam genutzte Objekte verfügbar: Sie sind nicht in der Server-Binärdatei enthalten, sondern können zur Laufzeit eingebunden werden.
Im Allgemeinen sind Erweiterungsmodule im Apache-Softwarepaket enthalten, jedoch nicht statisch im Server kompiliert. In openSUSE 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. openSUSE 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 28.1.2, „Installation“), wird Apache mit allen Basis- und Erweiterungsmodulen sowie dem Multiprocessing-Modul Prefork und den externen Modulen mod_php5 und mod_python installiert.
Sie können 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 28.2.2.1, „HTTP-Server-Wizard“ beschriebenen Modulkonfiguration aktivieren oder deaktivieren. Alle anderen Module werden, wie im Abschnitt Abschnitt 28.2.2.2.2, „Servermodule“ beschrieben, aktiviert oder deaktiviert.
Manuell können Sie die Module mit den Befehlen a2enmod mod_foo
oder 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/.
Bietet Methoden zur Ausführung eines Skripts, wenn ein bestimmter MIME-Typ (z. B. application/pdf
), eine Datei mit einer bestimmten Erweiterung (z. B. .rpm
) oder eine bestimmte Anforderungsmethode (z. B. GET
) verlangt wird. Dieses Modul ist standardmäßig aktiviert.
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 bieten verschiedene Methoden zur Authentifzierung: grundlegende Authentifzierung mit mod_auth_basic oder 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 müssen gemeinsam mit einem Authentifizierungsanbietermodul mod_authn_* (z. B. mod_authn_file für die Authentifizierung auf Basis einer Textdatei) und einem Autorisierungsmodul mod_authz_* (z. B. mod_authz_user für die Benutzerautorisierung) verwendet werden.
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. Verzeichnislisten sind jedoch 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-Skripten 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.
Steuert die Umgebungsvariablen, die an CGI-Skripten oder SSI-Seiten übergeben werden. Sie können Umgebungsvariablen festlegen oder aufheben oder von der Shell übergeben, die den httpd-Prozess aufgerufen hat. 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.
Legt Umgebungsvariablen auf der Basis von Details aus der Client-Anforderung fest, z. B. die Browserzeichenfolge, die der Client sendet, oder die IP-Adresse des Clients. Dieses Modul ist standardmäßig aktiviert.
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 Informationen finden Sie in Abschnitt 28.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-Skripten 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.
openSUSE 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 verteilt (Multithreading). Diese Ansatzweise macht den Apache-Server durch den geringeren Ressourcenkonsum leistungsfähiger als mit dem Prefork-MPM.
Ein Hauptnachteil ist die Instabilität des Worker-MPM: Ein fehlerhafter Thread kann sich auf alle Threads eines 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 openSUSE ausgeliefert werden. Die Dokumentation zu den einzelnen Modulen finden Sie in den jeweils genannten Verzeichnissen.
Unterstützt Apache bei der Novell AppArmor-Einschränkung auf einzelne cgi-Skripten, die von Modulen wie mod_php5 und mod_perl benutzt werden.
Paketname: apache2-mod_apparmor |
Weitere Informationen: Novell AppArmor Administration Guide (↑Novell AppArmor Administration Guide) |
Mithilfe von mod_mono können Sie ASP.NET-Seiten auf Ihrem Server ausführen.
Paketname: apache2-mod_mono |
Konfigurationsdatei: /etc/apache2/conf.d/mod_mono.conf |
mod_perl ermöglicht die Ausführung von Perl-Skripten in einem eingebetteten Interpreter. Durch den dauerhaften, 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_tidy überprüft jede Ausgangs-HTML-Seite mithilfe der TidyLib. Im Falle eines Bestätigungsfehlers wird eine Seite mit einer Fehlerliste ausgegeben. Andernfalls wird die Original-HTML-Seite ausgegeben.
Paketname: apache2-mod_tidy |
Konfigurationsdatei: /etc/apache2/mod_tidy.conf |
Weitere Informationen: /usr/share/doc/packages/apache2-mod_tidy |
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 geeignet. Die Module werden im Verzeichnis /usr/lib/apache2-prefork
installiert.
/usr/sbin/apxs2-worker
: Für die Entwicklung von Worker-MPM-Modulen geeignet. Die Module werden im Verzeichnis /usr/lib/apache2-worker
installiert.
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.