WindowsNT/2000やWindows98でApache Webサーバを実行するための設定の説明です。
Win32版ApacheでもVirtual Host機能やProxy機能も一応は使えます。
また、mod-PerlやApache JServ(Servlet)他のモジュールが公開されています。
Windows版はまだUNIX版ほどは最適化されていないとか言われていますが、CGIのテストやワークグループ
サーバとしてWindows環境でも十分、Apacheを利用することができると思います。
1. Apacheをインストールする
Apache Software Foundation
サイトから最新のWin32版バイナリをダウンロードして、セットアップします。
自己解凍のインストーラになっていますので実行するだけでセットアップがはじまります。
| Apacheの各種エクステンションモジュールはapache.orgからリンクをたどってください。ちなみに、Java関連は Apache Java Project、Perl関連は、 The Apache/Perl Integration Project から情報を得ることができます。また、ミラーサイトJAPACHEで日本語の情報が得られます。 |
| Apache 1.3.4からは設定ファイルを一つに統一することが推奨されています。 Apache 1.3.4以降ではデフォルトでは "httpd.conf" のみが使われます。 httpd.conf内の指定によって、従来までの方法(httpd.conf/srm.conf/access.confに分けて定義)も可能です。 |
ServerType standalone (Webサーバの実行方法)
Win32版ではstandaloneのみ指定可能です。 inetdはUNIXの場合のみで inetd からの起動を指定
します。ただし、UNIXでの運用でも通常はstandaloneで実行します。
ServerName localhost (Webサーバの名前)
Windowsのスタンドアロン使用(クライアントPC等)でも任意の名前が付けられますが、 DNSがない
場合はhosts定義で名前解決する必要があります。 hostsファイルは、Windows98の場合は
\windows、WindowsNTの場合は \Windows\System32\Drivers\etc のディレクトリに作成します。
Port 80 (httpのポート指定)
通常は80のままにしておきます。
DocumentRoot "c:/home/root" (デフォルトのドキュメントルート)
ディレクトリの区切りは、"\" ではなく "/" を使います。ドキュメントルート(HTMLファイルなどの
標準の格納先)は任意の場所に設定できます。
UserDir "c:/home/*" (ユーザディレクトリの指定)
ここで指定したディレクトリ以下に作成されたユーザ別のHTMLファイル等は、チルダ記号で展開され
ます。'*'は任意のディレクトリ名です。たとえば hoge というユーザが c:\home\hoge\public_html
というディレクトリに index.html を設置した場合は、 http://サーバ名/~hoge/index.html
でアクセス
可能です。
使い方としては、c:\home以下にユーザ名のディレクトリを作成して、その中のpublic_htmlという
ディレクトリ以下にHTMLファイルがあればアクセスできるという指定になります。(UNIXの場合は
単に public_html の指定のみです)
MaxKeepAliveRequests 100 (リクエストを受け付ける最大数) KeepAliveTimeout 15 (同一クライアントからの接続継続時間) MaxRequestsPerChild 0 (プロセスが受け取る最大リクエスト数) ThreadsPerChild 50 (同時接続可能数)
これらはデフォルトでも動くようになりました。ver1.3の初期の頃はMaxRequestsPerChild が
0(無制限)ではCGIが実行できませんでした。 ThreadsPerChild でサーバが同時にハンドル
できる接続の最大数を指定しますので、多くのヒットがあればこの数字を確認して十分な大
きさに設定します。
DirectoryIndex index.html (デフォルトのHTMLファイル名)
ディレクトリのみのアクセスの場合、この名前のファイルがあればデフォルトで出力されます。
<Directory ディレクトリ> (ディレクトリアクセスの設定)
Options (オプションの指定)
All 全ての機能が使用可能。
ExecCGI CGIを許可する。
Includes SSIを許可する。
IncludesNOEXEC SSIを許可する。
ただし、#exec, #includeのコマンドは使用不可。
MultiViews MultiView(.*等のワイルドカード指定)を許可する。
Indexes DerectoryIndexのファイルが存在しないディレクトリ
アクセスの場合にディレクトリリストを出力する。
FollowSymLinks シンボリックリンクに従う。
SymlinksIfOwnerMatch アクセス対象のオーナやユーザIDがアクセス元と一致
する場合にシンボリックリンクに従う。
AllowOverride (アクセス制御のオーバライド可否)
All 全てオーバライド可能。
None 全て禁止。
AuthConfig ユーザ認証に関するディレクティブを許可。
FileInfo ドキュメントタイプのディレクティブを許可。
Indexes ディレクトリインデックス用ディレクティブを許可。
Limit ホストアクセス制御関係のディレクティブを許可。
Options Optionsのディレクティブを許可
実際にユーザディレクトリの定義をしてみましょう。条件はCGI/SSIが実行可能で Indexesは
無効、アクセス制御は全てオーバライド可能にします。
<Directory "c:/home/*/public_html">
Options MultiViews ExecCGI IncludesNoExec
AllowOverride All Order allow,deny Allow from all
</Directory>
この設定で、c:\home\ユーザ名\public_html" ディレクトリ以下でCGIが実行可能になりました。
cgi-bin以下と限定したい場合は最後に /cgi-bin を追加します。次にいくつかのCGI実行の
ための設定を行います。
ScriptAlias /cgi-bin/ "c:/usr/local/apache/cgi-bin/"
スクリプトエイリアスを定義します。この定義で指定されたディレクトリにあるファイルはCGI
スクリプトであることを設定します。エイリアスされたディレクトリは、サーバ名の後にエイリ
アス名を指定するだけでアクセスできます。実在するどんなディレクトリもエイリアス指定で
きます。
http://localhost/cgi-bin/hoge.cgi
次にMIMEタイプを定義して拡張子が*.cgiのものだけをCGIスクリプトであると定義しましょう。
ついでにSSIのための設定も行ってみましょう。
AddHandler cgi-script .cgi AddType text/html .shtml AddHandler server-parsed .shtml
最初の指定が、CGIのファイル拡張子は .cgi であると指定しています。下の2行はSSIの
ためのMIME定義と拡張子の定義です。
以上でApacheのコンフィギュレーション説明は終わりですが、これ以外のディレクティブは
デフォルトのままでも動作するでしょう。
3. Apacheの起動と終了
Apacheはコンソールコマンドから実行/停止する方法と、WindowsNTの場合はサービスに
組み込んで実行する方法があります。
起動確認に、http://localhost/ でアクセスしてみましょう。
うまく動作していれば、"It Worked!" 以下のページが表示されます。なお、長くApacheを
つかっていると、\apache\logsディレクトリにアクセスログとエラーログが溜まっていきます
ので、適当に削除する事を心がけてください。
以上でWindowsでApacheを使うための説明は終わりです。 Apacheの設定はここで説明
した以外にも沢山ありますし、Win32版用モジュール類も多く公開されています。UNIX版が
本家ですがWin32版も1.3.9からかなりレスポンスが改善されていますので、プライベート
で使う分には不満はないように思います。
なお、WindowsのApacheサーバでPerlのCGIスクリプトを使用する場合は、スクリプトの
1行目にUNIX同様にPerlのパスを記述する必要があります。このときのパス指定は
ドライブ指定からはじめて以下のように記述します。
#!c:/usr/local/bin/perl
(※c:\usr\local\binディレクトリにperl.exeが存在する場合です)