CGIを使えるようにする
Apacheの標準設定ではCGIが使えないようになっているので設定を変更しなければならない。
最初にPerlがインストールされているか確認しておこう。「which perl」としてPerlがインストールされているディレクトリ名が表示されればPerlはインストールされている。もし何も表示されないなら、「apt-get install perl」でPerlをインストールできる。
$ which perl /usr/bin/perl $
CGIの実行を許可する
CGIの利用を許可するには、「/etc/httpd/conf/httpd.conf」の830行目あたりにある「#AddHandler cgi-script .cgi」のコメントを解除する。httpd.confを保存したら、「/etc/rc.d/init.d/httpd restart」でhttpdを再起動する。
#
# AddHandler: allows you to map certain file extensions to "handlers",
# actions unrelated to filetype. These can be either built into the server
# or added with the Action command (see below)
#
# If you want to use server side includes, or CGI outside
# ScriptAliased directories, uncomment the following lines.
#
# To use CGI scripts:
#
#AddHandler cgi-script .cgi ←行頭の「#」を削除する
次にhttpd.confの660行目あたりを見てほしい。次のような記述があるはずだ。
「ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/」というのは、「http://×××/cgi-bin/」にアクセスがあったときは、「home/httpd/cgi-bin」の内容を使うという意味だ。つまり、CGIスクリプトは/home/httpd/cgi-binディレクトリに入れておけばいいことになる。
その次の部分は/home/httpd/cgi-binディレクトリではCGIスクリプトの実行を許可するという意味。このディレクトリ以外の場所にCGIスクリプトをおいておいても、ブラウザで開いたときには「Forbidden」と表示されるだけで実行はされない。
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
<Directory /home/httpd/cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
CGIのテストを行う
CGIが実行できるようになったか確認してみよう。次のCGIスクリプトをviに打ち込んで、「home/httpd/cgi-bin/」ディレクトリに「test.cgi」のような名前で保存しよう。そして、ファイルのパーミッションを755に変更したら、ブラウザのアドレス欄に「http://×××/cgi-bin/test.cgi」と入力する。画面に「test」と表示されれば成功だ。
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<body>\n"; print "test\n"; print "</body>\n";
もし「Forbidden」とエラーが表示されれば、ディレクトリやCGIスクリプトのパーミッションを確認する。両方とも755にしておく。また、CGIスクリプトがそのまま表示されたときは、上で作業した「AddHandler」の設定が間違っていないか見直そう。