mod_perlを利用する場合。

しらぎくモバイルシステムは第4.300版(平成19年 4月 2日)より、mod_perlに対応しました。

但し、暫定的な対応なので、環境に依っては正常に動作しない恐れもあります。

特に、新規に設置される場合には必ず通常のCGIで動作を確認してからmod_perlに対応させるようにして下さい

mod_perlを利用する場合・目次。

設置に際し注意すべき事。(平成19年 4月27日 訂正)

設置の際には以下の点に注意して下さい。

アパッチサーヴァでmod_perlを実装している事

mod_perlはアパッチサーヴァの拡張機能なので、アパッチサーヴァ以外では動作しません。

尚、mod_perlには 1.x と 2.x(1.99以降)の二つのヴァージョンがあり、それぞれアパッチサーヴァの 1.x 及び 2.x に対応しております。

両ヴァージョンにはかなり大きな差異があり、互換性はありませんが、制作者は双方のヴァージョンで動作確認をしております。

また、mod_perlはメモリを大量に消費するので、一般の共有サーヴァでは利用出来ない場合が多いでしょう。

スクリプト設置ディレクトリは絶対パスで指定する事

アパッチサーヴァの場合、通常のCGIで動作させるのであれば、$system_dirの右辺は特に設定する必要はありませんが、mod_perlでは実行ディレクトリが異なるため、必ずサーヴァ内での絶対パスを指定する必要があります。

パーミッションは第三者権限に対応する事 (平成19年 4月27日 訂正)

通常、SuExecでCGIを実行する場合、パーミッションは運営者権限に対応すれば実行出来ます(すなわち、CGIスクリプトなら700、ライブラリやデータファイルなどは600)。

しかしながら、mod_perlはCGIではないのでSuExecが利用出来ず、従って第三者権限となります。

このため、パーミッションは全て第三者権限に対応する必要があります。

具体的には、以下のようにして下さい。

必ずセキュリティ対策を施す事 (平成19年 4月27日 追記)

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に於ける問題点

mod_perlに関しては、以下の問題点もありますので、充分考慮されるようお奨めします。

mod_perlの設定。

.htaccess または httpd.conf にて、mod_perl が実行されるように設定して下さい。

mod_perl 1.x(=アパッチ 1.x)環境の場合。

mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。

<Files ~ "\.スクリプト拡張子$">
    SetHandler      perl-script
    PerlHandler     Apache::Registry
    PerlInitHandler Apache::StatINC
    PerlSendHeader  On
    </Files>

四行目の PerlInitHandler Apache::StatINC は、スクリプトの差替が行われた際にそれに即時に対応出来るようにするためのものです。

五行目の PerlSendHeader On は、HTTP応答ヘッダを自動的に付与すると言うものです。

mod_perl 2.x(1.99以降=アパッチ 2.x)環境の場合。

mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。

<Files ~ "\.スクリプト拡張子$">
    SetHandler      perl-script
    PerlHandler     ModPerl::Registry
    PerlInitHandler Apache::Reload
    PerlSendHeader  On
    setenv PERL_SEND_HEADER On
    </Files>

四行目の PerlInitHandler Apache::Reload は、スクリプトの差替が行われた際にそれに即時に対応出来るようにするためのものです。

五行目の PerlSendHeader On は、HTTP応答ヘッダを自動的に付与すると言うものです。mod_perl 2.xではヘッダを送信しないと一部機能が正常に利用出来ないようなので、必ず PerlSendHeader On にして下さい。

また、六行目のsetenv PERL_SEND_HEADER Onは、システムで必要な環境変数ですので必ずこの値に設定しておいて下さい。

スクリプトの設定。

スクリプトの設定については、以下の通りにして下さい。

システムディレクトリへの絶対パスの設定

K.cgi 及び img.cgi (拡張子が変更される場合もありますが)に於いて、以下の変数を設定して下さい。

$system_dir
必ずスクリプト設置ディレクトリへの絶対パスを指定して下さい。

設定スクリプト「KConfig.pl」での設定

$cgi_ext…CGIの拡張子の指定

mod_perlで実行させるスクリプトの拡張子が .cgi または .pl のいずれでもない場合には、. より後の部分を入れて下さい。

例えば、拡張子を .mpl とする場合には、 $cgi_ext='mpl'; とします。

動作しない場合。

通常のCGI環境では正しく動作しても、mod_perl環境に切り替えた途端に全く動作しなくなる事も充分あり得ます。

以下の点に注意してみて下さい。

スクリプトのパスの設定は正しく行われておりますか?
設定されていないか設定されていても値が正しくないと、下請けのスクリプトやHTML文書などが全く読み込めなくなります。
設定スクリプト「KConfig.pl」での設定は正しく行われておりますか?
拡張子の設定を忘れると画像が表示出来ないなどの問題が起こります。
パーミッションは適切な値になっておりますか?
CGI環境では無いので、必ず第三者権限で動作するようにして下さい。

安全に移行するには。

mod_perlはスクリプトを二回目以降は一回目の三倍弱〜十倍以上もの速さで実行出来るようにします。

しかしながら、通常のCGIとは大きく異なるため、移行してもすぐには動作しない場合もあります。

安全に移行するためには、以下のようにする事をお奨めします。

  1. まず、mod_perl向けの設定にしても通常のCGIとして動作する事を確認して下さい。通常のCGIとして動作するのであれば、mod_perl化への道は更に短くなります。逆にいきなり設定を代えてmod_perl上で動作させようとしても、先ず失敗するでしょうし、修正も容易ではありません。
  2. 続いて、「K.cgi」及び「img.cgi」のmod_perl版として、各銚子違いになるスクリプトを複製します。具体的にはこれらのスクリプトを拡張子だけmod_perl向けのものに変えて同じディレクトリに保存します。その上でサーヴァにこれらの新しいスクリプトを設置します。
  3. これらの新スクリプトがmod_perl上で正常に動作する事を確認します。
  4. 元のCGI向けのスクリプトは削除せずに残しておくと良いでしょう。何かトラブルがあった場合に一時的にCGIに戻す必要があるかも知れません。

旧ヴァージョンから移行する場合。

第4.300版(平成19年 4月 2日)より前のヴァージョンからmod_perlを利用する場合、「K.cgi」「img.cgi」を最新ヴァージョンに差替えて再度設定する必要があります。



ページ外へのご案内。