>> i's SQUARE >> Webサービス構築ガイド >> Linuxにmod_perlをインストールする

Linuxにmod_perlをインストールする

mod_perl はPerlをApacheモジュールとして動かすことが可能です。
mod_perl で動作するPerlコードは、最初にロードされる時に1度だけコンパイルされ、その後はメモリに常駐(キャッシュ)します。
CGIで動かしていたPerlコードが、これを導入するだけでオーバーヘッドが解消され、すさまじく高速になります。



■ダウンロード

mod_perl のページから Apache 2.0以上のバージョンを利用している場合は mod_perl 2.0(mod_perl-2.0-current.tar.gz)
それ以外は mod_perl 1.0(mod_perl-1.0-current.tar.gz) をダウンロードします。



■インストール

・mod_perlのコンパイル&インストール

tar zxvf mod_perl-2.0-gurrent.tar.gz
cd mod_perl-2.0.3
perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache2/bin/apxs EVERYTHING=1
make
make install
WITH_APXSオプションでapxsモジュールのあるパスを指定します。

・httpd.confを修正する
LoadModule perl_module modules/mod_perl.so
httpd.confに上記を追加後、Apacheを再起動します。



■CGI互換で動作させる

mod_perlはインストールしただけでは効果はなく、 どのプログラムを mod_perl 環境下で動作させるかを設定する必要があります。
とりあえずCGI互換で動作させるには、.htaccess に以下のように書きます。 (拡張子が.cgiのファイルのみ、mod_perlを使う例)

<Files *.cgi>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
Allow from All
PerlSendHeader On
</Files>
・通常のPerlとmod_perl版の実行結果の違いについて

通常のCGIでは、プログラムを実行すると全てメモリがクリアされますが、 mod_perl版では、スクリプトをメモリに保持しますが、コード内の変数も同様に保持します。
1回目のアクセスでは通常版、mod_perl版ともに同様の結果になりますが、 変数を初期化してなかったりスクリプトの組み方次第では、 2回目以降のアクセスで変数の値が通常版とmod_pel版で変わってくるケースもあります。
そこで、mod_perl版では変数の初期化や変数のスコープを特に注意してプログラミングする必要があります。



顧客がSEに好かれる方法は、
システム開発には時間と金がかかることを認識し、早めに仕様を完全に確定させることである
SEが顧客に好かれる方法は、
プログラマーに嫌われることである
by プログラマーの格言