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.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.2</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.2</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">緩やかな再起動 (Graceful Restart)</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">緩やかな停止 (Graceful Stop)</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></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    親プロセスに送ることができる 3 種類のシグナルがあります:
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    です。これらの説明については続きをご覧下さい。</p>
71
72    <p>親プロセスにシグナルを送るには、
73    次のようなコマンドを発行して下さい:</p>
74
75<div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
76
77    <p><code class="program"><a href="/programs/httpd.html">httpd</a></code> プロセスにシグナルを送る 2 番目の方法は
78    <code>-k</code> というコマンドライン引数を使用することです。
79    下で説明されているように、<code>stop</code>, <code>restart</code>, 
80    <code>graceful</code>, <code>graceful-stop</code> を指定できます。
81    これらは <code class="program"><a href="/programs/httpd.html">httpd</a></code> の引数ですが、
82    制御用のスクリプト <code class="program"><a href="/programs/apachectl.html">apachectl</a></code> はそれらの引数をそのまま
83    <code class="program"><a href="/programs/httpd.html">httpd</a></code> に渡します。</p>
84
85    <p><code class="program"><a href="/programs/httpd.html">httpd</a></code> にシグナルを送った後、
86    実行状況を次のコマンドで読むことができます:</p>
87
88<div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
89    <p>ここに挙げた例は、各自の
90    <code class="directive"><a href="/mod/core.html#serverroot">ServerRoot</a></code>
9192    <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
93    の設定に適合するように適宜修正して下さい。</p>
94</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
95<div class="section">
96<h2><a name="term" id="term">急な停止</a></h2>
97
98<dl><dt>シグナル: TERM</dt>
99<dd><code>apachectl -k stop</code></dd>
100</dl>
101
102    <p><code>TERM</code> あるいは <code>stop</code> 
103    シグナルを親プロセスに送ると、即座に子プロセス全てを kill しようとします。
104    子プロセスを完全に kill し終わるまでに数秒かかるかもしれません。
105    その後、親プロセス自身が終了します。
106    処理中のリクエストは全て停止され、もはやリクエストに対する
107    応答はされません。</p>
108</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
109<div class="section">
110<h2><a name="graceful" id="graceful">緩やかな再起動 (Graceful Restart)</a></h2>
111
112<dl><dt>シグナル: USR1</dt>
113<dd><code>apachectl -k graceful</code></dd>
114</dl>
115
116    <p>親プロセスは <code>USR1</code> あるいは <code>graceful</code>
117    シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する
118    (あるいは何もしていなければすぐに終了する)
119    ように<em>助言</em>します。
120    親プロセスは設定ファイルを再読込して、ログファイルを開き直します。
121    子プロセスが徐々になくなるに従って、
122    新しい<em>世代</em>の設定による子プロセスに置き換えていきます。
123    そして、これらが新たなリクエストに即座に応答し始めます。</p>
124
125    <p>このコードは常に
126    MPM のプロセス制御ディレクティブの設定を重視しますので、
127    クライアントのリクエストを扱うプロセスとスレッドの数を再起動の処理中も
128    適切な値に維持されます。。また、次のようにして
129    <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code>
130    を守ります:
131    少なくとも 1 秒後に <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code> 個の新しい子プロセスが
132    生成されていなければ、その数になるように適宜プロセスを生成します。
133    この挙動は現在の負荷に対して適切な子プロセスの数と
134    <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code> パラメータでの
135    希望の数の両方を維持しようとしています。</p>
136
137    <p><code class="module"><a href="/mod/mod_status.html">mod_status</a></code> を
138    使用している場合は、<code>USR1</code> シグナルが送られた際に
139    サーバ統計がゼロに<strong>設定されない</strong>ことに
140    注意してください。
141    サーバが新しいリクエストに応答不能な時間を最小にするように
142    (リクエストは OS によってキューに追加されるので絶対に紛失はしません)、
143    また同時に、希望のチューニングパラメータを守るように
144    コードは書かれています。
145    このようにするために、世代をまたがった全子プロセスの追跡に使われている
146    <em>スコアボード</em>を維持しなければなりません。</p>
147
148    <p>status モジュールは、緩やかな再起動以前から開始して
149    リクエストに応答し続けている子プロセスを特定するために、
150    <code>G</code> を使うこともします。</p>
151
152    <p>現在、<code>USR1</code> を使うログ移動スクリプトでは、
153    再起動前の子プロセスがログを書き終わったことを確証する方法が
154    ありません。古いログに対して何かする前に、
155    <code>USR1</code> シグナルを送った後いくらか適当な時間待つことを
156    提案します。例えば、帯域の狭い通信路のユーザのリクエストのほとんどが 10 
157    分以下で完了しているということが分かっていれば、
158    古いログに何かする前に 15 分待つということです。</p>
159
160    <div class="note">再起動時に設定ファイルに誤りがあると、
161    親プロセスは再起動せずにエラーとともに終了します。
162    緩やかな再起動の場合は、親プロセスが終了した後でも子プロセスが
163    実行されたまま放置されたりもします。
164    (最後のリクエストを処理した後「緩やかに終了」する
165    子プロセスとなります。)
166    サーバを再起動する際に、これが問題になるかもしれません
167    -- サーバは listen するポートにバインドできないかもしれません。
168    再起動する前に、設定ファイルの構文を <code>-t</code>
169    コマンドライン引数
170    (<code class="program"><a href="/programs/httpd.html">httpd</a></code> をご覧下さい)
171    を使って検証することができます。
172    設定ファイルの意味的な内容を構文と同様に検証したい場合は、
173    非 root ユーザで <code class="program"><a href="/programs/httpd.html">httpd</a></code> を起動しようとすればわかります。
174    もしエラーがなければ、ソケットやログを開こうとして
175    root でないため
176    (もしくは実行中の <code class="program"><a href="/programs/httpd.html">httpd</a></code>
177    が既に必要なポートにバインドしているため)
178    に失敗するでしょう。
179    これ以外の理由で起動に失敗したのであれば、
180    それは設定ファイルのエラーで、
181    緩やかな再起動を行う前にその誤りを修正しなければなりません。</div>
182</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
183<div class="section">
184<h2><a name="hup" id="hup">急な再起動</a></h2>
185
186<dl><dt>シグナル: HUP</dt>
187<dd><code>apachectl -k restart</code></dd>
188</dl>
189
190    <p><code>HUP</code> あるいは <code>restart</code> シグナルを親プロセスに送ると、
191    <code>TERM</code> と同様に子プロセスを kill しますが、
192    親プロセスは終了しません。
193    設定ファイルを再読込して、ログファイル全てを開き直します。
194    その後、新しい子プロセスを起動して応答を続けます。</p>
195
196    <p><code class="module"><a href="/mod/mod_status.html">mod_status</a></code>
197    を使っている場合は、<code>HUP</code> が送られた場合に
198    サーバ統計がゼロに設定されることに注意してください。</p>
199
200    <div class="note">再起動時に設定ファイルに誤りがあると、
201    親プロセスは再起動せずにエラーとともに終了します。
202    これを避けるには次の方法をご覧下さい。</div>
203</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
204<div class="section">
205<h2><a name="gracefulstop" id="gracefulstop">緩やかな停止 (Graceful Stop)</a></h2>
206
207<dl><dt>Signal: WINCH</dt>
208<dd><code>apachectl -k graceful-stop</code></dd>
209</dl>
210
211    <p>親プロセスは <code>WINCH</code> あるいは <code>graceful-stop</code>
212    シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する
213    (あるいは何もしていなければすぐに終了する)
214    ように<em>助言</em>します。
215    その後に親プロセスは <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code>
216    を削除し、全ポートからの Listen をやめます。
217    親プロセスはこのまま継続し、子プロセスがリクエストを処理する
218    のを監視しています。子プロセスが全て処理を終えて終了するか、<code class="directive"><a href="/mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code>
219    で指定されたタイムアウトに達した後で、親プロセスも終了します。
220    タイムアウトに達した場合は、残りの子プロセスには <code>TERM</code>
221    シグナルが送信され、強制終了されます。</p>
222    
223    <p><code>TERM</code> シグナルによって、"graceful" 状態にある親プロセスと
224    子プロセスの全てが直ちに終了します。ただし、
225    <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code> は既に削除
226    されてしまっていますので、<code>apachectl</code> や <code>httpd</code>
227    でこれらにシグナルを送ることはできません。</p>
228
229    <div class="note"><p><code>graceful-stop</code> シグナルを使うと、まったく同一の設定
230    ファイルを使った <code class="program"><a href="/programs/httpd.html">httpd</a></code> を同時に複数起動することが
231    できるようになります。
232    この機能を使うと、Apache をアップグレードする際にとても便利でしょう。
233    ただし、設定によってはデッドロックや競合状態 (レースコンディション) 
234    を引き起こすかもしれません。</p>
235
236    <p><code class="directive"><a href="/mod/core.html#lockfile">Lockfile</a></code> や <code class="directive"><a href="/mod/mod_cgid.html#scriptsock">ScriptSock</a></code> などでのディスク上のファイルについては、
237    ファイルにサーバの PID が含まれるようになっていて、httpd が複数同時に動作していても
238    問題がおきないように注意が払われています。
239    しかし、設定ディレクティブやサードパーティ製モジュール、CGI で使用される永続的な
240    ディスクを使ったロックや状態ファイルを活用している場合についても、
241    複数の <code class="program"><a href="/programs/httpd.html">httpd</a></code> が動作している状態であっても、それぞれで
242    ファイルを上書きしないように注意しなければなりません。</p>
243
244    <p>潜在的な競合状態についても心配する必要があるでしょう。
245    たとえば <code class="program"><a href="/programs/rotatelogs.html">rotatelogs</a></code> 形式のパイプによるログなどが該当します。
246    複数の <code class="program"><a href="/programs/rotatelogs.html">rotatelogs</a></code> インスタンスが同時に同じログファイルを
247    rotate しようとすると、ログファイルが破壊されるかもしれません。</p></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.2/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 2013 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>