2009年3月17日火曜日

Apache2+CGI Perlの設定 VirtualServer編

FreeBSD6.3
Apache2.2+CGI Perlの設定
VirtualHost 名前ベースのバーチャルサーバーを運用
/home/ユーザー/public_html/cgi-bin/ にCGIをおけるようにする

私は大体CGIを使わないで、RubyかPHPで開発するので
Perlは使用しないのですが、CGIでParlを使えるようにして欲しい
ということで、Apache2.2にPerlの設定をしてみました。

設定は簡単みたいです。
/usr/local/etc/apache22/httpd.confの

#ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

のコメントが付いていないか確認しコメントアウトする

バーチャルサーバーやディレクトリに対して
 Options +ExecCGI
 AddHandler cgi-script .cgi .pl
を追加する。

では早速作業開始。


#cd /usr/local/etc/apache22/
[httpd.conf]

  #コメントアウトする
  #ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/" 
:
<IfModule mime_module>
:
  #コメントアウトされていれば#を取り除く 
  AddHandler cgi-script .cgi .pl
:
</IfModule mime_module>
:
:
:


あとは、CGIを置くフォルダに対して
Options +ExecCGI
SetHandler cgi-script
を加える。
たとえば、
[httpd.conf]
:
<Directory /ほにゃららん>
:
</Directory>

#すでにあるDirectoryディレクティブの後ろに追加

<Directory /home/*/public_html/cgi-bin>
Options +ExecCGI
SetHandler cgi-script
</Directory>
:


と加える。

テストスクリプトを作成します
[hello.pl]
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI"




/home/daimazin/public_html/cgi-bin/hello.pl

に保存します。
スクリプトをWindowsで作成した場合、改行コードがCR+LFになるので
そのままでは"Internal Server Error"になります。
エディタで改行コードをLFに設定するか、
FTPで送るときに改行コードをLFに変換してください。
エディタが秀丸なら
[ファイル]-[エンコードの種類]-[改行=LF]
で変更できます。

パーミッションの設定を行います。

#cd /home/daimazin/public_html
#chmod 755 cgi-bin
#cd cgi-bin
#chmod 755 hello.pl


次に動作確認です。

http://www.daimazin.com/cgi-bin/hello.pl
とか
http://192.168.0.100/~daimazin/cgi-bin/hello.pl
をブラウザで開きます。

問題なく表示できれば完了。
できなければ、
/var/log/httpd-error.log
を参照し原因を探ってください。


ちとはまりました。。。。
/home/daimazin/cgi-bin
のように、cgi-binを置きたかったのですが、うまくいかなかった。
Options +ExecCGI
の"+"を忘れていて
ブラウザで"Forbidden"
とエラーが出て、あたふた。

.

0 件のコメント: