mod_perlを利用する場合。
- コードを全面的に刷新した後継作・しらぎくモバイルシステム VIが公開されました。
今後、新規にモバイルサイトを構築される方には、しらぎくモバイルシステム VIのご利用を強く推奨いたします。
- しらぎくモバイルシステム VIは従来のしらぎくモバイルシステムとの互換性はありません。
- このため、制作者は当面従来のしらぎくモバイルシステムについても、適宜アップデートを続けていく予定です。
- PC向けに書かれたフル規格のHTML文書に対しては、しらぎくモバイルシステムFULL(開発名・HOMAKI & NAKAMA)をご利用ください。
- 利用出来るサーヴァが限られておりますが、絵文字の変換さえ出来れば良いと言う方には、ドコモ端末の絵文字を変換するだけのスクリプト・しらぎく絵文字変換スクリプトもお勧めしております。
しらぎくモバイルシステムは第4.300版(平成19年 4月 2日)より、mod_perlに対応しました。
但し、暫定的な対応なので、環境に依っては正常に動作しない恐れもあります。
特に、新規に設置される場合には必ず通常のCGIで動作を確認してからmod_perlに対応させるようにして下さい。
- 尚、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はメモリを大量に消費するので、一般の共有サーヴァでは利用出来ない場合が多いでしょう。
- 専用サーヴァかVPS(仮想専用サーヴァ)ではサポートしている場合があります。
- スクリプト設置ディレクトリは絶対パスで指定する事
- アパッチサーヴァの場合、通常の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,allowdeny from all</Files><Limit PUT DELETE>order deny,allowdeny from all</Limit>また、ログファイル設置ディレクトリについては、必ず以下のような.htaccessを設置するようにして下さい。
- 可能なら、HTTPでアクセス出来ないディレクトリ(コンテンツを収めている public_html 或いは httpdocs ディレクトリ外に新たに設置したプライヴェートなディレクトリ)に設置される事を強くお奨めします。
<files *>order deny,allowdeny from all</files> - mod_perlに於ける問題点
- mod_perlに関しては、以下の問題点もありますので、充分考慮されるようお奨めします。
- mod_perlでは読み込んだスクリプトをメモリにストアしっ放しにするため、通常のCGI以上のサーヴァリソースを恒常的に消費します。サーヴァリソースに不安がある場合は利用を控える事をお奨めします。
- mod_perlでは読み込んだスクリプトの差替については、特に指定しない限り即時には対応出来ません。このため、正常な動作が確認出来るまでの間は、差替に即時に対応出来る設定をする事をお奨めします。
mod_perlの設定。
.htaccess または httpd.conf にて、mod_perl が実行されるように設定して下さい。
mod_perl 1.x(=アパッチ 1.x)環境の場合。
mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。
<Files ~ "\.スクリプト拡張子$">SetHandler perl-scriptPerlHandler Apache::RegistryPerlInitHandler Apache::StatINCPerlSendHeader On</Files>
四行目の PerlInitHandler Apache::StatINC は、スクリプトの差替が行われた際にそれに即時に対応出来るようにするためのものです。
- 正常に動作するまでの間は、この行を入れておく事をお奨めします。
- 正常に動作した後も、設定ファイルの差替などに対応出来るようにするため、削除せずにコメントアウトする事(行頭に
#を付ける事)をお奨めします。
五行目の PerlSendHeader On は、HTTP応答ヘッダを自動的に付与すると言うものです。
- 当初は
PerlSendHeader Offでも動作させるようにしたのですが、安定しないのでなるべくPerlSendHeader Onにするようお奨めします。
mod_perl 2.x(1.99以降=アパッチ 2.x)環境の場合。
mod_perl上で動作する拡張子に対して、以下の指定を行って下さい。
<Files ~ "\.スクリプト拡張子$">SetHandler perl-scriptPerlHandler ModPerl::RegistryPerlInitHandler Apache::ReloadPerlSendHeader Onsetenv 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は、システムで必要な環境変数ですので必ずこの値に設定しておいて下さい。
- mod_perl 1.x との互換性のため必要となります。
スクリプトの設定。
スクリプトの設定については、以下の通りにして下さい。
システムディレクトリへの絶対パスの設定。
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とは大きく異なるため、移行してもすぐには動作しない場合もあります。
安全に移行するためには、以下のようにする事をお奨めします。
- まず、mod_perl向けの設定にしても通常のCGIとして動作する事を確認して下さい。通常のCGIとして動作するのであれば、mod_perl化への道は更に短くなります。逆にいきなり設定を代えてmod_perl上で動作させようとしても、先ず失敗するでしょうし、修正も容易ではありません。
- 続いて、「K.cgi」及び「img.cgi」のmod_perl版として、各銚子違いになるスクリプトを複製します。具体的にはこれらのスクリプトを拡張子だけmod_perl向けのものに変えて同じディレクトリに保存します。その上でサーヴァにこれらの新しいスクリプトを設置します。
- これらの新スクリプトがmod_perl上で正常に動作する事を確認します。
- 元のCGI向けのスクリプトは削除せずに残しておくと良いでしょう。何かトラブルがあった場合に一時的にCGIに戻す必要があるかも知れません。
旧ヴァージョンから移行する場合。
第4.300版(平成19年 4月 2日)より前のヴァージョンからmod_perlを利用する場合、「K.cgi」「img.cgi」を最新ヴァージョンに差替えて再度設定する必要があります。
- mod_perlを利用しないのであれば、これらの差替えは不要です。