CGI用エイリアスの設定(ScriptAlias)

広告

CGIはサーバ側で動作するプログラムです。通常のファイルであればクライアントから要求があればファイルの内容を返すだけですが、CGIのファイルに対して要求があった場合にはファイルを内容を返す代わりに要求があったCGIをサーバ側で実行し、その結果をブラウザに返します。

CGIを使う場合はドキュメントルート内にCGIのプログラムをそのまま置いておくことはあまり行いません。CGIは実行するためのものであり、プログラムファイル自体をダウンロードされたり表示したりされないようにするためです。その為、ドキュメントルート以外の場所にCGI用のディレクトリを作成し、「ScriptAlias」を使ってCGIに対するリクエストと実際のディレクトリを対応付けます。

ScriptAlias 見た目上のディレクトリ 実際のディレクトリ(フルパス)

良く使われるのは次のような記述です。

ScriptAlias /cgi-bin/ "D:/Apache Group/Apache2.2/cgi-bin/"

この場合は「http://localhost/cgi-bin/test.pl」などのようなリクエストが合った場合には、「D:¥Apache Group¥Apache2.2¥cgi-bin¥test.pl」を実行してその結果をクライアントに返すことになります。

「Alias」と同じようなものですが「ScriptAlias」を使ってエイリアスが設定された場合には、そこに含まれる全てのファイルがCGIのプログラムであるとApacheが認識し、そして実行することが可能に設定されます。つまりそこにあるファイルに対する要求が合った場合にはApacheはCGIプログラムの要求があったと判断して実行した結果を返そうとします。

では「httpd.conf」に記述を追加してみます。実際にはデフォルトの状態で次のような記述が既に存在します。「httpd.conf」ファイルで「ScriptAlias」を検索してみて下さい。295行目付近に記述があります。

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "D:/Apache Group/Apache2.2/cgi-bin/"

上記のようにCGI用ディレクトリが「(Apacheをインストールしたディレクトリ)¥Apache2.2¥cgi-bin」でよければこのまま利用することが出来ます。またディレクトリもデフォルトで用意されています。

ScriptAliasの設定

ScriptAliasを設定したディレクトリには次のページで説明する実行の許可や拡張子の登録は不要です。ただ、ドキュメントルートの外にありますので外部からアクセスを許可しておく設定は必要です。

<Directory "D:/Apache Group/Apache2.2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

デフォルトで「httpd.conf」には上記のように設定されていますので、そのままの設定で構いません。もし異なる設定がされていたり設定が無い場合には上記の記述を追加しておいて下さい。

サンプルの実行

では簡単なプログラムを作成して置いてみます。今回はPerlを使ったプログラムを記述します。(WindowsでPerlを使うにはActivePerlが広く利用されています。ActivePerlについては『ActivePerlインストール』を参照して下さい)。

test.pl

#!d:/Perl/bin/perl.exe

print "Content-type: text/html;¥n¥n";
print "<html><body><h1>test cgi</h1></body></html>¥n";

上記のファイルを「D:¥Apache Group¥Apache2.2¥cgi-bin¥」ディレクトリに配置します。(スクリプトファイルの1行目はPerlの実行ファイルがある場所です。ご自分の環境に合わせて変更して下さい)。

それではブラウザで「http://localhost/cgi-bin/test.pl」を見てください。

ScriptAliasの設定

上記のように表示されれば成功です。「test.pl」の実行された結果がブラウザに表示されています。

( Written by Tatsuo Ikura )