ZeroCH::Document::ModPerl - mod_perlによる高速化
img0chはCGI環境下でも動作しますが、読み込む必要があるモジュールの多さゆえにとても 動作が遅いのですが、mod_perlを使って高速化をはかることが出来るようになっています。 ここではmod_perlを利用してApacheのPerlハンドラーとして高速化を行う説明をします。
なお、mod_perlの設定方法は今後変更される可能性があります。
mod_perlを利用する前に以下のモジュールをあらかじめインストールする必要があります。
いわずもがなですが、mod_perlをインストールする必要があります。
mod_perl(1.x)で利用する場合はlibapreqが必要です。 http://search.cpan.org/dist/libapreq/から入手可能です。
mod_perl(2.x)で利用する場合はlibapreq2が必要です。 http://search.cpan.org/dist/libapreq2/から入手可能です。 libapreq2を利用する場合Apacheモジュールとしてビルドする必要もあります。
上記のモジュールのインストールが完了した後、設定ファイルを記述する必要があります。 以下にmod_perlのバージョンごとの記述例を記載します。
設定ファイルはhttpd.confとは別のファイルを作成してそのファイルに記述するべきでしょう。 例えばhttpd.confと同じディレクトリにzeroch.confという設定ファイルを作成して そのファイルを取り込むにはhttpd.confに
Include conf/zeroch.conf
と入れる必要があります。
以下はmod_perl(1.x)における記述例です。 ${BASE}はtestディレクトリまでの物理的な絶対パス、 ${LOCATION}にはtestディレクトリのDocumentRootからの相対パスに 置換してください。
# mod_perlを静的リンクしているのであればLoadModuleの行は不要です。
LoadModule perl_module modules/mod_perl.so
# PerlHandlerをApache::RegistryにするとApache::Registryの
# CGIラッパーとして動作するようになります。また、クレジットの
# mod_perlの表記がCGIになります。
<IfModule mod_perl.c>
<Perl>
use lib qw(${BASE}/test/img0ch/4.0);
no lib qw(.);
use ZeroCH::ModPerl::BootStrap;
</Perl>
PerlSetVar ZeroCHConfigPath ${BASE}/test/zeroch-config.cgi
<Location ${LOCATION}/test/bbs.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::BBS
</Location>
<Location ${LOCATION}/test/read.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::Read
</Location>
<Location ${LOCATION}/test/r.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::Mobile
</Location>
<Location ${LOCATION}/test/zeromin.cgi>
SetHandler perl-script
PerlHandler Zeromin::App::Admin
</Location>
</IfModule>
以下はmod_perl(2.x)における記述例です。 ${BASE}はtestディレクトリまでの物理的な絶対パス、 ${LOCATION}にはtestディレクトリのDocumentRootからの相対パスに 置換してください。
# 以下のモジュールが静的リンクをしているのであればLoadModuleの行は不要です。
LoadModule apreq_module modules/mod_apreq2.so
LoadModule perl_module modules/mod_perl.so
# PerlHandlerをModPerl::RegistryにするとModPerl::Registryの
# CGIラッパーとして動作するようになります。また、クレジットの
# mod_perl2の表記がCGIになります。
<IfModule mod_perl.c>
<Perl>
use lib qw(${BASE}/test/img0ch/4.0);
no lib qw(.);
use ZeroCH::ModPerl2::BootStrap;
</Perl>
PerlSetVar ZeroCHConfigPath ${BASE}/test/zeroch-config.cgi
<Location ${LOCATION}/test/bbs.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::BBS
</Location>
<Location ${LOCATION}/test/read.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::Read
</Location>
<Location ${LOCATION}/test/r.cgi>
SetHandler perl-script
PerlHandler ZeroCH::App::Mobile
</Location>
<Location ${LOCATION}/test/zeromin.cgi>
SetHandler perl-script
PerlHandler Zeromin::App::Admin
</Location>
</IfModule>
以上が終了した後設定を反映させるためにhttpdを再起動する必要があります。 モジュールを読み出す必要があるため、httpdの起動時間が少し長くなります。
hkrn <hikarincl2@yahoo.co.jp>
Copyright(C) 2001-2006 0ch http://0ch.mine.nu
Copyright(C) 2004-2006 img0ch by hkrn http://hikarin.jp