| <?xml version="1.0" ?> | |
| <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?> | |
| <!-- French translation : Lucien GENTIS --> | |
| <!-- Reviewed by : Vincent Deffontaines --> | |
| <!-- English Revision: 1935407:1939372 (outdated) --> | |
| <!-- | |
| 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 | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| 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 | |
| a été choisi à l'aide de la commande <code>./httpd -l</code>. | |
| 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_event_module modules/mod_mpm_event.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> |