]> granicus.if.org Git - apache/blob - docs/manual/stopping.xml.fr
mark async websockets tunnel stuff as experimental
[apache] / docs / manual / stopping.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- French translation : Lucien GENTIS -->
5 <!-- Reviewed by : Vincent Deffontaines -->
6 <!-- English Revision : 1174747 -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="stopping.xml.meta">
26
27   <title>Arr&ecirc;t et red&eacute;marrage du serveur HTTP Apache</title>
28
29 <summary>
30     <p>Ce document couvre l'arr&ecirc;t et le red&eacute;marrage du
31     serveur HTTP Apache sur
32     les syst&egrave;mes Unix et similaires. Les utilisateurs de Windows NT, 2000
33     and XP doivent consulter
34     <a href="platform/windows.html#winsvc">Ex&eacute;cuter httpd en tant que
35     service</a> et les utilisateurs de Windows 9x et ME doivent consulter
36     <a href="platform/windows.html#wincons">Ex&eacute;cuter httpd comme une
37     application de type console</a> pour plus d'informations sur le contr&ocirc;le
38     de httpd &agrave; partir de ces plateformes.</p>
39 </summary>
40
41 <seealso><program>httpd</program></seealso>
42 <seealso><program>apachectl</program></seealso>
43 <seealso><a href="invoking.html">D&eacute;marrage</a></seealso>
44
45 <section id="introduction"><title>Introduction</title>
46
47     <p>Afin d'arr&ecirc;ter ou red&eacute;marrer le serveur HTTP Apache, vous devez envoyer un signal aux
48     processus <program>httpd</program> en cours d'ex&eacute;cution.  Les signaux
49     peuvent &ecirc;tre envoy&eacute;s de deux mani&egrave;res.  Tout d'abord, vous pouvez
50     utiliser la commande unix <code>kill</code>
51     pour envoyer directement des signaux aux processus. Vous pouvez remarquer
52     que plusieurs processus <program>httpd</program> s'ex&eacute;cutent sur votre
53     syst&egrave;me, mais il vous suffit d'envoyer les signaux au processus parent,
54     dont le PID est enregistr&eacute; dans le fichier pr&eacute;cis&eacute; par la directive
55     <directive module="mpm_common">PidFile</directive>. Autrement dit, vous
56     n'aurez jamais besoin d'envoyer des signaux &agrave; aucun des
57     processus enfants, mais seulement au processus parent. Trois types
58     de signaux peuvent &ecirc;tre envoy&eacute;s au processus parent :
59     <code><a href="#term">TERM</a></code>,
60     <code><a href="#graceful">USR1</a></code>,
61     <code><a href="#hup">HUP</a></code>, et
62     <code><a href="#gracefulstop">WINCH</a></code>, qui
63     sera d&eacute;crit plus loin.</p>
64
65     <p>Pour envoyer un signal au processus parent, vous devez entrer une commande
66     du style :</p>
67
68 <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
69
70     <p>La seconde m&eacute;thode permettant d'envoyer des signaux aux processus
71     <program>httpd</program>
72     consiste &agrave; utiliser les options de ligne de commande <code>-k</code> :
73     <code>stop</code>,
74     <code>restart</code>, <code>graceful</code> et <code>graceful-stop</code>,
75     comme d&eacute;crit ci-dessous.  Ce sont des arguments du binaire
76     <program> httpd</program>, mais il est recommand&eacute; de les utiliser
77     avec le script de contr&ocirc;le <program>apachectl</program>, qui se
78     chargera de les passer &agrave; <program>httpd</program>.</p>
79
80     <p>Apr&egrave;s avoir envoy&eacute; un signal &agrave; <program>httpd</program>, vous pouvez
81     suivre le cours de son action en entrant :</p>
82
83 <example>tail -f /usr/local/apache2/logs/error_log</example>
84
85     <p>Adaptez ces exemples en fonction de la d&eacute;finition de vos directives
86     <directive module="core">ServerRoot</directive> et
87     <directive module="mpm_common">PidFile</directive>.</p>
88 </section>
89
90 <section id="term"><title>Arr&ecirc;ter imm&eacute;diatement</title>
91
92 <dl><dt>Signal: TERM</dt>
93 <dd><code>apachectl -k stop</code></dd>
94 </dl>
95
96     <p>A la r&eacute;ception du signal <code>TERM</code> ou <code>stop</code>,
97     le processus parent tente imm&eacute;diatement
98     de tuer tous ses processus enfants. Cela peut durer plusieurs secondes.
99     Apr&egrave;s cela, le processus parent lui-m&ecirc;me se termine. Toutes les requ&ecirc;tes
100     en cours sont termin&eacute;es, et plus aucune autre n'est trait&eacute;e.</p>
101 </section>
102
103 <section id="graceful"><title>Red&eacute;marrage en douceur</title>
104
105 <dl><dt>Signal: USR1</dt>
106 <dd><code>apachectl -k graceful</code></dd>
107 </dl>
108
109     <p>A la r&eacute;ception du signal <code>USR1</code> ou
110     <code>graceful</code>, le
111     processus parent envoie aux processus enfants
112     <em>l'ordre</em> de se terminer une fois leur requ&ecirc;te courante
113     trait&eacute;e (ou de se terminer imm&eacute;diatement s'ils n'ont plus rien &agrave; traiter).
114     Le processus parent relit ses fichiers de configuration et
115     r&eacute;ouvre ses fichiers de log. Chaque fois qu'un enfant s'&eacute;teint, le
116     processus parent le remplace par un processus
117     enfant de la nouvelle <em>g&eacute;n&eacute;ration</em> de la
118     configuration, et celui-ci commence imm&eacute;diatement &agrave; traiter les
119     nouvelles requ&ecirc;tes.</p>
120
121     <p>Ce code est con&ccedil;u pour toujours respecter la directive de contr&ocirc;le
122     de processus des modules MPMs, afin que les nombres de processus et de
123     threads
124     disponibles pour traiter les demandes des clients soient maintenus &agrave;
125     des valeurs appropri&eacute;es tout au long du processus de d&eacute;marrage.
126     En outre, il respecte la directive
127     <directive module="mpm_common">StartServers</directive> de la mani&egrave;re
128     suivante : si apr&egrave;s une seconde au moins <directive
129     module="mpm_common">StartServers</directive> nouveaux processus
130     enfants n'ont pas &eacute;t&eacute; cr&eacute;&eacute;s, un nombre suffisant de processus
131     suppl&eacute;mentaires est cr&eacute;&eacute; pour combler le manque. Ainsi le code
132     tente de maintenir &agrave; la fois le nombre appropri&eacute; de processus enfants
133     en fonction de la charge du serveur, et vos souhaits d&eacute;finis par la
134     directive <directive module="mpm_common">StartServers</directive>.</p>
135
136     <p>Les utilisateurs du module <module>mod_status</module>
137     noteront que les statistiques du serveur ne sont <strong>pas</strong>
138     remises &agrave; z&eacute;ro quand un signal <code>USR1</code> est envoy&eacute;. Le code
139     a &eacute;t&eacute; con&ccedil;u &agrave; la fois pour minimiser la dur&eacute;e durant laquelle le
140     serveur ne peut pas traiter de nouvelles requ&ecirc;tes (elle sont mises en
141     file d'attente par le syst&egrave;me d'exploitation, et ne sont ainsi jamais
142     perdues) et pour respecter vos param&egrave;tres de personnalisation.
143     Pour y parvenir, il doit conserver le
144     <em>tableau</em> utilis&eacute; pour garder la trace de tous les processus
145     enfants au cours des diff&eacute;rentes g&eacute;n&eacute;rations.</p>
146
147     <p>Dans son &eacute;tat des processus,
148     le module status utilise aussi un <code>G</code> afin d'indiquer
149     quels processus enfants ont encore des traitements de requ&ecirc;tes en cours
150     d&eacute;but&eacute;s avant que l'ordre graceful restart ne soit donn&eacute;.</p>
151
152     <p>Pour l'instant, il est impossible pour un script de rotation
153     des logs utilisant
154     <code>USR1</code> de savoir de mani&egrave;re certaine si tous les processus
155     enfants inscrivant des traces de pr&eacute;-red&eacute;marrage sont termin&eacute;s.
156     Nous vous sugg&eacute;rons d'attendre un d&eacute;lai suffisant apr&egrave;s l'envoi du
157     signal <code>USR1</code>
158     avant de faire quoi que ce soit avec les anciens logs. Par exemple,
159     si la plupart de vos traitements durent moins de 10 minutes pour des
160     utilisateurs empruntant des liaisons &agrave; faible bande passante, alors vous
161     devriez attendre 15 minutes avant de faire quoi que ce soit
162     avec les anciens logs.</p>
163
164     <note>
165     <p>Lorsque vous initiez un red&eacute;marrage, une v&eacute;rification de
166     la syntaxe est tout d'abord effectu&eacute;e, afin de s'assurer qu'il n'y a
167     pas d'erreurs dans les fichiers de configuration. Si votre fichier de
168     configuration comporte des erreurs de syntaxe, vous recevrez un message
169     d'erreur les concernant, et le serveur refusera de red&eacute;marrer. Ceci
170     permet d'&eacute;viter la situation o&ugrave; un serveur a
171     &eacute;t&eacute; arr&ecirc;t&eacute; et ne peut plus red&eacute;marrer,
172     et o&ugrave; vous vous retrouvez avec un serveur hors-service.</p>
173
174     <p>Ceci ne garantit pas encore que le serveur va red&eacute;marrer
175     correctement. Pour v&eacute;rifier la s&eacute;mantique des fichiers de configuration
176     en plus de leur syntaxe, vous pouvez essayer de d&eacute;marrer
177     <program>httpd</program> sous un utilisateur non root.
178     S'il n'y a pas d'erreurs, il tentera d'ouvrir ses sockets et ses fichiers
179     de log et &eacute;chouera car il n'a pas les privil&egrave;ges root (ou parce que
180     l'instance actuelle de
181     <program>httpd</program> est d&eacute;j&agrave; associ&eacute;e &agrave; ces ports). S'il &eacute;choue
182     pour toute autre raison, il y a probablement une erreur dans le
183     fichier de configuration et celle-ci doit &ecirc;tre corrig&eacute;e avant de lancer
184     le red&eacute;marrage en douceur.</p></note>
185 </section>
186
187 <section id="hup"><title>Red&eacute;marrer imm&eacute;diatement</title>
188
189 <dl><dt>Signal: HUP</dt>
190 <dd><code>apachectl -k restart</code></dd>
191 </dl>
192
193     <p>A la r&eacute;ception du signal <code>HUP</code> ou
194     <code>restart</code>, le
195     processus parent tue ses processus enfants comme pour le signal
196     <code>TERM</code>, mais le processus parent ne se termine pas.
197     Il relit ses fichiers de configuration, et r&eacute;ouvre ses fichiers de log.
198     Puis il donne naissance &agrave; un nouveau jeu de processus enfants
199     et continue de traiter les requ&ecirc;tes.</p>
200
201     <p>Les utilisateurs du module <module>mod_status</module>
202     noteront que les statistiques du serveur sont remises &agrave; z&eacute;ro quand un
203     signal <code>HUP</code> est envoy&eacute;.</p>
204
205 <note>Comme dans le cas d'un red&eacute;marrage "graceful", une
206 v&eacute;rification de la syntaxe est effectu&eacute;e avant que le
207 red&eacute;marrage ne soit tent&eacute;. Si votre fichier de configuration comporte
208 des erreurs de syntaxe, le red&eacute;marrage ne sera pas effectu&eacute;, et
209 vous recevrez un message concernant ces erreurs.</note>
210 </section>
211
212 <section id="gracefulstop"><title>Arr&ecirc;t en douceur</title>
213
214 <dl><dt>Signal : WINCH</dt>
215 <dd><code>apachectl -k graceful-stop</code></dd>
216 </dl>
217
218     <p>A la r&eacute;ception du signal <code>WINCH</code> ou
219     <code>graceful-stop</code>, le
220     processus parent <em>avise</em> ses processus enfants
221     de s'arr&ecirc;ter apr&egrave;s le traitement de leur requ&ecirc;te en cours
222     (ou de s'arr&ecirc;ter imm&eacute;diatement s'ils n'ont plus de requ&ecirc;te &agrave; traiter).
223     Le processus parent va alors supprimer son fichier
224     <directive  module="mpm_common">PidFile</directive> et cesser l'&eacute;coute
225     de tous ses ports. Le processus parent va continuer &agrave; s'ex&eacute;cuter,
226     et va surveiller les processus enfants
227     qui ont encore des requ&ecirc;tes &agrave; traiter. Lorsque tous les processus enfants
228     ont termin&eacute; leurs traitements et se sont arr&ecirc;t&eacute;s ou lorsque le d&eacute;lai
229     sp&eacute;cifi&eacute; par la directive <directive
230     module="mpm_common">GracefulShutdownTimeout</directive> a &eacute;t&eacute; atteint,
231     le processus parent s'arr&ecirc;tera &agrave; son tour.  Si ce d&eacute;lai est atteint,
232     tout processus enfant encore en cours d'ex&eacute;cution se verra envoyer
233     le signal <code>TERM</code>
234     afin de le forcer &agrave; s'arr&ecirc;ter.</p>
235
236     <p>L'envoi du signal <code>TERM</code> va arr&ecirc;ter imm&eacute;diatement
237     les processus parent et enfants en &eacute;tat "graceful". Cependant,
238     comme le fichier <directive module="mpm_common">PidFile</directive>
239     aura &eacute;t&eacute; supprim&eacute;, vous ne pourrez pas utiliser
240     <code>apachectl</code> ou <code>httpd</code> pour envoyer ce signal.</p>
241
242     <note><p>Le signal <code>graceful-stop</code> vous permet d'ex&eacute;cuter
243     simultan&eacute;ment plusieurs instances de <program>httpd</program>
244     avec des configurations identiques. Ceci s'av&egrave;re une fonctionnalit&eacute;
245     puissante quand vous effectuez des mises &agrave; jour "en douceur"
246     de httpd ; cependant, cela peut aussi causer des blocages fatals et des
247     situations de comp&eacute;tition (race conditions)
248     avec certaines configurations.</p>
249
250     <p>On a pris soin de s'assurer que les fichiers sur disque
251     comme les fichiers verrou (<directive
252     module="core">Mutex</directive>) et les fichiers socket Unix
253     (<directive module="mod_cgid">ScriptSock</directive>) contiennent le PID
254     du serveur, et coexistent sans probl&egrave;me. Cependant, si une directive de
255     configuration, un module tiers ou une CGI r&eacute;sidente utilise un autre
256     verrou ou fichier d'&eacute;tat sur disque, il faut prendre soin de s'assurer
257     que chaque instance de <program>httpd</program> qui s'ex&eacute;cute
258     n'&eacute;crase pas les fichiers des autres instances.</p>
259
260     <p>Vous devez aussi prendre garde aux autres situations de comp&eacute;tition,
261     comme l'utilisation de l'enregistrement des logs avec un transfert de ceux-ci
262     dans le style <program>rotation des logs</program>. Plusieurs instances
263     du programme de <program>rotation des logs</program> qui tentent d'effectuer
264     une rotation des m&ecirc;mes fichiers de log en m&ecirc;me temps peuvent d&eacute;truire
265     mutuellement leurs propres fichiers de log.</p></note>
266 </section>
267
268 </manualpage>