| <?xml version="1.0" encoding="ISO-8859-1" ?> |
| <!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 : 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 |
| |
| 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_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> |