Apache2 設定覚書

前書・注意事項

Apache のインストール

特に変更点はなし(ぉ。Server Infomation では、

Network Domain
localhost
Server Name
127.0.0.1
Administrator's Email Address
rinrin@funifuni.net
Install Apache HTTP Server 2.0 programs and shortcuts for:
for All Users, on Port 80, as a Service -- Recommended.
only for the Current User, on Port 8080, when started Manually.

しかし Win98SE ではサービスとして動作させるのはうまくいきませんでした。

Setup Type では Typical を選択。Destination Folder では、選択したフォルダ(デフォルトでは %programfiles%\Apache Group\)に Apache2 サブディレクトリを作ってインストールされるので、1.3系に上書きされる事はありません。ただし、2.0系をインストールする前に 1.3系は(もし起動していれば)終了させておきましょう。というか、1つのポート(ここでは80番ポート)を複数のプロセスが同時に使う事は出来ません。

インストールが終了すると、Apache Service Monitor が常駐します。サービスとしてインストールした場合はここから "Apache" や "Apache2" の制御ができます。それぞれ切り替えて挙動を確認するような時には便利でしょう(そんな機会がそれほど多いとは思いませんが)。

httpd.conf の設定

‥‥に入る前に、まずはドキュメントを読みましょう。日本語で記述されている文書を読むだけでもこの後起こるであろう問題を減らす事が出来ます。多分:)

DocumentRoot ディレクティブ

228行目付近。公開する(しないけど)文書の基準となるディレクトリ。Win32版での初期値は "%programfiles%/Apache Group/Apache2/htdocs"。Win32版でもディレクトリ区切り子が / (スラッシュ)であること、最後にスラッシュを付けないことに注意。

DocumentRoot "E:/localhost"

ちなみに、"//TOUYA/E/localhost" などとネットワーク上のディレクトリを指定する事はできないようです。追記:コンピュータ名が自分自身である場合は可能のようです(意味無し)。

<Directory /> セクション

238行目付近。/ (ルート)と全てのサブディレクトリに対する設定はこのセクション中に書くことができますが、まぁここは弄らないで、次のセクションで指定しましょう:)

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "%programfiles%/Apache Group/Apache2/htdocs"> セクション

253行目付近から。まずはディレクトリパスを DocumentRoot ディレクティブで指定した値に変更します。

Options ディレクティブはスペースセパレートで複数指定可能(None を除く)。初期値は Indexes FollowSymLinks、デフォルト値は All。CGI を使う場合は ExecCGI、SSI を使う場合は Includes、コンテントネゴシエーションを行なう場合は MultiViews を追加。値 AllMultiViews の機能を含まないので全ての機能を有効にするには All MultiViews とします。

AllowOverride ディレクティブは .htaccess ファイルによる上書きを許可するかの指定。デフォルト値は All ですが、初期値は None になっています。トクトクでは使えませんが、都合によりここは All にします。

Order ディレクティブ、Allow ディレクティブ、Deny ディレクティブはアクセス制御関係。Allow ディレクティブ、Deny ディレクティブで許可|拒否するホスト等を指定、Order ディレクティブでデフォルトのアクセス状態と、Allow ディレクティブと Deny ディレクティブの評価順を指定。Order ディレクティブのデフォルト値は Deny,Allow。初期値は Order ディレクティブが allow,deny、Allow ディレクティブが from all で、アクセスは常に許可。

ついでに、ここに DefaultLanguage ディレクティブと AddDefaultCharset ディレクティブを追加しておきます。

<Directory "E:/localhost">
    Options Indexes FollowSymLinks ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    DefaultLanguage ja
    AddDefaultCharset UTF-8
</Directory>

Order ディレクティブについての分かりやすいかも知れない解説

Deny,Allow の場合、アクセスはデフォルトで許可されます。Deny ディレクティブで指定されたアクセスだけが拒否されます。その上で Allow ディレクティブに指定されたアクセスは許可されます。Deny ディレクティブの指定は、Allow ディレクティブの指定によって上書きされます。

