1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>Arrêt et redémarrage du serveur HTTP Apache - Serveur Apache HTTP Version 2.5</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
12 <script src="./style/scripts/prettify.min.js" type="text/javascript">
15 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
18 <p class="apache">Serveur Apache HTTP Version 2.5</p>
19 <img alt="" src="./images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
22 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Arrêt et redémarrage du serveur HTTP Apache</h1>
24 <p><span>Langues Disponibles: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
25 <a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
26 <a href="./es/stopping.html" hreflang="es" rel="alternate" title="Español"> es </a> |
27 <a href="./fr/stopping.html" title="Français"> fr </a> |
28 <a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
29 <a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
30 <a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
33 <p>Ce document couvre l'arrêt et le redémarrage du
34 serveur HTTP Apache sur
35 les systèmes Unix et similaires. Les utilisateurs de Windows NT, 2000
36 and XP doivent consulter
37 <a href="platform/windows.html#winsvc">Exécuter httpd en tant que
38 service</a> et les utilisateurs de Windows 9x et ME doivent consulter
39 <a href="platform/windows.html#wincons">Exécuter httpd comme une
40 application de type console</a> pour plus d'informations sur le contrôle
41 de httpd à partir de ces plateformes.</p>
43 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Introduction</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#term">Arrêter immédiatement</a></li>
45 <li><img alt="" src="./images/down.gif" /> <a href="#graceful">Redémarrage en douceur</a></li>
46 <li><img alt="" src="./images/down.gif" /> <a href="#hup">Redémarrer immédiatement</a></li>
47 <li><img alt="" src="./images/down.gif" /> <a href="#gracefulstop">Arrêt en douceur</a></li>
48 </ul><h3>Voir aussi</h3><ul class="seealso"><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li><li><a href="invoking.html">Démarrage</a></li></ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
49 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
51 <h2><a name="introduction" id="introduction">Introduction</a></h2>
53 <p>Afin d'arrêter ou redémarrer le serveur HTTP Apache, vous devez envoyer un signal aux
54 processus <code class="program"><a href="./programs/httpd.html">httpd</a></code> en cours d'exécution. Les signaux
55 peuvent être envoyés de deux manières. Tout d'abord, vous pouvez
56 utiliser la commande unix <code>kill</code>
57 pour envoyer directement des signaux aux processus. Vous pouvez remarquer
58 que plusieurs processus <code class="program"><a href="./programs/httpd.html">httpd</a></code> s'exécutent sur votre
59 système, mais il vous suffit d'envoyer les signaux au processus parent,
60 dont le PID est enregistré dans le fichier précisé par la directive
61 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. Autrement dit, vous
62 n'aurez jamais besoin d'envoyer des signaux à aucun des
63 processus enfants, mais seulement au processus parent. Trois types
64 de signaux peuvent être envoyés au processus parent :
65 <code><a href="#term">TERM</a></code>,
66 <code><a href="#graceful">USR1</a></code>,
67 <code><a href="#hup">HUP</a></code>, et
68 <code><a href="#gracefulstop">WINCH</a></code>, qui
69 sera décrit plus loin.</p>
71 <p>Pour envoyer un signal au processus parent, vous devez entrer une commande
74 <div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
76 <p>La seconde méthode permettant d'envoyer des signaux aux processus
77 <code class="program"><a href="./programs/httpd.html">httpd</a></code>
78 consiste à utiliser les options de ligne de commande <code>-k</code> :
80 <code>restart</code>, <code>graceful</code> et <code>graceful-stop</code>,
81 comme décrit ci-dessous. Ce sont des arguments du binaire
82 <code class="program"><a href="./programs/httpd.html">httpd</a></code>, mais il est recommandé de les utiliser
83 avec le script de contrôle <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>, qui se
84 chargera de les passer à <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</p>
86 <p>Après avoir envoyé un signal à <code class="program"><a href="./programs/httpd.html">httpd</a></code>, vous pouvez
87 suivre le cours de son action en entrant :</p>
89 <div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
91 <p>Adaptez ces exemples en fonction de la définition de vos directives
92 <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> et
93 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>.</p>
94 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
96 <h2><a name="term" id="term">Arrêter immédiatement</a></h2>
98 <dl><dt>Signal: TERM</dt>
99 <dd><code>apachectl -k stop</code></dd>
102 <p>A la réception du signal <code>TERM</code> ou <code>stop</code>,
103 le processus parent tente immédiatement
104 de tuer tous ses processus enfants. Cela peut durer plusieurs secondes.
105 Après cela, le processus parent lui-même se termine. Toutes les requêtes
106 en cours sont terminées, et plus aucune autre n'est traitée.</p>
107 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
108 <div class="section">
109 <h2><a name="graceful" id="graceful">Redémarrage en douceur</a></h2>
111 <dl><dt>Signal: USR1</dt>
112 <dd><code>apachectl -k graceful</code></dd>
115 <p>A la réception du signal <code>USR1</code> ou
116 <code>graceful</code>, le
117 processus parent envoie aux processus enfants
118 <em>l'ordre</em> de se terminer une fois leur requête courante
119 traitée (ou de se terminer immédiatement s'ils n'ont plus rien à traiter).
120 Le processus parent relit ses fichiers de configuration et
121 réouvre ses fichiers de log. Chaque fois qu'un enfant s'éteint, le
122 processus parent le remplace par un processus
123 enfant de la nouvelle <em>génération</em> de la
124 configuration, et celui-ci commence immédiatement à traiter les
125 nouvelles requêtes.</p>
127 <p>Ce code est conçu pour toujours respecter la directive de contrôle
128 de processus des modules MPMs, afin que les nombres de processus et de
130 disponibles pour traiter les demandes des clients soient maintenus à
131 des valeurs appropriées tout au long du processus de démarrage.
132 En outre, il respecte la directive
133 <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> de la manière
134 suivante : si après une seconde au moins <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> nouveaux processus
135 enfants n'ont pas été créés, un nombre suffisant de processus
136 supplémentaires est créé pour combler le manque. Ainsi le code
137 tente de maintenir à la fois le nombre approprié de processus enfants
138 en fonction de la charge du serveur, et vos souhaits définis par la
139 directive <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>.</p>
141 <p>Les utilisateurs du module <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
142 noteront que les statistiques du serveur ne sont <strong>pas</strong>
143 remises à zéro quand un signal <code>USR1</code> est envoyé. Le code
144 a été conçu à la fois pour minimiser la durée durant laquelle le
145 serveur ne peut pas traiter de nouvelles requêtes (elle sont mises en
146 file d'attente par le système d'exploitation, et ne sont ainsi jamais
147 perdues) et pour respecter vos paramètres de personnalisation.
148 Pour y parvenir, il doit conserver le
149 <em>tableau</em> utilisé pour garder la trace de tous les processus
150 enfants au cours des différentes générations.</p>
152 <p>Dans son état des processus,
153 le module status utilise aussi un <code>G</code> afin d'indiquer
154 quels processus enfants ont encore des traitements de requêtes en cours
155 débutés avant que l'ordre graceful restart ne soit donné.</p>
157 <p>Pour l'instant, il est impossible pour un script de rotation
159 <code>USR1</code> de savoir de manière certaine si tous les processus
160 enfants inscrivant des traces de pré-redémarrage sont terminés.
161 Nous vous suggérons d'attendre un délai suffisant après l'envoi du
162 signal <code>USR1</code>
163 avant de faire quoi que ce soit avec les anciens logs. Par exemple,
164 si la plupart de vos traitements durent moins de 10 minutes pour des
165 utilisateurs empruntant des liaisons à faible bande passante, alors vous
166 devriez attendre 15 minutes avant de faire quoi que ce soit
167 avec les anciens logs.</p>
170 <p>Lorsque vous initiez un redémarrage, une vérification de
171 la syntaxe est tout d'abord effectuée, afin de s'assurer qu'il n'y a
172 pas d'erreurs dans les fichiers de configuration. Si votre fichier de
173 configuration comporte des erreurs de syntaxe, vous recevrez un message
174 d'erreur les concernant, et le serveur refusera de redémarrer. Ceci
175 permet d'éviter la situation où un serveur a
176 été arrêté et ne peut plus redémarrer,
177 et où vous vous retrouvez avec un serveur hors-service.</p>
179 <p>Ceci ne garantit pas encore que le serveur va redémarrer
180 correctement. Pour vérifier la sémantique des fichiers de configuration
181 en plus de leur syntaxe, vous pouvez essayer de démarrer
182 <code class="program"><a href="./programs/httpd.html">httpd</a></code> sous un utilisateur non root.
183 S'il n'y a pas d'erreurs, il tentera d'ouvrir ses sockets et ses fichiers
184 de log et échouera car il n'a pas les privilèges root (ou parce que
185 l'instance actuelle de
186 <code class="program"><a href="./programs/httpd.html">httpd</a></code> est déjà associée à ces ports). S'il échoue
187 pour toute autre raison, il y a probablement une erreur dans le
188 fichier de configuration et celle-ci doit être corrigée avant de lancer
189 le redémarrage en douceur.</p></div>
190 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
191 <div class="section">
192 <h2><a name="hup" id="hup">Redémarrer immédiatement</a></h2>
194 <dl><dt>Signal: HUP</dt>
195 <dd><code>apachectl -k restart</code></dd>
198 <p>A la réception du signal <code>HUP</code> ou
199 <code>restart</code>, le
200 processus parent tue ses processus enfants comme pour le signal
201 <code>TERM</code>, mais le processus parent ne se termine pas.
202 Il relit ses fichiers de configuration, et réouvre ses fichiers de log.
203 Puis il donne naissance à un nouveau jeu de processus enfants
204 et continue de traiter les requêtes.</p>
206 <p>Les utilisateurs du module <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
207 noteront que les statistiques du serveur sont remises à zéro quand un
208 signal <code>HUP</code> est envoyé.</p>
210 <div class="note">Comme dans le cas d'un redémarrage "graceful", une
211 vérification de la syntaxe est effectuée avant que le
212 redémarrage ne soit tenté. Si votre fichier de configuration comporte
213 des erreurs de syntaxe, le redémarrage ne sera pas effectué, et
214 vous recevrez un message concernant ces erreurs.</div>
215 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
216 <div class="section">
217 <h2><a name="gracefulstop" id="gracefulstop">Arrêt en douceur</a></h2>
219 <dl><dt>Signal : WINCH</dt>
220 <dd><code>apachectl -k graceful-stop</code></dd>
223 <p>A la réception du signal <code>WINCH</code> ou
224 <code>graceful-stop</code>, le
225 processus parent <em>avise</em> ses processus enfants
226 de s'arrêter après le traitement de leur requête en cours
227 (ou de s'arrêter immédiatement s'ils n'ont plus de requête à traiter).
228 Le processus parent va alors supprimer son fichier
229 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> et cesser l'écoute
230 de tous ses ports. Le processus parent va continuer à s'exécuter,
231 et va surveiller les processus enfants
232 qui ont encore des requêtes à traiter. Lorsque tous les processus enfants
233 ont terminé leurs traitements et se sont arrêtés ou lorsque le délai
234 spécifié par la directive <code class="directive"><a href="./mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code> a été atteint,
235 le processus parent s'arrêtera à son tour. Si ce délai est atteint,
236 tout processus enfant encore en cours d'exécution se verra envoyer
237 le signal <code>TERM</code>
238 afin de le forcer à s'arrêter.</p>
240 <p>L'envoi du signal <code>TERM</code> va arrêter immédiatement
241 les processus parent et enfants en état "graceful". Cependant,
242 comme le fichier <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>
243 aura été supprimé, vous ne pourrez pas utiliser
244 <code>apachectl</code> ou <code>httpd</code> pour envoyer ce signal.</p>
246 <div class="note"><p>Le signal <code>graceful-stop</code> vous permet d'exécuter
247 simultanément plusieurs instances de <code class="program"><a href="./programs/httpd.html">httpd</a></code>
248 avec des configurations identiques. Ceci s'avère une fonctionnalité
249 puissante quand vous effectuez des mises à jour "en douceur"
250 de httpd ; cependant, cela peut aussi causer des blocages fatals et des
251 situations de compétition (race conditions)
252 avec certaines configurations.</p>
254 <p>On a pris soin de s'assurer que les fichiers sur disque
255 comme les fichiers verrou (<code class="directive"><a href="./mod/core.html#mutex">Mutex</a></code>) et les fichiers socket Unix
256 (<code class="directive"><a href="./mod/mod_cgid.html#scriptsock">ScriptSock</a></code>) contiennent le PID
257 du serveur, et coexistent sans problème. Cependant, si une directive de
258 configuration, un module tiers ou une CGI résidente utilise un autre
259 verrou ou fichier d'état sur disque, il faut prendre soin de s'assurer
260 que chaque instance de <code class="program"><a href="./programs/httpd.html">httpd</a></code> qui s'exécute
261 n'écrase pas les fichiers des autres instances.</p>
263 <p>Vous devez aussi prendre garde aux autres situations de compétition,
264 comme l'utilisation de l'enregistrement des logs avec un transfert de ceux-ci
265 dans le style <code class="program"><a href="./programs/rotation des logs.html">rotation des logs</a></code>. Plusieurs instances
266 du programme de <code class="program"><a href="./programs/rotation des logs.html">rotation des logs</a></code> qui tentent d'effectuer
267 une rotation des mêmes fichiers de log en même temps peuvent détruire
268 mutuellement leurs propres fichiers de log.</p></div>
270 <div class="bottomlang">
271 <p><span>Langues Disponibles: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
272 <a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
273 <a href="./es/stopping.html" hreflang="es" rel="alternate" title="Español"> es </a> |
274 <a href="./fr/stopping.html" title="Français"> fr </a> |
275 <a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
276 <a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
277 <a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
278 </div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
279 <script type="text/javascript"><!--//--><![CDATA[//><!--
280 var comments_shortname = 'httpd';
281 var comments_identifier = 'http://httpd.apache.org/docs/trunk/stopping.html';
283 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
284 d.write('<div id="comments_thread"><\/div>');
285 var s = d.createElement('script');
286 s.type = 'text/javascript';
288 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
289 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
292 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
294 })(window, document);
295 //--><!]]></script></div><div id="footer">
296 <p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
297 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
298 if (typeof(prettyPrint) !== 'undefined') {