1<?xml version="1.0" encoding="UTF-8"?>
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="ja" xml:lang="ja"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>停止と再起動 - Apache HTTP サーバ</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">
13</script>
14
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/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
18<p class="apache">Apache HTTP サーバ バージョン 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="./">バージョン 2.4</a></div><div id="page-content"><div id="preamble"><h1>停止と再起動</h1>
23<div class="toplang">
24<p><span>翻訳済み言語: </span><a href="/de/stopping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
25<a href="/en/stopping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
26<a href="/es/stopping.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
27<a href="/fr/stopping.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
28<a href="/ja/stopping.html" title="Japanese">&nbsp;ja&nbsp;</a> |
29<a href="/ko/stopping.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
30<a href="/tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
31</div>
32<div class="outofdate">この日本語訳はすでに古くなっている
33            可能性があります。
34            最近更新された内容を見るには英語版をご覧下さい。
35        </div>
36
37    <p>この文書では Unix に類似したシステムでの
38    Apache の停止と再起動について扱っています。
39    Windows NT, 2000, XP ユーザは<a href="platform/windows.html#winsvc">サービスとして
40    Apache を実行する</a>で、Windows 9x, MEユーザは<a href="platform/windows.html#wincons">コンソールアプリケーションとして
41    Apache を実行する</a>で、
42    これらのプラットホームでの使用方法をご覧下さい。</p>
43</div>
44<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#introduction">イントロダクション</a></li>
45<li><img alt="" src="/images/down.gif" /> <a href="#term">急な停止</a></li>
46<li><img alt="" src="/images/down.gif" /> <a href="#graceful">緩やかな再起動</a></li>
47<li><img alt="" src="/images/down.gif" /> <a href="#hup">急な再起動</a></li>
48<li><img alt="" src="/images/down.gif" /> <a href="#gracefulstop">緩やかな停止</a></li>
49</ul><h3>参照</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">Starting</a></li></ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
50<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
51<div class="section">
52<h2><a name="introduction" id="introduction">イントロダクション</a></h2>
53
54    <p>Apache を停止したり再起動したりするためには、実行されている
55    <code class="program"><a href="/programs/httpd.html">httpd</a></code> プロセスにシグナルを送る必要があります。
56    シグナルを送るには二つの方法があります。
57    一つ目はプロセスに直接シグナルを送る unix の <code>kill</code>
58    コマンドを使用する方法です。
59    システムを見ればたくさんの <code class="program"><a href="/programs/httpd.html">httpd</a></code> が
60    実行されているのに気が付くでしょうが、シグナルを送るのは
61    親プロセスだけで、それ以外の個々のプロセスには
62    シグナルを送らないで下さい。その親プロセスの pid は
63    <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
64    に書かれています。これはつまり、親以外のプロセスに
65    シグナルを送る必要すらない、ということです。
66    親プロセスに送ることができる 4 種類のシグナルがあります:
67    <code><a href="#term">TERM</a></code>,
68    <code><a href="#hup">HUP</a></code>, 
69    <code><a href="#graceful">USR1</a></code>,
70    <code><a href="#gracefulstop">WINCH</a></code>
71    です。これらの説明については続きをご覧下さい。</p>
72
73    <p>親プロセスにシグナルを送るには、
74    次のようなコマンドを発行して下さい:</p>
75
76<div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
77
78    <p><code class="program"><a href="/programs/httpd.html">httpd</a></code> プロセスにシグナルを送る 2 番目の方法は
79    <code>-k</code> というコマンドライン引数を使用することです。
80    下で説明されているように、<code>stop</code>, <code>restart</code>, 
81    <code>graceful</code>, <code>graceful-stop</code> を指定できます。
82    これらは <code class="program"><a href="/programs/httpd.html">httpd</a></code> の引数ですが、
83    制御用のスクリプト <code class="program"><a href="/programs/apachectl.html">apachectl</a></code> はそれらの引数をそのまま
84    <code class="program"><a href="/programs/httpd.html">httpd</a></code> に渡します。</p>
85
86    <p><code class="program"><a href="/programs/httpd.html">httpd</a></code> にシグナルを送った後、
87    実行状況を次のコマンドで読むことができます:</p>
88
89<div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
90    <p>ここに挙げた例は、各自の
91    <code class="directive"><a href="/mod/core.html#serverroot">ServerRoot</a></code>
9293    <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
94    の設定に適合するように適宜修正して下さい。</p>
95</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
96<div class="section">
97<h2><a name="term" id="term">急な停止</a></h2>
98
99<dl><dt>シグナル: TERM</dt>
100<dd><code>apachectl -k stop</code></dd>
101</dl>
102
103    <p><code>TERM</code> あるいは <code>stop</code> 
104    シグナルを親プロセスに送ると、即座に子プロセス全てを kill しようとします。
105    子プロセスを完全に kill し終わるまでに数秒かかるかもしれません。
106    その後、親プロセス自身が終了します。
107    処理中のリクエストは全て停止され、もはやリクエストに対する
108    応答はされません。</p>
109</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
110<div class="section">
111<h2><a name="graceful" id="graceful">緩やかな再起動</a></h2>
112
113<dl><dt>シグナル: USR1</dt>
114<dd><code>apachectl -k graceful</code></dd>
115</dl>
116
117    <p>親プロセスは <code>USR1</code> あるいは <code>graceful</code>
118    シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する
119    (あるいは何もしていなければすぐに終了する)
120    ように<em>助言</em>します。
121    親プロセスは設定ファイルを再読込して、ログファイルを開き直します。
122    子プロセスが徐々になくなるに従って、
123    新しい<em>世代</em>の設定による子プロセスに置き換えていきます。
124    そして、これらが新たなリクエストに即座に応答し始めます。</p>
125
126    <p>このコードは常に
127    MPM のプロセス制御ディレクティブの設定を重視しますので、
128    クライアントのリクエストを扱うプロセスとスレッドの数を再起動の処理中も
129    適切な値に維持されます。。また、次のようにして
130    <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code>
131    を守ります:
132    少なくとも 1 秒後に <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code> 個の新しい子プロセスが
133    生成されていなければ、その数になるように適宜プロセスを生成します。
134    この挙動は現在の負荷に対して適切な子プロセスの数と
135    <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code> パラメータでの
136    希望の数の両方を維持しようとしています。</p>
137
138    <p><code class="module"><a href="/mod/mod_status.html">mod_status</a></code> を
139    使用している場合は、<code>USR1</code> シグナルが送られた際に
140    サーバ統計がゼロに<strong>設定されない</strong>ことに
141    注意してください。
142    サーバが新しいリクエストに応答不能な時間を最小にするように
143    (リクエストは OS によってキューに追加されるので絶対に紛失はしません)、
144    また同時に、希望のチューニングパラメータを守るように
145    コードは書かれています。
146    このようにするために、世代をまたがった全子プロセスの追跡に使われている
147    <em>スコアボード</em>を維持しなければなりません。</p>
148
149    <p>status モジュールは、緩やかな再起動以前から開始して
150    リクエストに応答し続けている子プロセスを特定するために、
151    <code>G</code> を使うこともします。</p>
152
153    <p>現在、<code>USR1</code> を使うログ移動スクリプトでは、
154    再起動前の子プロセスがログを書き終わったことを確証する方法が
155    ありません。古いログに対して何かする前に、
156    <code>USR1</code> シグナルを送った後いくらか適当な時間待つことを
157    提案します。例えば、帯域の狭い通信路のユーザのリクエストのほとんどが 10 
158    分以下で完了しているということが分かっていれば、
159    古いログに何かする前に 15 分待つということです。</p>
160
161    <div class="note"><p>再起動が発行されると設定ファイルの構文チェックがまず走り、
162    設定ファイルに (構文上の) 誤りがないかチェックされます。
163    誤りがあった場合エラーメッセージでその旨が示され、サーバは再起動されません。
164    こうすることでサーバが終了しているけれども再起動できないという状況を
165    防ぎ、サーバが機能不全な状態になるのを防いでいます。</p>
166
167    <p>ただしこれでもサーバが正しく再起動することは保証されません。
168    設定ファイルの意味的な内容を構文と同様に検証したい場合は、
169    非 root ユーザで <code class="program"><a href="/programs/httpd.html">httpd</a></code> を起動しようとすればわかります。
170    もしエラーがなければ、ソケットやログを開こうとして
171    root でないため
172    (もしくは実行中の <code class="program"><a href="/programs/httpd.html">httpd</a></code>
173    が既に必要なポートにバインドしているため)
174    に失敗するでしょう。
175    これ以外の理由で起動に失敗したのであれば、
176    それは設定ファイルのエラーで、
177    緩やかな再起動を行う前にその誤りを修正しなければなりません。</p>
178    </div>
179</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
180<div class="section">
181<h2><a name="hup" id="hup">急な再起動</a></h2>
182
183<dl><dt>シグナル: HUP</dt>
184<dd><code>apachectl -k restart</code></dd>
185</dl>
186
187    <p><code>HUP</code> あるいは <code>restart</code> シグナルを親プロセスに送ると、
188    <code>TERM</code> と同様に子プロセスを kill しますが、
189    親プロセスは終了しません。
190    設定ファイルを再読込して、ログファイル全てを開き直します。
191    その後、新しい子プロセスを起動して応答を続けます。</p>
192
193    <p><code class="module"><a href="/mod/mod_status.html">mod_status</a></code>
194    を使っている場合は、<code>HUP</code> が送られた場合に
195    サーバ統計がゼロに設定されることに注意してください。</p>
196
197    <div class="note">graceful 再起動時は、再起動前に構文チェックが行われます。
198    もし構文エラーがあればその旨が示され、再起動は行われません。</div>
199</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
200<div class="section">
201<h2><a name="gracefulstop" id="gracefulstop">緩やかな停止</a></h2>
202
203<dl><dt>Signal: WINCH</dt>
204<dd><code>apachectl -k graceful-stop</code></dd>
205</dl>
206
207    <p><code>WINCH</code> や <code>graceful-stop</code> シグナルを受け取ると、
208    親プロセスは子プロセスに現在処理中のリクエストの後に終了する
209    (あるいは処理中のものが何もなければ直ちに終了する)
210    ように<em>アドバイス</em>します。
211    その後親プロセスは <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
212    を削除し、ポートでの Listen を全て停止します。
213    親プロセスはどの子プロセスがリクエスト処理中かを監視し続けています。
214    全ての子プロセスが終了するか
215    <code class="directive"><a href="/mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code>
216    で設定した時間が過ぎると、親プロセスも終了します。
217    タイムアウトに達した場合、残りの子プロセスには <code>TERM</code>
218    シグナルが送信され強制的に終了されます。</p>
219    
220    <p>"graceful" 状態の場合 <code>TERM</code> シグナルを受け取ると、
221    親プロセスも子プロセスもすぐに終了します。しかしながら
222    <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
223    が削除されてしまっているので、<code>apachectl</code>
224    や <code>httpd</code> にこのシグナルを送ることはできません。</p>
225
226    <div class="note"><p><code>graceful-stop</code> を使うとまったく同一に設定された
227    複数の <code class="program"><a href="/programs/httpd.html">httpd</a></code> を同時に実行することができます。
228    Apache を緩やかにアップグレードするのにはとても便利ですが、
229    設定ファイルによってはデッドロックやレースコンディションを
230    引き起こすこともあります。</p>
231
232    <p>ディスク上のファイルを使うもの、たとえば
233    <code class="directive"><a href="/mod/core.html#lockfile">Lockfile</a></code> や 
234    <code class="directive"><a href="/mod/mod_cgid.html#scriptsock">ScriptSock</a></code> 
235    のファイルなどはサーバの PID を含めて管理されていて、
236    共存できるよう注意が払われています。
237    しかしその他設定ディレクティブやサードパーティ製のモジュール、
238    CGI ユーティリティのパーシステント層などで
239    ディスク上にロックファイルや状態管理ファイルを
240    使っている場合は、実行されている複数の <code class="program"><a href="/programs/httpd.html">httpd</a></code>
241    が互いに衝突しないように気をつけなければなりません。</p>
242
243    <p><code class="program"><a href="/programs/rotatelogs.html">rotatelogs</a></code> 形式のパイプを使ったログといった、
244    その他潜在的なレースコンディションについても注意しなければなりません。
245    複数の <code class="program"><a href="/programs/rotatelogs.html">rotatelogs</a></code> が同じファイルを同時に
246    rotate しようとすると、互いにログファイルを破壊してしまいます。</p>
247    </div>
248</div></div>
249<div class="bottomlang">
250<p><span>翻訳済み言語: </span><a href="/de/stopping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
251<a href="/en/stopping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
252<a href="/es/stopping.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
253<a href="/fr/stopping.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
254<a href="/ja/stopping.html" title="Japanese">&nbsp;ja&nbsp;</a> |
255<a href="/ko/stopping.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
256<a href="/tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
257</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">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;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>
258<script type="text/javascript"><!--//--><![CDATA[//><!--
259var comments_shortname = 'httpd';
260var comments_identifier = 'http://httpd.apache.org/docs/2.4/stopping.html';
261(function(w, d) {
262    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
263        d.write('<div id="comments_thread"><\/div>');
264        var s = d.createElement('script');
265        s.type = 'text/javascript';
266        s.async = true;
267        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
268        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
269    }
270    else { 
271        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
272    }
273})(window, document);
274//--><!]]></script></div><div id="footer">
275<p class="apache">Copyright 2014 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
276<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
277if (typeof(prettyPrint) !== 'undefined') {
278    prettyPrint();
279}
280//--><!]]></script>
281</body></html>