株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

Apache:mod_perlモジュール

技術ドキュメント目次 -> Apache -> mod_perlモジュール

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


Apacheのmod_perlモジュールは、
Perl と Apache を連動させてさまざまな機能を提供するための、
強力なモジュールです。

mod_perl の活用事例としては、
CGIの高速化や、
DBとのコネクションプーリング(ApacheがDBにせつぞくしっぱなしの状態を)が有名ですが、
Apache API を使用して行える制御の基本的には全てが mod_perl を使用して行うことができます。

ここでは、
mod_perl のインストールと動作確認までを駆け足で説明します。

◆ インストール

mod_perlのサイト:http://perl.apache.org/
にアクセスして

http://cpan.valueclick.com/modules/by-module/Apache/mod_perl-1.22.tar.gz
をダウンロードします。
(更新されたバージョンが存在したら、そちらをダウンロードしてください。
 以下、バージョン 1.22 を前提にして話をすすめます。)

また、(あたりまえですが)mod_perl を使うには perl が必要になりますので、
まず perl が正常にインストールされていることを確認しておいてください。

$ perl -v
(バージョンについての情報が正常に出力される)
$


◆ libwwwの組み込み

mod_perlを動かすためには、
libwww モジュールが必要になるので、
Perlに libwwwモジュールを組み込みます。

なお、その際には、
libwwwが依存しているモジュール(libwwwが必要とする各モジュール)も
インストールする必要があります。

CPANモジュールを使用すると、
次のように入力することで モジュールを組み込むことができるので、便利です。

# perl -MCPAN -e shell
cpan> install Bundle::LWP

(始めて perl -MCPAN -e shell を実行するときは、
 対話式に幾つかの項目を入力する必要があります。)


◆ mod_perlのインストール

mod_perl-1.22.tar.gz をダウンロードしたディレクトリに移動し、
次のように入力することで、apache に mod_perl が組み込まれます。

(DSO対応のapacheが、
 /usr/local/apache_1.3.22/bin/apxs
 としてインストールされている環境に組み込むことを想定しています。
 DSO非対応のapacheに組み込む場合の手順は、付属するドキュメントを
 参照してください。)

# tar zxvf mod_perl-1.22.tar.gz
# cd mod_perl-1.22
# perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache_1.3.22/bin/apxs EVERYTHING=1
# make
# make test
# make intall

make test と入力した後、
Can't make test with APXS (yet) と表示されます。


◆ 動作確認

インストール後、
/usr/local/apache_1.3.22/libexec/ ディレクトリに libperl.so が
存在していることを確認してから、
apache を再起動すると、mod_perl が有効になります。

mod_cgi によって、CGIが高速化されたことを簡単に確認するには、
たとえば次のようにしてみてください。

httpd.conf に次の設定を追加します。
(ここでは、/usr/local/apache_1.3.22/htdocs が、
 ドキュメントルートのディレクトリであるとします)

PerlModule Apache::Registry
<Directory "/usr/local/apache_1.3.22/htdocs/modperlon">
    <Files *.cgi>
        SetHandler perl-script
        PerlHandler Apache::Registry
        PerlSendHeader On
    </Files>
</Directory>


上記の設定を行った後、
次の2つのファイル名でまったく同じ perl の CGI を設置します。
/usr/local/apache_1.3.22/htdocs/modperlon/index.cgi
/usr/local/apache_1.3.22/htdocs/modperloff/index.cgi

ここで用意する CGI は、ある程度規模の大きなCGIであるほうが、
下記のパフォーマンス測定がわかりやすい結果になるかもしれません。
ある程度規模の大きなCGIをすぐには用意できない場合は、
非常に大量のコメントが記述されているCGIを用いてもOKです。
(コメントの量が多いと、ファイルサイズが大きくなり、CGIを
 ロードするのに必要になるマシンパワーの軽減という 
 mod_perlのメリットが確認しやすくなります。)

その後、
Apache Bench を使用して、
それぞれの CGI がどれだけのパフォーマンスを出しているか確認します。

$ cd /usr/local/apache_1.3.22/bin
$ ./ab -n 100 -c 30 http://(ホスト名)/modperlon/index.cgi
$ ./ab -n 100 -c 30 http://(ホスト名)/modperloff/index.cgi


ab(Apache Bench)の出力結果として表示される
Request Per Second の値(1秒間あたりに幾つのリクエストを処理する
ことができるかを示す値)をもとに、
どちらのCGIがより多くのリクエストを処理できているか確認できます。




■ Apache についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。