<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<!-- English Revision : 1602764 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manualpage metafile="mpm.xml.meta">
<title>Modules multi-processus (MPMs)</title>
<summary>
<p>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.</p>
</summary>
<section id="introduction"><title>Introduction</title>
<p>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.</p>
<p>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.</p>
<p>L'extension de la conception modulaire à ce niveau du serveur
comporte deux avantages importants :</p>
<ul>
<li>Apache httpd peut supporter plus proprement et efficacement une grande
variété de systèmes d'exploitation. En particulier, la version Windows
du serveur est maintenant beaucoup plus efficace, depuis que
<module>mpm_winnt</module> 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.</li>
<li>le serveur est plus à même de répondre aux besoins d'un site
particulier. Par exemple, les sites qui sont très sollicités peuvent
utiliser un MPM threadé comme
<module>worker</module> ou <module>event</module>, tandis que les sites
qui privilégient la stabilité ou la compatibilité avec des logiciels
plus anciens peuvent utiliser un module comme
<module>prefork</module>.</li>
</ul>
<p>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 <a href="mod/">l'index des
modules</a>.</p>
</section>
<section id="defaults"><title>MPM par défaut</title>
<p>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.</p>
<table border="1" style="zebra">
<columnspec><column width=".2"/><column width=".2"/></columnspec>
<tr><td>Netware</td><td><module>mpm_netware</module></td></tr>
<tr><td>OS/2</td><td><module>mpmt_os2</module></td></tr>
<tr><td>Unix</td><td><module>prefork</module>, <module>worker</module>,
ou <module>event</module>, selon les possibilités de la plate-forme</td></tr>
<tr><td>Windows</td><td><module>mpm_winnt</module></td></tr>
</table>
<note><p>Ici, 'Unix' sous-entend les systèmes d'exploitation de type
Unix, comme Linux, BSD, Solaris, Mac OS X, etc...</p></note>
<p>Dans le cas des systèmes d'exploitation de type Unix, le choix du MPM
à installer est orienté par deux questions :</p>
<p>1. Est-ce que le système supporte les threads ?</p>
<p>2. Est-ce que le système supporte le polling thread-safe (et en
particulier les fonctions kqueue et epoll) ?</p>
<p>Si la réponse aux deux questions est 'oui', le MPM par défaut sera
<module>event</module>.</p>
<p>Si la réponse à la première question est 'oui', et la réponse à la
deuxième 'non', le MPM par défaut sera <module>worker</module>.</p>
<p>Si la réponse aux deux questions est 'non', le MPM par défaut sera
<module>prefork</module>.</p>
<p>En pratique, cela signifie que le MPM par défaut sera presque
toujours <module>event</module> car tous les systèmes d'exploitation
modernes satisfont aux deux conditions.</p>
</section>
<section id="static"><title>Compiler un module MPM en tant que module
statique</title>
<p>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.</p>
<p>Pour choisir un module MPM autre que le MPM par défaut,
utiliser l'argument
<code>--with-mpm=<em>NOM</em></code> du script
<program>configure</program>. <em>NOM</em> est le nom
du MPM désiré.</p>
<p>Une fois le serveur compilé, il est possible de savoir quel MPM
Cette commande fournit la liste de tous les modules compilés
avec le serveur, y compris le MPM.</p>
</section>
<section id="dynamic"><title>Compiler un module MPM en tant que module
DSO (Dynamic Shared Object)</title>
<p>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 <directive
module="mod_so">LoadModule</directive> concernée, sans avoir à
recompiler le serveur.</p>
<highlight language="config">
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
</highlight>
<p>Toute tentative de charger plusieurs modules MPM via la directive
<directive module="mod_so">LoadModule</directive> empêchera le
serveur de démarrer et affichera l'erreur suivante :</p>
<example>AH00534: httpd: Configuration error: More than one MPM
loaded.</example>
<p>Cette fonctionnalité est activée via l'option
<code>--enable-mpms-shared</code> du script
<program>configure</program>. Si on ajoute l'argument
<code><em>all</em></code>, 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.</p>
<p>Le module MPM par défaut, sélectionné automatiquement ou spécifié
via l'option <code>--with-mpm</code> du script
<program>configure</program>, sera chargé via une directive
<directive module="mod_so">LoadModule</directive> du fichier de
configuration du serveur généré. Pour choisir un autre module MPM,
vous devrez donc modifier cette directive</p>
</section>
</manualpage>