]> granicus.if.org Git - apache/blob - docs/manual/stopping.xml.fr
Patch from info@mathijs.info to use 2.4 authz syntax.
[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. La
50     premi&egrave;re m&eacute;thode consiste &agrave;
51     utiliser la commande unix <code>kill</code>
52     pour envoyer directement des signaux aux processus. Vous pouvez remarquer
53     que plusieurs processus <program>httpd</program> s'ex&eacute;cutent sur votre
54     syst&egrave;me, mais il vous suffit d'envoyer les signaux au processus parent,
55     dont le PID est enregistr&eacute; dans le fichier pr&eacute;cis&eacute; par la directive
56     <directive module="mpm_common">PidFile</directive>. Autrement dit, vous
57     n'aurez jamais besoin d'envoyer des signaux &agrave; aucun des
58     processus enfants, mais seulement au processus parent. Quatre types
59     de signaux peuvent &ecirc;tre envoy&eacute;s au processus parent :
60     <code><a href="#term">TERM</a></code>,
61     <code><a href="#graceful">USR1</a></code>,
62     <code><a href="#hup">HUP</a></code>, et
63     <code><a href="#gracefulstop">WINCH</a></code>, qui
64     seront d&eacute;crit plus loin.</p>
65
66     <p>Pour envoyer un signal au processus parent, vous devez entrer une commande
67     du style :</p>
68
69 <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example>
70
71     <p>La seconde m&eacute;thode permettant d'envoyer des signaux aux processus
72     <program>httpd</program>
73     consiste &agrave; utiliser les options <code>stop</code>,
74     <code>restart</code>, <code>graceful</code> et
75     <code>graceful-stop</code> du commutateur <code>-k</code> de la ligne
76     de commande comme d&eacute;crit ci-dessous.  Ce sont des arguments du binaire
77     <program> httpd</program>, mais il est recommand&eacute; de les utiliser
78     avec le script de contr&ocirc;le <program>apachectl</program>, qui se
79     chargera de les passer &agrave; <program>httpd</program>.</p>
80
81     <p>Apr&egrave;s avoir envoy&eacute; un signal &agrave; <program>httpd</program>, vous pouvez
82     suivre le cours de son action en entrant :</p>
83
84 <example>tail -f /usr/local/apache2/logs/error_log</example>
85
86     <p>Adaptez ces exemples en fonction de la d&eacute;finition de vos directives
87     <directive module="core">ServerRoot</directive> et
88     <directive module="mpm_common">PidFile</directive>.</p>
89 </section>
90
91 <section id="term"><title>Arr&ecirc;ter imm&eacute;diatement</title>
92
93 <dl><dt>Signal: TERM</dt>
94 <dd><code>apachectl -k stop</code></dd>
95 </dl>
96
97     <p>A la r&eacute;ception du signal <code>TERM</code> ou <code>stop</code>,
98     le processus parent tente imm&eacute;diatement
99     de tuer tous ses processus enfants. Cela peut durer plusieurs secondes.
100     Apr&egrave;s cela, le processus parent lui-m&ecirc;me se termine. Toutes les requ&ecirc;tes
101     en cours sont termin&eacute;es, et plus aucune autre n'est trait&eacute;e.</p>
102 </section>
103
104 <section id="graceful"><title>Red&eacute;marrage en douceur</title>
105
106 <dl><dt>Signal: USR1</dt>
107 <dd><code>apachectl -k graceful</code></dd>
108 </dl>
109
110     <p>A la r&eacute;ception du signal <code>USR1</code> ou
111     <code>graceful</code>, le
112     processus parent envoie aux processus enfants
113     <em>l'ordre</em> de se terminer une fois leur requ&ecirc;te courante
114     trait&eacute;e (ou de se terminer imm&eacute;diatement s'ils n'ont plus rien &agrave; traiter).
115     Le processus parent relit ses fichiers de configuration et
116     r&eacute;ouvre ses fichiers de log. Chaque fois qu'un enfant s'&eacute;teint, le
117     processus parent le remplace par un processus
118     enfant de la nouvelle <em>g&eacute;n&eacute;ration</em> de la
119     configuration, et celui-ci commence imm&eacute;diatement &agrave; traiter les
120     nouvelles requ&ecirc;tes.</p>
121
122     <p>Ce code est con&ccedil;u pour toujours respecter la directive de contr&ocirc;le
123     de processus des modules MPMs, afin que les nombres de processus et de
124     threads
125     disponibles pour traiter les demandes des clients soient maintenus &agrave;
126     des valeurs appropri&eacute;es tout au long du processus de d&eacute;marrage.
127     En outre, il respecte la directive
128     <directive module="mpm_common">StartServers</directive> de la mani&egrave;re
129     suivante : si apr&egrave;s une seconde au moins <directive
130     module="mpm_common">StartServers</directive> nouveaux processus
131     enfants n'ont pas &eacute;t&eacute; cr&eacute;&eacute;s, un nombre suffisant de processus
132     suppl&eacute;mentaires est cr&eacute;&eacute; pour combler le manque. Ainsi le code
133     tente de maintenir &agrave; la fois le nombre appropri&eacute; de processus enfants
134     en fonction de la charge du serveur, et le nombre de processus d&eacute;fini par la
135     directive <directive module="mpm_common">StartServers</directive>.</p>
136
137     <p>Les utilisateurs du module <module>mod_status</module>
138     noteront que les statistiques du serveur ne sont <strong>pas</strong>
139     remises &agrave; z&eacute;ro quand un signal <code>USR1</code> est envoy&eacute;. Le code
140     a &eacute;t&eacute; con&ccedil;u &agrave; la fois pour minimiser la dur&eacute;e durant laquelle le
141     serveur ne peut pas traiter de nouvelles requ&ecirc;tes (elle sont mises en
142     file d'attente par le syst&egrave;me d'exploitation, et ne sont ainsi jamais
143     perdues) et pour respecter vos param&egrave;tres de personnalisation.
144     Pour y parvenir, il doit conserver le
145     <em>tableau</em> utilis&eacute; pour garder la trace de tous les processus
146     enfants au cours des diff&eacute;rentes g&eacute;n&eacute;rations.</p>
147
148     <p>Dans son &eacute;tat des processus,
149     le module status utilise aussi un caract&egrave;re <code>G</code> afin d'indiquer
150     quels processus enfants ont encore des traitements de requ&ecirc;tes en cours
151     d&eacute;but&eacute;s avant que l'ordre graceful restart ne soit donn&eacute;.</p>
152
153     <p>Pour l'instant, il est impossible pour un script de rotation
154     des logs utilisant
155     <code>USR1</code> de savoir de mani&egrave;re certaine si tous les processus
156     enfants inscrivant des traces de pr&eacute;-red&eacute;marrage sont termin&eacute;s.
157     Nous vous sugg&eacute;rons d'attendre un d&eacute;lai suffisant apr&egrave;s l'envoi du
158     signal <code>USR1</code>
159     avant de faire quoi que ce soit avec les anciens logs. Par exemple,
160     si la plupart de vos traitements durent moins de 10 minutes pour des
161     utilisateurs empruntant des liaisons &agrave; faible bande passante, alors vous
162     devriez attendre 15 minutes avant de faire quoi que ce soit
163     avec les anciens logs.</p>
164
165     <note>
166     <p>Lorsque vous initiez un red&eacute;marrage, une v&eacute;rification de
167     la syntaxe est tout d'abord effectu&eacute;e, afin de s'assurer qu'il n'y a
168     pas d'erreurs dans les fichiers de configuration. Si votre fichier de
169     configuration comporte des erreurs de syntaxe, vous recevrez un message
170     d'erreur les concernant, et le serveur refusera de red&eacute;marrer. Ceci
171     permet d'&eacute;viter la situation o&ugrave; un serveur a
172     &eacute;t&eacute; arr&ecirc;t&eacute; et ne peut plus red&eacute;marrer,
173     et o&ugrave; vous vous retrouvez avec un serveur hors-service.</p>
174
175     <p>Ceci ne garantit pas encore que le serveur va red&eacute;marrer
176     correctement. Pour v&eacute;rifier la s&eacute;mantique des fichiers de configuration
177     en plus de leur syntaxe, vous pouvez essayer de d&eacute;marrer
178     <program>httpd</program> sous un utilisateur non root.
179     S'il n'y a pas d'erreur, il tentera d'ouvrir ses sockets et ses fichiers
180     de log et &eacute;chouera car il n'a pas les privil&egrave;ges root (ou parce que
181     l'instance actuelle de
182     <program>httpd</program> est d&eacute;j&agrave; associ&eacute;e &agrave; ces ports). S'il &eacute;choue
183     pour toute autre raison, il y a probablement une erreur dans le
184     fichier de configuration et celle-ci doit &ecirc;tre corrig&eacute;e avant de lancer
185     le red&eacute;marrage en douceur.</p></note>
186 </section>
187
188 <section id="hup"><title>Red&eacute;marrer imm&eacute;diatement</title>
189
190 <dl><dt>Signal: HUP</dt>
191 <dd><code>apachectl -k restart</code></dd>
192 </dl>
193
194     <p>A la r&eacute;ception du signal <code>HUP</code> ou
195     <code>restart</code>, le
196     processus parent tue ses processus enfants comme pour le signal
197     <code>TERM</code>, mais le processus parent ne se termine pas.
198     Il relit ses fichiers de configuration, et r&eacute;ouvre ses fichiers de log.
199     Puis il donne naissance &agrave; un nouveau jeu de processus enfants
200     et continue de traiter les requ&ecirc;tes.</p>
201
202     <p>Les utilisateurs du module <module>mod_status</module>
203     noteront que les statistiques du serveur sont remises &agrave; z&eacute;ro quand un
204     signal <code>HUP</code> est envoy&eacute;.</p>
205
206 <note>Comme dans le cas d'un red&eacute;marrage "graceful", une
207 v&eacute;rification de la syntaxe est effectu&eacute;e avant que le
208 red&eacute;marrage ne soit tent&eacute;. Si votre fichier de configuration comporte
209 des erreurs de syntaxe, le red&eacute;marrage ne sera pas effectu&eacute;, et
210 vous recevrez un message concernant ces erreurs.</note>
211 </section>
212
213 <section id="gracefulstop"><title>Arr&ecirc;t en douceur</title>
214
215 <dl><dt>Signal : WINCH</dt>
216 <dd><code>apachectl -k graceful-stop</code></dd>
217 </dl>
218
219     <p>A la r&eacute;ception du signal <code>WINCH</code> ou
220     <code>graceful-stop</code>, le
221     processus parent <em>ordonne</em> &agrave; ses processus enfants
222     de s'arr&ecirc;ter apr&egrave;s le traitement de leur requ&ecirc;te en cours
223     (ou de s'arr&ecirc;ter imm&eacute;diatement s'ils n'ont plus de requ&ecirc;te &agrave; traiter).
224     Le processus parent va alors supprimer son fichier
225     <directive  module="mpm_common">PidFile</directive> et cesser l'&eacute;coute
226     de tous ses ports. Le processus parent va continuer &agrave; s'ex&eacute;cuter,
227     et va surveiller les processus enfants
228     qui ont encore des requ&ecirc;tes &agrave; traiter. Lorsque tous les processus enfants
229     ont termin&eacute; leurs traitements et se sont arr&ecirc;t&eacute;s ou lorsque le d&eacute;lai
230     sp&eacute;cifi&eacute; par la directive <directive
231     module="mpm_common">GracefulShutdownTimeout</directive> a &eacute;t&eacute; atteint,
232     le processus parent s'arr&ecirc;tera &agrave; son tour.  Si ce d&eacute;lai est atteint,
233     tout processus enfant encore en cours d'ex&eacute;cution se verra envoyer
234     le signal <code>TERM</code>
235     afin de le forcer &agrave; s'arr&ecirc;ter.</p>
236
237     <p>L'envoi du signal <code>TERM</code> va arr&ecirc;ter imm&eacute;diatement
238     les processus parent et enfants en &eacute;tat "graceful". Cependant,
239     comme le fichier <directive module="mpm_common">PidFile</directive>
240     aura &eacute;t&eacute; supprim&eacute;, vous ne pourrez pas utiliser
241     <code>apachectl</code> ou <code>httpd</code> pour envoyer ce signal.</p>
242
243     <note><p>Le signal <code>graceful-stop</code> vous permet d'ex&eacute;cuter
244     simultan&eacute;ment plusieurs instances de <program>httpd</program>
245     avec des configurations identiques. Ceci s'av&egrave;re une fonctionnalit&eacute;
246     puissante quand vous effectuez des mises &agrave; jour "en douceur"
247     de httpd ; cependant, cela peut aussi causer des blocages fatals et des
248     situations de comp&eacute;tition (race conditions)
249     avec certaines configurations.</p>
250
251     <p>On a pris soin de s'assurer que les fichiers sur disque
252     comme les fichiers verrou (<directive
253     module="core">Mutex</directive>) et les fichiers socket Unix
254     (<directive module="mod_cgid">ScriptSock</directive>) contiennent le PID
255     du serveur, et coexistent sans probl&egrave;me. Cependant, si une directive de
256     configuration, un module tiers ou une CGI r&eacute;sidente utilise un autre
257     verrou ou fichier d'&eacute;tat sur disque, il faut prendre soin de s'assurer
258     que chaque instance de <program>httpd</program> qui s'ex&eacute;cute
259     n'&eacute;crase pas les fichiers des autres instances.</p>
260
261     <p>Vous devez aussi prendre garde aux autres situations de comp&eacute;tition,
262     comme l'utilisation de l'enregistrement des logs avec un transfert de ceux-ci
263     dans le style <program>rotation des logs</program>. Plusieurs instances
264     du programme de <program>rotation des logs</program> qui tentent d'effectuer
265     une rotation des m&ecirc;mes fichiers de log en m&ecirc;me temps peuvent d&eacute;truire
266     mutuellement leurs propres fichiers de log.</p></note>
267 </section>
268
269 </manualpage>