<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>設定ファイル</title>
</head>
<!-- English revision: 1.8 -->

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<body
 bgcolor="#FFFFFF"
 text="#000000"
 link="#0000FF"
 vlink="#000080"
 alink="#FF0000"
>
<!--#include virtual="header.html" -->
<h1 align="CENTER">ファイルの設定</h1>

<ul>
<li><a href="#main">メインの設定ファイル</a></li>
<li><a href="#syntax">設定ファイルの構文</a></li>
<li><a href="#modules">モジュール</a></li>
<li><a href="#scope">ディレクティブの適用範囲</a></li>
<li><a href="#htaccess">.htaccess ファイル</a></li>
<li><a href="#logs">ログファイル</a></li>
</ul>

<hr>

<h2><a name="main">メインの設定ファイル</a></h2>

<table border="1"><tr><td valign="top">
<strong>関連モジュール</strong><br><br>
<a href="mod/mod_mime.html">mod_mime</a><br>
</td>

<td valign="top">
<strong>関連ディレクティブ</strong><br><br>
<a href="mod/core.html#ifdefine">&lt;IfDefine&gt;</a><br>
<a href="mod/core.html#include">Include</a><br>
<a href="mod/mod_mime.html#typesconfig">TypesConfig</a><br>
</td></tr></table>

<p>Apache は <a href="mod/directives.html">ディレクティブ</a> を
設定ファイルに平文で書くことにより設定します。メインの
設定ファイルは普通は <code>httpd.conf</code> という名前です。
このファイルの位置はコンパイル時に設定されますが、コマンドラインの
<code>-f</code> フラグにより上書きできます。その上、他の設定ファイルが
<code><a href="mod/core.html#include">Include</a></code> ディレクティブ
によって追加されているかもしれません。どのディレクティブも
これらの設定ファイルのどれにでも入れられます。Apache は起動時か
再起動時のみメイン設定ファイルの変更を認識します。</p>

<p>Apache 1.3.13 の新しい機能として、設定ファイルが実際はディレクトリで
あるときにはそのディレクトリで見つかったすべてのファイル
(とサブディレクトリ) を解析するというものがあります。利用法としては、
バーチャルホストを追加するときに、それぞれのホストに対して小さな設定
ファイルを作り、設定ディレクトリに置くというものが挙げられます。
こうすると、単にファイルの追加、削除をすることにより全くファイルを
編集することなくバーチャルホストの追加、削除ができます。これは自動化を
ずっと簡単にします。</p>

<p>
サーバは mime ドキュメントタイプを含んでいるファイルも読み込みます。
ファイル名は <a href="mod/mod_mime.html#typesconfig"
>TypesConfig</a> で設定され、デフォルトで <code>mime.types</code>
になっています。</p>
<hr>

<h2><a name="syntax">設定ファイルの構文</a></h2>

<p>Apache 設定ファイルは1行に1つのディレクティブからなります。
バックスラッシュ "\" はディレクティブが次の行に継続していることを
示すために行の最後の文字として使われているかもしれません。
行の最後とバックスラッシュの間に他の文字や空白があってはいけません。</p>

<p>設定ファイルのディレクティブは大文字小文字を区別しませんが、
引数にはしばしば区別するものがあります。ハッシュ文字 "#" で始まる行は
コメントと見なされて無視されます。設定ディレクティブの後の行では
コメントが含まれていては<strong>いけません</strong>。ディレクティブの
前の空行と空白は無視されますので、わかりやすくするためにディレクティブを
インデントすることができます。</p>

<p>設定ファイルの構文エラーは
<code>apachectl configtest</code> かコマンドラインオプション
<code>-t</code> を使って調べられます。</p>

<hr>

<h2><a name="modules">モジュール</a></h2>

<table border="1"><tr><td valign="top">
<strong>関連モジュール</strong><br><br>
<a href="mod/mod_so.html">mod_so</a><br>
</td>
<td valign="top">
<strong>関連ディレクティブ</strong><br><br>
<a href="mod/core.html#addmodule">AddModule</a><br>
<a href="mod/core.html#clearmodulelist">ClearModuleList</a><br>
<a href="mod/core.html#ifmodule">&lt;IfModule&gt;</a><br>
<a href="mod/mod_so.html#loadmodule">LoadModule</a><br>
</td></tr></table>

<p>Apache はモジュール化されたサーバです。コアサーバには
一番基本的な機能だけが含まれています。拡張機能は Apache に
ロードされる<a href="mod/index-bytype.html">モジュール</a>として
利用可能です。デフォルトではコンパイル時にモジュールの<a
href="mod/module-dict.html#Status">基本</a>セットが
サーバに含まれます。サーバが<a href="dso.html">動的ロード</a>モジュールを
使うようにコンパイルされている場合は、モジュールを別にコンパイルして、
いつでも <a href="mod/mod_so.html#loadmodule">LoadModule</a>
ディレクティブを使って追加できます。そうでない場合は、モジュールの
追加や削除をするためには Apache を再コンパイルする必要があります。
設定ディレクティブは <a
href="mod/core.html#ifmodule">&lt;IfModule&gt;</a> ブロックに
入れることで特定のモジュールが存在するときだけ
設定ファイルに含まれるようにすることができます。</p>

<p>コマンドラインオプション <code>-l</code> を使って
現時点でどのモジュールがサーバにコンパイルされているかを
知ることができます。

<hr>

<h2><a name="scope">ディレクティブの適用範囲</a></h2>

