Apacheをmod_perl対応にする

Apacheを mod_perl 対応にして動作、パフォーマンスの検証を行う。

 
(1) ダウンロード
 
  http://perl.apache.org/download/index.html から mod_perl をダウンロードしておく。
 
 
(2) インストール

  既にApacheが DSO (Dynamic Shared Object)対応で構築済みの場合は、mod_perl モジュールを生成するだけでOK

  ≪DSO対応済みか確認≫

/path/to/httpd -l



mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c

  DSO対応済みのApacheなので(mod_so.c が表示されているので)早速インストールへ。

$ tar zxfv mod_perl-2.0-current.tar.gz
$ cd mod_perl-2.0.4
$ /usr/bin/perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache2/bin/apxs EVERYTHING=1
$ make
$ su
Password: ********
# make install

USE_APXS   ... 1 を指定するとApache拡張ツール(apxs)を使って組み込む。
WITH_APXS  ... apxs のPATH(通常はhttpdと同じディレクトリにいるハズ)
EVERYTHING ... 1 を指定すると全てのコンテンツハンドラを有効する。

 
 
(3) 設定ファイルの編集

# モジュールをロードする設定
LoadModule perl_module modules/mod_perl.so
AddModule mod_perl.c

<IfModule mod_perl.c>

# PerlRun版のAlias設定
Alias /cgi-perl-run/ "/path/to/cgi-bin/"
<Location "/cgi-perl-run">
  SetHandler perl-script
# PerlHandler Apache::PerlRun # 1.3系の場合
  PerlHandler ModPerl::PerlRun
  Options ExecCGI
  Allow from all
  PerlSendHeader On
</Location>
 
# Registry版のAlias設定
Alias /cgi-registry/ "/path/to/cgi-bin/"
<Location "/cgi-registry">
  SetHandler perl-script
# PerlHandler Apache::Registry # 1.3系の場合
  PerlHandler ModPerl::Registry
  Options ExecCGI
  Allow from all
  PerlSendHeader On
</Location>
 
</IfModule>

  ※URLの指定を変えるだけで、mod_perl版でも通常版でも動くように設定する。

Apache::PerlRun ... スクリプトおよびモジュールの Preload 機能を提供するがスクリプト自体はキャッシュされない。
                    起動されるスクリプトは毎回コンパイルされて実行されるので、
                    実行後にはそのスクリプトの名前空間の変数やサブルーチンはフラッシュされる。
                   (ただし、requireやuseされているモジュール内についてはフラッシュされない。)

Apache::Registry ... 実行コードをメモリ上にキャッシュすることによって高速化する。
                    変数のスコープ、初期化などを厳密に行う必要があるが、めっちゃ速くなるらしい。(シャアどころではないらしい。。なんでも何百%とか。)

 
 
(4) インストール確認

  確認用CGI : /path/to/cgi-bin/mod_perl.cgi

#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "MOD_PERL : $ENV{"MOD_PERL"}\n";
print "PROCESS ID : " . $$ . "\n";

  以下の3つのURLにアクセスして 「PerlRun版」「Registry版」の時だけ mod_perl のバージョンが表示されればOK。
  プロセスIDが変わらない事も忘れずに確認。

  「通常版」
    http://example.com/cgi-bin/mod_perl.cgi

  「PerlRun版」
    http://example.com/cgi-perl-run/mod_perl.cgi

  「Registry版」
    http://example.com/cgi-registry/mod_perl.cgi
 
 
(5)動作確認
 
 「mod_perlで動かすときの注意」は こちら を参照。
 
 
(6) パフォーマンス検証
 
 「mod_perlの効果を測定する」は こちら を参照。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-11 (木) 00:48:27 (5605d)