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