しらぎくモバイルシステムは第4.300版(平成19年 4月 2日)より、mod_perlに対応しました。
但し、暫定的な対応なので、環境に依っては正常に動作しない恐れもあります。
特に、新規に設置される場合には必ず通常のCGIで動作を確認してから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
$cgi_ext
…CGIの拡張子の指定mod_perlで実行させるスクリプトの拡張子が .cgi
または .pl
のいずれでもない場合には、.
より後の部分を入れて下さい。
例えば、拡張子を .mpl
とする場合には、 $cgi_ext='mpl';
とします。
通常のCGI環境では正しく動作しても、mod_perl環境に切り替えた途端に全く動作しなくなる事も充分あり得ます。
以下の点に注意してみて下さい。
mod_perlはスクリプトを二回目以降は一回目の三倍弱〜十倍以上もの速さで実行出来るようにします。
しかしながら、通常のCGIとは大きく異なるため、移行してもすぐには動作しない場合もあります。
安全に移行するためには、以下のようにする事をお奨めします。
第4.300版(平成19年 4月 2日)より前のヴァージョンからmod_perlを利用する場合、「K.cgi」「img.cgi」を最新ヴァージョンに差替えて再度設定する必要があります。