<table border="1"><tr><td valign="top">
<strong>関連ディレクティブ</strong><br><br>
<a href="mod/core.html#directory">&lt;Directory&gt;</a><br>
<a href="mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a><br>
<a href="mod/core.html#files">&lt;Files&gt;</a><br>
<a href="mod/core.html#filesmatch">&lt;FilesMatch&gt;</a><br>
<a href="mod/core.html#location">&lt;Location&gt;</a><br>
<a href="mod/core.html#locationmatch">&lt;LocationMatch&gt;</a><br>
<a href="mod/core.html#virtualhost">&lt;VirtualHost&gt;</a><br>
</td></tr></table>

<p>メイン設定ファイルにあるディレクティブはサーバ全体に適用されます。
サーバの一部分の設定だけを変更したい場合は
<code><a href="mod/core.html#directory">&lt;Directory&gt;</a>,
<a href="mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</a>,
<a href="mod/core.html#files">&lt;Files&gt;</a>,
<a href="mod/core.html#filesmatch">&lt;FilesMatch&gt;</a>,
<a href="mod/core.html#location">&lt;Location&gt;</a>,
<a href="mod/core.html#locationmatch">&lt;LocationMatch&gt;</a>
</code>
セクションの中に置くことで適用範囲を決められます。これらのセクションは
その中にあるディレクティブの適用範囲を特定のファイルシステムの位置や
URL に限定します。非常に細粒度の設定を可能にするために、セクションを
入れ子にすることもできます。</p>

<p>Apache は同時に多くの違うウェブサイトを扱う能力があります。
これは <a href="vhosts/">バーチャルホスト</a> と呼ばれています。
特定のウェブサイトにのみ適用されるようにするために、ディレクティブは
<code><a href="mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
セクションの中に置くことでも適用範囲を変えることができます。</p>

<p>ほとんどのディレクティブはどのセクションにでも書けますが、
中にはコンテキストによっては意味をなさないものもあります。例えば、
プロセスの作成を制御しているディレクティブはメインサーバのコンテキストに
のみ書くことができます。どのディレクティブをどのセクションに書くことが
できるかを知るためにはディレクティブの
<a href="mod/directive-dict.html#Context">コンテキスト</a>を調べてください。
詳しい情報は、<a
href="sections.html">Directory, Location, Files セクションの動作法</a>
にあります。</p>

<hr>

<h2><a name="htaccess">.htaccess ファイル</a></h2>

<table border="1"><tr><td valign="top">
<strong>関連ディレクティブ</strong><br><br>
<a href="mod/core.html#accessfilename">AccessFileName</a><br>
<a href="mod/core.html#allowoverride">AllowOverride</a><br>
</td></tr></table>

<p>Apache ではウェブツリーの中に置かれた特別なファイルを使って
非中央集権的な設定管理をできます。その特別なファイルは普通は
<code>.htaccess</code> という名前で、
<a href="mod/core.html#accessfilename"><code
>AccessFileName</code></a> ディレクティブでどんな名前でも指定できます。
<code>.htaccess</code> ファイルに書かれたディレクティブはファイルを
置いたディレクトリとその全てのサブディレクトリに適用されます。
<code>.htaccess</code> ファイルはすべてのリクエストで
読み込まれるため、変更はすぐに反映されます。

<p>どのディレクティブが <code>.htaccess</code> ファイルに書けるかを
調べるには、ディレクティブの
<a href="mod/directive-dict.html#Context">コンテキスト</a> を調べてください。
サーバ管理者はさらにメイン設定ファイルの <a
href="mod/core.html#allowoverride"><code>AllowOverride</code></a>
を設定することでどのディレクティブを <code>.htaccess</code> ファイルに
書けるようにするかを制御することができます。</p>

<hr>

<h2><a name="logs">ログファイル</a></h2>
<!-- XXX: This section should be moved to its own file -->
<h3>セキュリティに関する警告</h3>
<p>
Apache がログファイルを書いているディレクトリに書き込める人は誰でも
ほぼ確実にサーバが起動された uid のアクセスを取得できます。
そしてそれは普通 root です。その結果をよくわからずにログが保管されている
ディレクトリに書き込み権限を与えたり<em>しない</em>でください。詳細は
<a href="misc/security_tips.html">セキュリティ情報</a>を参照してください。</p>

<h3>pid ファイル</h3>

<p>起動時に Apache は親 httpd プロセスのプロセス ID を
<code>logs/httpd.pid</code> ファイルに保存します。このファイル名は
<a href="mod/core.html#pidfile">PidFile</a>
ディレクティブで変更することができます。プロセス ID は管理者がデーモンを
再起動したり終了したりするために使います。Unix では HUP と USR1 シグナルで
デーモンが設定ファイルを再読み込みします。TERM シグナルはデーモンを
優雅に終了させます。Windows では、代わりにコマンドラインオプション -k を
使います。
詳しい情報は<a href="stopping.html">起動と終了</a>を参照してください。</p>

<p>
プロセスが異常終了する (もしくは kill される) と、子 httpd プロセスを
kill する必要があります。</p>

<h3>エラーログ</h3>

<p>サーバはエラーメッセージをログファイルに記録します。デフォルトは、Unix
では <code>logs/error_log</code> で Windows と OS/2 では
<code>logs/error.log</code> です。ファイル名は <a
href="mod/core.html#errorlog">ErrorLog</a> ディレクティブで設定できます。
違う<a
href="mod/core.html#virtualhost">バーチャルホスト</a>
に違うエラーログを設定することができます。</p>

<h3>転送ログ</h3>

<p>サーバは普通それぞれのリクエストを転送ファイルにログを取ります。
デフォルトは Unix では <code>logs/access_log</code> で Windows と
OS/2 では <code>logs/access.log</code> です。ファイル名は
<a href="mod/mod_log_config.html#customlog">CustomLog</a>
ディレクティブをで設定できます。違う<a
href="mod/core.html#virtualhost">バーチャルホスト</a>に
違う転送ログを設定することができます。</p>


<!--#include virtual="footer.html" -->
</body>
</html>
