Serveur Apache HTTP Version 2.4
Ce document d�crit ce qu'est un Module Multi-Processus, ainsi que la mani�re dont ces modules sont utilis�s par le serveur HTTP Apache.
La conception du serveur HTTP Apache en fait un serveur web puissant et flexible pouvant fonctionner sur une tr�s grande vari�t� de plateformes et toute une gamme d'environnements diff�rents. Plateformes diff�rentes et environnements diff�rents signifient souvent fonctionnalit�s diff�rentes, ou utilisation de diff�rentes m�thodes pour impl�menter la m�me fonctionnalit� le plus efficacement possible. Apache httpd s'est toujours accomod� d'une grande vari�t� d'environnements gr�ce � sa conception modulaire. Cette conception autorise le webmaster � choisir quelles fonctionnalit�s seront incluses dans le serveur en s�lectionnant les modules � charger soit � la compilation, soit � l'ex�cution.
Le serveur HTTP Apache 2.0 a �tendu cette conception modulaire aux fonctions les plus �l�mentaires d'un serveur web. Le serveur est fourni avec une vari�t� de Modules Multi-Processus (MPMs) qui sont responsables de l'association aux ports r�seau de la machine, acceptent les requ�tes, et se chargent de r�partir ces derni�res entre les diff�rents processus enfants.
L'extension de la conception modulaire � ce niveau du serveur comporte deux avantages importants :
mpm_winnt
peut utiliser les fonctionnalit�s r�seau
natives � la place de la couche POSIX utilis�e par
Apache httpd 1.3. Cet avantage s'�tend aussi aux syst�mes d'exploitation
qui impl�mentent des MPMs sp�cialis�s.worker
ou event
, tandis que les sites
qui privil�gient la stabilit� ou la compatibilit� avec des logiciels
plus anciens peuvent utiliser un module comme
prefork
.Du point de vue de l'utilisateur, les MPMs ne sont pas diff�rents des autres modules Apache httpd. La principale diff�rence r�side dans le fait qu'un et un seul MPM � la fois doit �tre charg� lorsque le serveur s'ex�cute. La liste des MPMs disponibles est fournie dans l'index des modules.
La table suivante fournit la liste des MPMs par d�faut pour divers syst�mes d'exploitation. Il s'agit du MPM qui sera utilis� si vous n'en sp�cifiez pas un autre � la compilation.
Netware | mpm_netware |
OS/2 | mpmt_os2 |
Unix | prefork , worker ,
ou event , selon les possibilit�s de la plate-forme |
Windows | mpm_winnt |
Ici, 'Unix' sous-entend les syst�mes d'exploitation de type Unix, comme Linux, BSD, Solaris, Mac OS X, etc...
Dans le cas des syst�mes d'exploitation de type Unix, le choix du MPM � installer est orient� par deux questions :
1. Est-ce que le syst�me supporte les threads ?
2. Est-ce que le syst�me supporte le polling thread-safe (et en particulier les fonctions kqueue et epoll) ?
Si la r�ponse aux deux questions est 'oui', le MPM par d�faut sera
event
.
Si la r�ponse � la premi�re question est 'oui', et la r�ponse � la
deuxi�me 'non', le MPM par d�faut sera worker
.
Si la r�ponse aux deux questions est 'non', le MPM par d�faut sera
prefork
.
En pratique, cela signifie que le MPM par d�faut sera presque
toujours event
car tous les syst�mes d'exploitation
modernes satisfont aux deux conditions.
Les modules MPM peuvent �tre compil�s en tant que modules statiques sur toutes les plates-formes. A la compilation d'Apache, un seul module MPM doit �tre choisi pour �tre compil� et li� avec le serveur. La recompilation du serveur sera donc n�cessaire si vous souhaitez changer de module MPM.
Pour choisir un module MPM autre que le MPM par d�faut,
utiliser l'argument
--with-mpm=NOM
du script
configure
. NOM est le nom
du MPM d�sir�.
Une fois le serveur compil�, il est possible de savoir quel MPM
a �t� choisi � l'aide de la commande ./httpd -l
.
Cette commande fournit la liste de tous les modules compil�s
avec le serveur, y compris le MPM.
Sous Unix et les plates-formes similaires, les modules MPM
peuvent �tre compil�s en tant que modules DSO et charg�s
dynamiquement dans le serveur comme tout module DSO. Compiler les
modules MPM en tant que modules DSO permet de changer de MPM en
modifiant la directive LoadModule
concern�e, sans avoir �
recompiler le serveur.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Toute tentative de charger plusieurs modules MPM via la directive
LoadModule
emp�chera le
serveur de d�marrer et affichera l'erreur suivante :
AH00534: httpd: Configuration error: More than one MPM
loaded.
Cette fonctionnalit� est activ�e via l'option
--enable-mpms-shared
du script
configure
. Si on ajoute l'argument
all
, tous les modules MPM disponibles sur la
plate-forme consid�r�e seront install�s. Cet argument peut aussi
contenir une liste de modules MPM � installer.
Le module MPM par d�faut, s�lectionn� automatiquement ou sp�cifi�
via l'option --with-mpm
du script
configure
, sera charg� via une directive
LoadModule
du fichier de
configuration du serveur g�n�r�. Pour choisir un autre module MPM,
vous devrez donc modifier cette directive