Allow,Deny の場合、アクセスはデフォルトで拒否されます。Allow ディレクティブで指定されたアクセスだけが許可されます。その上で Deny ディレクティブに指定されたアクセスは拒否されます。Allow ディレクティブの指定は、Deny ディレクティブの指定によって上書きされます。

これを上記初期値に当てはめると、allow,deny であるのでアクセスはデフォルトで拒否されます。そして Allow from all により、全てのアクセスが許可されます。Deny ディレクティブはないので拒否されるアクセスはありません。すなわち、アクセスは常に許可されます。

DefaultLanguage ディレクティブ

625行目付近から。このディレクティブは 1.3系では初期状態では含まれていませんでした。2.0系でも初期状態ではコメントアウトされています。せっかくなので指定しておきましょう。

DefaultLanguage en

これにより、言語拡張子のない全てのファイルは日本語のファイルだとみなされて HTTP 応答ヘッダに Content-Language: ja が追加されます。逆に言うと、日本語以外の言語によるドキュメントの場合は言語拡張子を与えなければならないという事ですが、私、日本人ですので。

ここでの指定はサーバ全体に適用されるものなのでとりあえず英語にしておきましょう。公開する(しないけど)ファイルについては、そのファイルのあるディレクトリについての <Directory> ディレクティブで指定したほうが美しいような気がします。

AddDefaultCharset ディレクティブ

705行目付近から。このディレクティブも 1.3系では初期状態では含まれていませんでした。しかし 2.0系では指定されていて、しかも初期値は HTTP/1.1 のデフォルトである ISO-8859-1。これによって文字符号化方式拡張子のない日本語のテキストファイルは確実に文字化けしてくれます(CGI で Content-Type に適切な文字符号化方式を示していれば別ですが)。

デフォルト値は Off なのでコメントアウトすると文字化けしなくなりますが、ここは素直に指定しておきましょう。

AddDefaultCharset ISO-8859-1

このままでは UTF-8 以外の文字符号化方式によるページ(NUA最萌色々)が文字化けしてしまうのでそれぞれのサブディレクトリ下に .htaccess ファイルで AddDefaultCharset ディレクティブを指定しておきます(例の都合)。

上に同じ。

AddHandler ディレクティブ

770行目付近から。CGI を使うときは cgi-script ハンドラを設定する AddHandler ディレクティブのコメントを外します。ついでに .cgi だけでなく .pl も CGIスクリプトとしておきます。

AddHandler cgi-script .cgi .pl

SSI を使う場合

拡張子 .shtml を持つファイルに対して SSI を使う場合、1.3系では以下のように記述していました。

AddType text/html .shtml
AddHandler server-parsed .shtml

2.0系(2.0.26 以降)では新たに追加された AddOutputFilter ディレクティブを用いて以下のように書くことができます。799行目付近から。

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

おまけ

ここまでの設定でローカルサーバとしては十分に使えるものになります(多分)。ここはそれに追加して何かしようというコーナー(?)です。

1.3系のマニュアルを参照する

2.0系でもかなりの日本語マニュアルが用意されていますが、わりと参照頻度が高い(と思われる) core モジュールや Windows での Apache の使用についてのマニュアルには日本語版がなかったりします。というわけで 1.3系のマニュアルを読めるようにしましょう。そんなに変更点があるわけでもないので参考程度にはなります。

Alias /manual13 "%programfiles%/Apache Group/Apache/htdocs/manual"

<Directory "%programfiles%/Apache Group/Apache/htdocs/manual">
    Options MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

以上を httpd.conf の最後あたりにでも追加しておきましょう。これで http://localhost/manual13/ から 1.3系のマニュアルを読む事ができます。

ちなみに 2.0系のマニュアルは http://localhost/manual/ から読む事ができるように初期状態で設定されています。487行目付近から。


もりば <rinrin@funifuni.net>

Valid XHTML 1.1! Valid CSS!