Index


NAME

Top

ZeroCH::Document::ModPerl - mod_perlによる高速化

DESCRIPTION

Top

img0chはCGI環境下でも動作しますが、読み込む必要があるモジュールの多さゆえにとても 動作が遅いのですが、mod_perlを使って高速化をはかることが出来るようになっています。 ここではmod_perlを利用してApacheのPerlハンドラーとして高速化を行う説明をします。

なお、mod_perlの設定方法は今後変更される可能性があります。

REQUIREMENT

Top

mod_perlを利用する前に以下のモジュールをあらかじめインストールする必要があります。

* mod_perl

いわずもがなですが、mod_perlをインストールする必要があります。

* libapreq

mod_perl(1.x)で利用する場合はlibapreqが必要です。 http://search.cpan.org/dist/libapreq/から入手可能です。

* libapreq2

mod_perl(2.x)で利用する場合はlibapreq2が必要です。 http://search.cpan.org/dist/libapreq2/から入手可能です。 libapreq2を利用する場合Apacheモジュールとしてビルドする必要もあります。

CONFIGURE

Top

上記のモジュールのインストールが完了した後、設定ファイルを記述する必要があります。 以下にmod_perlのバージョンごとの記述例を記載します。

設定ファイルはhttpd.confとは別のファイルを作成してそのファイルに記述するべきでしょう。 例えばhttpd.confと同じディレクトリにzeroch.confという設定ファイルを作成して そのファイルを取り込むにはhttpd.conf

  Include conf/zeroch.conf

と入れる必要があります。

mod_perl 1.x

以下は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

以下は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>

RESTART

Top

以上が終了した後設定を反映させるためにhttpdを再起動する必要があります。 モジュールを読み出す必要があるため、httpdの起動時間が少し長くなります。

AUTHOR

Top

hkrn <hikarincl2@yahoo.co.jp>

COPYRIGHT

Top