ここでは、新しらぎく掲示板をmod_perl上で動作させる方法を解説します。
設置の際には以下の点に注意して下さい。
mod_perlはアパッチサーヴァの拡張機能なので、アパッチサーヴァ以外では動作しません。
尚、mod_perlには 1.x と 2.x(1.99以降)の二つのヴァージョンがあり、それぞれアパッチサーヴァの 1.x 及び 2.x に対応しております。
両ヴァージョンにはかなり大きな差異があり、互換性はありませんが、制作者は双方のヴァージョンで動作確認をしております。
また、mod_perlはメモリを大量に消費するので、一般の共有サーヴァでは利用出来ない場合が多いでしょう。
アパッチサーヴァの場合、通常のCGIで動作させるのであれば、$system_dir
の右辺は特に設定する必要はありませんが、mod_perlでは実行ディレクトリが異なるため、必ずサーヴァ内での絶対パスを指定する必要があります。
通常、SuExecでCGIを実行する場合、パーミッションは運営者権限に対応すれば実行出来ます(すなわち、CGIスクリプトなら700、ライブラリやデータファイルなどは600)。
しかしながら、mod_perlはCGIではないのでSuExecが利用出来ず、従って第三者権限となります。
このため、パーミッションは全て第三者権限に対応する必要があります。
具体的には、以下のようにして下さい。
mod_perl上で動作可能にするためのパーミッションの設定を行うと、第三者に容易にデータを盗み見される恐れが高くなります。
特にログファイルに至っては第三者に依る破壊も可能になりますので、安全対策として.htaccessでアクセスを規制するようにして下さい。
例えば、CGI設置ディレクトリに関しては、以下のような.htaccessファイルを設置する事を強く推奨します。
<Files ~ "\.pl$">
order deny,allow
deny from all
</Files>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
また、ログファイル設置ディレクトリについては、必ず以下のような.htaccessを設置するようにして下さい。
<files *>
order deny,allow
deny from all
</files>
mod_perlに関しては、以下の問題点もありますので、充分考慮されるようお奨めします。
.htaccess または httpd.conf にて、mod_perl が実行されるように設定して下さい。
mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。
<Files ~ "\.
スクリプト拡張子$">
SetHandler perl-script
PerlHandler Apache::Registry
PerlInitHandler Apache::StatINC
PerlSendHeader On
</Files>
四行目の PerlInitHandler Apache::StatINC
は、スクリプトの差替が行われた際にそれに即時に対応出来るようにするためのものです。
#
を付ける事)をお奨めします。五行目の PerlSendHeader On
は、HTTP応答ヘッダを自動的に付与すると言うものです。
PerlSendHeader Off
でも動作させるようにしたのですが、安定しないのでなるべく PerlSendHeader On
にするようお奨めします。mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。
<Files ~ "\.
スクリプト拡張子$">
SetHandler perl-script
PerlHandler ModPerl::Registry
PerlInitHandler Apache::Reload
PerlSendHeader On
setenv PERL_SEND_HEADER On
</Files>
四行目の PerlInitHandler Apache::Reload
は、スクリプトの差替が行われた際にそれに即時に対応出来るようにするためのものです。
PerlInitHandler Apache2::Reload
となる場合もあります。#
を付ける事)をお奨めします。五行目の PerlSendHeader On
は、HTTP応答ヘッダを自動的に付与すると言うものです。mod_perl 2.xではヘッダを送信しないと一部機能が正常に利用出来ないようなので、必ず PerlSendHeader On
にして下さい。
また、六行目のsetenv PERL_SEND_HEADER On
は、システムで必要な環境変数ですので必ずこの値に設定しておいて下さい。
スクリプトの設定については、以下の通りにして下さい。
K.cgi 及び img.cgi (拡張子が変更される場合もありますが)に於いて、以下の変数を設定して下さい。
$system_dir