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 installWITH_APXSオプションでapxsモジュールのあるパスを指定します。
・httpd.confを修正する
LoadModule perl_module modules/mod_perl.sohttpd.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版では変数の初期化や変数のスコープを特に注意してプログラミングする必要があります。