26.4. Installation, activation et configuration de modules

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 :

Modules de base

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.

Modules d'extension

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.

Modules externes

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.

Modules de multitraitement

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.

26.4.1. Installation des modules

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 Logiciels+Installer et supprimer des logiciels. À présent, choisissez Filtre+Recherche et recherchez apache. Parmi d'autres paquetages, la liste de résultats contient tous les modules externes d'Apache disponibles.

26.4.2. Activation et désactivation

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.

[Important]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 /etc/apache2/conf.d/ et ne sont pas chargés par défaut. Si vous avez besoin des mêmes modules sur chaque hôte virtuel, vous pouvez inclure *.conf à partir de ce répertoire. Sinon, incluez des fichiers individuels. Vous trouverez des exemples dans /etc/apache2/vhost.d/vhost.template.

26.4.3. Modules de base et d'extension

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.

mod_alias

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.

mod_auth*

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.

mod_autoindex

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

mod_cgi est nécessaire pour exécuter les scripts CGI. Ce module est activé par défaut.

mod_deflate

Avec ce module, Apache peut être configuré pour compresser des types de fichiers donnés à la volée avant de les fournir.

mod_dir

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.

mod_expires

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

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.

mod_info

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

mod_log_config

Avec ce module, vous pouvez configurer l'apparence des fichiers journaux d'Apache. Ce module est activé par défaut.

mod_mime

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.

mod_negotiation

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.

mod_rewrite

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

mod_speling tente de corriger automatiquement les erreurs typographiques des URL, notamment les erreurs de capitalisation.

mod_ssl

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.

mod_status

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

mod_suexec permet d'exécuter des scripts CGI sous un utilisateur et un groupe différents. Ce module est activé par défaut.

mod_userdir

Active des répertoires selon les utilisateurs disponibles sous ~user/. La directive UserDir doit être spécifiée dans la configuration. Ce module est activé par défaut.

26.4.4. Modules de multitraitement

SUSE Linux offre deux modules de multitraitement différents (MPM) utilisables avec Apache.

26.4.4.1. Module prefork MPM

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.

[Important]les MPM dans ce document

Ce document suppose qu'Apache est utilisé avec le module prefork MPM.

26.4.4.2. Module worker 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.

[Warning]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.

26.4.5. Modules externes

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

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

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
mod_php5

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

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

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
mod_jk-ap20

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

26.4.6. Compilation

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).