Le logiciel Apache a été conçu de façon modulaire : toutes les fonctionnalités excepté certaines tâches principales sont gérées par des modules. Cela s'est tellement développé que même HTTP est traité par un module (http_core).
Les modules d'Apache peuvent être compilés dans le fichier binaire d'Apache lors de la génération ou chargés de façon dynamique lors de l'exécution. Reportez-vous à la Section 26.4.2, « Activation et désactivation » pour plus de détails sur le chargement dynamique des modules.
Les modules d'Apache se répartissent en quatre catégories différentes :
Les modules de base sont compilés dans Apache par défaut. Dans Apache pour SUSE Linux, ne sont compilés que les modules mod_so (nécessaire pour charger les autres modules) et http_core. Tous les autres sont disponibles en tant qu'objets partagés : plutôt que d'être inclus dans le binaire du serveur lui-même, ils peuvent être inclus lors de l'exécution.
En général, les modules libellés comme des extensions sont inclus dans le paquetage logiciel d'Apache, mais ne sont généralement pas compilés dans le serveur de façon statique. Dans SUSE Linux, ils sont disponibles en tant qu'objets partagés pouvant être chargés dans Apache lors de l'exécution.
Les modules baptisés externes ne sont pas inclus dans la distribution officielle d'Apache. SUSE Linux en fournit plusieurs qui sont prêts à l'usage.
Le rôle des MPM est d'accepter et de gérer les requêtes au serveur Web. Ils représentent le noyau du logiciel serveur Web.
Si vous avez respecté la méthode par défaut d'installation d'Apache (décrite à la Section 26.1.2, « installation »), il est installé avec tous les modules de base et d'extension, le module de multitraitement Prefork MPM et le module externe PHP5.
Vous pouvez installer des modules externes supplémentaires en démarrant YaST et en choisissant +. À présent, choisissez + et recherchez apache. Parmi d'autres paquetages, la liste de résultats contient tous les modules externes d'Apache disponibles.
Avec YaST, vous pouvez activer ou désactiver les modules de langage de script (PHP5, Perl, Python et Ruby) avec la configuration de module décrite à Section 26.2.2.1, « Assistant (wizard) serveur HTTP ». Tous les autres modules peuvent être activés ou désactivés comme décrit à Section 26.2.2.2.2, « Modules de serveur ».
Si vous préférez activer ou désactiver les modules manuellement, utilisez respectivement les commandes a2enmod mod_foo ou a2dismod mod_foo. a2enmod -l fournit la liste de tous les modules actuellement actifs.
![]() | inclusion des fichiers de configuration des modules externes |
|---|---|
Si vous avez activé des modules externes manuellement, assurez-vous de charger leurs fichiers de configuration dans toutes les configurations de l'hôte virtuel. Les fichiers de configuration des modules externes se trouvent sous | |
Tous les modules de base et d'extension sont décrits en détail dans la documentation d'Apache. Seule une brève description des modules les plus importants est disponible ici. Reportez-vous à http://httpd.apache.org/docs/2.2/mod/ pour en savoir plus sur chaque module.
Fournit les directives Alias et Redirect avec lesquelles vous pouvez assigner une URl à un répertoire spécifique (Alias) ou redirige une URL demandée vers un autre emplacement. Ce module est activé par défaut.
Les modules d'authentification offrent différentes méthodes d'authentification : l'authentification de base avec mod_auth_basic ou l'authentification avancée (digest) avec mod_auth_digest. L'authentification avancée dans Apache 2.2 est considérée comme expérimentale.
Les modules mod_auth_basic et mod_auth_digest doivent être combinés à un module de fournisseur d'authentification, mod_authn_* (par exemple, mod_authn_file pour l'authentification de texte basée sur des fichiers) et avec un module d'autorisation mod_authz_* (par exemple, mod_authz_user pour l'autorisation des utilisateurs).
Vous trouverez de plus amples informations à ce sujet dans les « procédures d'authentification », à l'adresse http://httpd.apache.org/docs/2.2/howto/auth.html.
Autoindex génère des listes de répertoires en l'absence de fichiers d'index (par exemple, index.html). L'apparence de ces index est configurable. Ce module est activé par défaut. Toutefois, les listes de répertoires sont désactivées par défaut via la directive Options ; remplacez ce paramètre dans la configuration de votre hôte virtuel. Le fichier de configuration par défaut de ce module se trouve dans /etc/apache2/mod_autoindex-defaults.conf.
mod_cgi est nécessaire pour exécuter les scripts CGI. Ce module est activé par défaut.
Avec ce module, Apache peut être configuré pour compresser des types de fichiers donnés à la volée avant de les fournir.
mod_dir fournit la directive DirectoryIndex avec laquelle vous pouvez configurer les fichiers qui sont automatiquement distribués lorsqu'un répertoire est demandé (index.html par défaut). Il fournit également une redirection automatique vers l'URl correcte lorsqu'une demande de répertoire ne contient pas de barre oblique finale. Ce module est activé par défaut.
Avec mod_expires, vous pouvez contrôler la fréquence selon laquelle les caches du proxy et du navigateur rafraîchissent vos documents en envoyant un en-tête Expires. Ce module est activé par défaut.
mod_include permet d'utiliser les inclusions côté serveur (SSI), qui offrent des fonctionnalités de base pour générer des pages HTML de façon dynamique. Ce module est activé par défaut.
Fournit une présentation complète de la configuration du serveur sous http://localhost/server-info/. Pour des raisons de sécurité, il est conseillé de toujours limiter l'accès à cette URL. Par défaut, seul localhost est autorisé à accéder à cette URL. mod_info est configuré dans /etc/apache2/mod_info.conf
Avec ce module, vous pouvez configurer l'apparence des fichiers journaux d'Apache. Ce module est activé par défaut.
Le module mime s'assure qu'un fichier est livré avec l'en-tête MIME en fonction de l'extension de son nom (par exemple text/html pour les documents HTML). Ce module est activé par défaut.
Nécessaire pour la négociation de contenu. Pour plus d'information, reportez-vous à http://httpd.apache.org/docs/2.2/content-negotiation.html. Ce module est activé par défaut.
Fournit la fonctionnalité de mod_alias, mais avec davantage de fonctions et de souplesse. Avec mod_rewrite, vous pouvez rediriger des URL selon plusieurs règles, en-têtes de requête, etc.
mod_speling tente de corriger automatiquement les erreurs typographiques des URL, notamment les erreurs de capitalisation.
Permet le codage des connexions entre le serveur Web et les clients. Pour plus de détails, reportez-vous à la Section 26.6, « Configuration d'un serveur Web sécurisé avec SSL ». Ce module est activé par défaut.
Fournit des informations sur l'activité du serveur et les performances, sous http://localhost/server-status/. Pour des raisons de sécurité, il est conseillé de toujours limiter l'accès à cette URL. Par défaut uniquement localhost est autorisé à accéder à cette URI. mod_status est configuré dans /etc/apache2/mod_status.conf.
mod_suexec permet d'exécuter des scripts CGI sous un utilisateur et un groupe différents. Ce module est activé par défaut.
Active des répertoires selon les utilisateurs disponibles sous ~. La directive user/UserDir doit être spécifiée dans la configuration. Ce module est activé par défaut.
SUSE Linux offre deux modules de multitraitement différents (MPM) utilisables avec Apache.
Les modules prefork MPM implémentent un serveur Web preforking sans thread. De ce fait, le serveur Web se comporte de façon semblable à la version 1.x d'Apache en ce qu'il isole chaque requête et la gère en dupliquant un processus enfant séparé. Ainsi les requêtes problématiques n'ont-elles pas d'incidence sur les autres, ce qui évite de verrouiller le serveur Web.
Tout en apportant de la stabilité avec cette approche basée sur les processus, le module prefork MPM consomme davantage de ressources système que son équivalent, le module worker MPM. Le module prefork MPM est considéré comme le MPM par défaut pour les systèmes d'exploitation de type Unix.
![]() | les MPM dans ce document |
|---|---|
Ce document suppose qu'Apache est utilisé avec le module prefork MPM. | |
Le module worker MPM offre un serveur Web multithread. Un thread est une forme « plus légère » de processus. L'avantage d'un thread sur un processus tient à sa plus faible consommation de ressources. Plutôt que de ne dupliquer que les processus enfants, le module worker MPM sert les requêtes en utilisant des threads avec des processus serveur. Les processus enfant pré-dupliqués sont multithread. Cette approche améliore les performances d'Apache en consommant moins de ressources système que le module prefork MPM.
L'un des inconvénients majeurs est la stabilité du module worker MPM : si un thread est endommagé, tous les threads d'un processus peuvent être affectés. Dans le pire des cas, il peut en résulter le blocage du serveur. En particulier, lorsqu'on utilise CGI (Common Gateway Interface) avec Apache sous une charge importante, des erreurs internes du serveur peuvent se produire du fait que des threads ne peuvent communiquer avec les ressources système. Un autre argument en défaveur de l'utilisation du module worker MPM avec Apache est que tous les modules Apache disponibles ne sont pas thread-safe et ne peuvent donc pas être utilisé conjointement avec ce module.
![]() | utilisation de modules PHP avec les MPM |
|---|---|
Tous les modules PHP disponibles ne sont pas thread-safe. L'utilisation du module worker MPM avec mod_php est vivement déconseillée. | |
Vous trouverez ici la liste de tous les modules externes livrés avec SUSE Linux. Vous trouverez la documentation du module dans le répertoire indiqué.
FastCGI est une extension de CGI indépendante du langage, évolutive et ouverte, qui offre de hautes performances sans les limitations d'API dépendant du serveur. Les applications FastCGI sont très rapides car elles sont persistantes. Il n'y a pas de surcharge de démarrage et d'initialisation par requête.
Nom du paquetage : apache2-mod_fastcgi
|
Fichier de configuration : /etc/apache2/conf.d/mod_fastcgi.conf
|
Plus d'informations : /usr/share/doc/packages/apache2-mod_fastcgi
|
mod_perl permet d'exécuter des scripts Perl dans un interpréteur incorporé. L'interpréteur persistant incorporé dans le serveur évite la surcharge de démarrage d'un interpréteur externe et la pénalisation du temps de démarrage de Perl.
Nom du paquetage : apache2-mod_perl
|
Fichier de configuration : /etc/apache2/conf.d/mod_perl.conf
|
Plus d'informations : /usr/share/doc/packages/apache2-mod_perl
|
PHP est un langage de script HTML incorporé inter-plates-formes du côté du serveur.
Nom du paquetage : apache2-mod_php5
|
Fichier de configuration : /etc/apache2/conf.d/php5.conf
|
Plus d'informations : /usr/share/doc/packages/apache2-mod_php5
|
mod_python permet l'incorporation de Python au sein du serveur Apache HTTP avec une amélioration considérable des performances et l'apport d'une souplesse de conception des applications basées sur le Web.
Nom du paquetage : apache2-mod_python
|
Plus d'informations : /usr/share/doc/packages/apache2-mod_python
|
mod_ruby incorpore l'interpréteur Ruby dans le serveur Web Apache, pour permettre l'exécution des scripts Ruby CGI en mode natif. Ces scripts démarrent beaucoup plus vite que sans mod_ruby.
Nom du paquetage : apache2-mod_ruby
|
Plus d'informations : /usr/share/doc/packages/apache2-mod_ruby
|
Ce module fournit des connecteurs entre Apache et un conteneur Tomcat Servlet.
Nom du paquetage : mod_jk-ap20
|
Plus d'informations : /usr/share/doc/packages/mod_jk-ap20
|
Apache peut être enrichi par des utilisateurs avancés en écrivant des modules personnalisés. Pour développer des modules pour Apache ou compiler des modules tiers, le paquetage apache2-devel est nécessaire, ainsi que les outils de développement correspondants. apache2-devel contient également les outils apxs2, nécessaires pour compiler des modules supplémentaires pour Apache.
apxs2 permet la compilation et l'installation des modules à partir du code source (avec les modifications requises des fichiers de configuration), qui crée des objets partagés de façon dynamique (DSO - dynamic shared object) pouvant être chargés dans Apache lors de l'exécution.
Les fichiers binaires apxs2 se trouvent sous /usr/sbin :
/usr/sbin/apxs2—permet de créer un module d'extension fonctionnant avec n'importe quel MPM. L'emplacement d'installation est /usr/lib/apache2.
/usr/sbin/apxs2-prefork—adapté aux modules prefork MPM. L'emplacement d'installation est /usr/lib/apache2-prefork.
/usr/sbin/apxs2-worker—adapté aux modules worker MPM.
apxs2 installe les modules pour les rendre utilisables pour tous les MPM. Les deux autres programmes installent les modules afin qu'ils soient utilisables seulement pour leurs MPM respectifs. apxs2 installe les modules dans /usr/lib/apache2, apxs2-prefork et apxs2-worker installe les modules dans /usr/lib/apache2-prefork ou /usr/lib/apache2-worker.
Installez et activez un module à partir du code source avec les commandes cd /path/to/module/source; apxs2 -cia mod_foo.c (-c compile le module, -i l'installe, et -a l'active). D'autres options de apxs2 sont décrites dans la page de manuel apxs2(1).