Apacheの設定

 Apache がインストールできたら、次は設定です。デフォルトのままでも問題なく動作するはずですので、まずはデフォルトがどのような状態になっているかを説明します。そして、各プロバイダーやレンタルサーバに近い環境に設定を変更していきます。

デフォルト設定の状態

 ここでは、デフォルトの設定がどのようになっており、その設定がどのようになされているかを見ていきます。まず Apache の設定は何処で行うかを知らなければいけませんね。ここでは、基本的な設定に絞って説明します。

通常、そのままインストールしていれば、C:\Program Files\Apache Group\Apache\conf の中に各種設定ファイルがあるはずです。Apache の場合、残念ながら、GUI での設定はなく、ファイルを編集することで設定するのです。Windowsユーザには分かりにくいかもしれませんが、Unixでは一般的な手法で、Windows版ApacheでもUnixの手法が取り入れられています。設定ファイルはいくつかありますが、注目すべきファイルは一つだけです。それは「httpd.conf」というファイルです。このファイルを、テキストエディタで開きながら、設定を見ていきましょう。

環境構築において大事な設定は以下の通りです。

DocumentRoot

ドキュメントルートとは、ウェブサーバがHTMLファイルを公開するディレクトリのことです。デフォルトでは、通常、

C:\Program Files\Apache Group\Apache\htdocs

となっています。このディレクトリがドキュメントルートとなり、このディレクトリ配下のHTMLファイルがホームページとして公開されるわけです。Apacheをインストールしてウェブページが表示されることを確認しましたが(http://localhost/)、それはこのドキュメントルートのディレクトリ「htdocs」直下にある「index.html」を見たわけなのです。このドキュメントルート配下に「subdir」というサブディレクトリを用意し、その中に「hoge.html」というHTMLファイルを用意すると、アクセスするときのURLは、

http://localhost/subdir/hoge.html

のようになります。つまり、ドキュメントルート配下のディレクトリ構造がそのまま、URLに反映されるということになります。

では、この設定は何処にあるのでしょうか。Apache の設定ファイル「httpd.conf」を見てください。301行目に

DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"

と記述されていますね。これがドキュメントルートの設定です。Windowsの場合、ディレクトリを示す記号として「\」を使いますが、Apacheの設定では Unixの書き方を踏襲し「/」を使います。設定を変更する際には間違えないようにして下さい。

 

ScriptAlias

スクリプトエイリアスとは、CGIを動かすためには大事な設定です。先ほどのドキュメントルートとよく似ており、CGIを設置する場所(ディレクトリ)と、そのURLをマッピングするための設定です。Apache は、セキュリティー上、何処においてもCGIが動作するわけではありません。厳密にCGIが起動できる場所を設定で指定されているのです。デフォルトでは、

C:\Program Files\Apache Group\Apache\cgi-bin\

がCGIをおける唯一の場所で、http://localhost/cgi-bin/ でアクセスできるようにマッピングされています。Apache の設定ファイル「httpd.conf」では、610行目に設定されています。

ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"

試しに、CGIを動かしてみましょう。C:\Program Files\Apache Group\Apache\cgi-bin\ に、「printenv.pl」という Perlスクリプトがあるはずです。このファイルを「printenv.cgi」としてコピーしてください。そしてテキストエディタで「printenv.cgi」を開いてください。1行目に

#!/usr/local/bin/perl

と書いてありますが、これを

#!C:/perl/bin/perl

と書き直してください。これは Active Perl のインストール先を指定しています。別の場所にインストールした場合には、それにあわせて書き直してください。

ブラウザーで、http://localhost/cgi-bin/printenv.cgi にアクセスしてみてください。次のように表示されれば、OKです。細かい部分は、お使いのマシンによって異なります。

COMSPEC="C:\WINNT\system32\cmd.exe"
DOCUMENT_ROOT="c:/program files/apache group/apache/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="*/*"
HTTP_ACCEPT_ENCODING="gzip, deflate"
HTTP_ACCEPT_LANGUAGE="ja,fr;q=0.7,de;q=0.3"
HTTP_CONNECTION="Keep-Alive"
HTTP_HOST="localhost"
HTTP_USER_AGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
PATH="C:\namazu\bin;C:\Perl\bin\;C:\Perl\bin\;C:\kakasi\bin;
C:\WINNT\system32;C:\WINNT;D:\WINNT\System32\Wbem;
C:\WINDOWS;C:\WINDOWS\COMMAND"
QUERY_STRING=""
REMOTE_ADDR="127.0.0.1"
REMOTE_PORT="1108"
REQUEST_METHOD="GET"
REQUEST_URI="/cgi-bin/printenv.cgi"
SCRIPT_FILENAME="d:/program files/apache group/apache/cgi-bin/printenv.cgi"
SCRIPT_NAME="/cgi-bin/printenv.cgi"
SERVER_ADDR="127.0.0.1"
SERVER_ADMIN="webmaster@futomi.gr.jp"
SERVER_NAME="www.futomi.gr.jp"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE="<ADDRESS>Apache/1.3.22 Server at www.futomi.gr.jp Port 80</ADDRESS>\n"
SERVER_SOFTWARE="Apache/1.3.22 (Win32)"
SYSTEMROOT="C:\WINNT"
WINDIR="C:\WINNT"

AddHandler

CGIを設置するディレクトリは、設定ファイルで指定された場所に限定されることは上述の通りですが、CGIファイルの拡張子も設定ファイルで指定されています。デフォルトでは、「.cgi」のみがCGIとして認識され動作します。たとえ cgi-bin ディレクトリにCGIを入れても、例えば拡張子が「.pl」であれば動作せず、Internal Server Error となります。

設定ファイル「httpd.conf」の837行目に

#AddHandler cgi-script .cgi

と書いてあります。先頭に「#」がついていますので、無効になっている状態です。無効とはいえ、デフォルトで「.cgi」が有効になっていますので、仮に「#」をはずしたとしても Apache の動作は同じです。では、「.pl」という拡張子のファイルもCGIとして動作させたい場合にはどうするかというと、

AddHandler cgi-script .cgi .pl

と記述します。もしくは

AddHandler cgi-script .cgi
AddHandler cgi-script .pl

と2行で指定します。設定を変更したら、「Start Apache in Consol」画面で Control + C を押して一度 Apache を終了してから再度、Apache を起動してください。Apacheの設定変更は、Apacheを再起動しないと有効になりませんので、注意してください。

UserDir

今までの状態ですと、まだプロバイダーが提供する環境とは大きく異なります。やはり http://localhost/~hoge/ のようなURLでアクセスできるようにする方が、らしくなりますね。実はデフォルトで、http://localhost/~hoge/ のようなURLでアクセスできるように設定されています。

しかしディレクトリを作成しなければいけません。

まず、C:\Program Files\Apache Group\Apache\ に「users」というディレクトリ(フォルダ)を作成して下さい。作成した「users」の下に、さらにユーザ名に相当するディレクトリを作成してください。ここでは「hoge」とします。さて、その「hoge」ディレクトリの下に、HTMLファイルを何か作成してみてください。すると、http://localhost/~hoge/xxx.html でそのHTMLファイルにアクセスすることができますね。

これは、設定ファイル「httpd.conf」の359行目からの以下の記述で設定されています。

<IfModule mod_userdir.c>
UserDir "C:/Program Files/Apache Group/Apache/users/"
</IfModule>

設定変更

 さて、ここまではデフォルトの設定で、どうなっているかを説明してきました。しかし、この状態では、ユーザディレクトリ下にCGIを設置しても動作しません。http://localhost/~hoge/cgi-bin/xxx.cgi にアクセスすると、xxx.cgi ファイルの中身がブラウザに表示されてしまうだけです。最終的には、http://localhost/~hoge/cgi-bin/xxx.cgi というURLでCGIを動作させるようにします。

まず、ユーザディレクトリ「hoge」の下に、「cgi-bin」ディレクトリを作成しておいてください。

次に、Apache設定ファイル「httpd.conf」をテキストエディタで開いてください。359行目から3行で、先ほど説明した UserDir 指示子がありますが、その下あたりに、以下の指示子を記述して下さい。

<Directory "C:/Program Files/Apache Group/Apache/users">
  Options +ExecCGI
  AddHandler cgi-script .cgi
</Directory>

httpd.conf」を保存してから、Apache を再起動してください。

以上で、CGIテスト環境の構築が完了です。実際に、cgi-bin ディレクトリにCGIを置いて動作を確認してみてください。

Microsoft Windows プラットフォーム固有の情報 日本語訳

 Windows版Apache をインストールすると、日本語のHTMLマニュアルが添付されています。Apacheをインストール後、Apacheを起動し、http://localhost/manual/index.html にアクセスしてみてください。詳しい設定方法等が掲載されています。その中の、「プラットフォーム固有の情報」欄に「Microsoft Windows」へリンクがあります。この文書は、英文ですが、futomi が日本語訳を致しましたので、ご覧下さい。