ubuntuでのApache2へのmod_perl2導入

インストール

$ sudo apt-get install libapache2-mod-perl2
で、mod_perl2はインストール完了。

設定

apache2.confとかがincludeしてくれる位置に、適当な設定ファイルを作っておくといい。
mods-enabledの中にperl.confとして作っておくと他のmodと似たような配置になって分かりやすい・・・かも。
その他配置場所の候補としてはconf.dやバーチャルホストの設定ファイルの中など。
今回はmods-enabledの中にperl.confとして作成してみました。

# プリロードモジュールの設定
PerlModule Apache::DBI CGI DBD::mysql

# Registryモードでmod_perl2を動かす設定

    SetHandler perl-script
    PerlHandler ModPerl::Registry
    PerlSendHeader On
    Options +ExecCGI


# PerlRunモードでmod_perl2を動かす設定

    SetHandler perl-script
    PerlHandler ModPerl::PerlRun
    PerlSendHeader On
    Options +ExecCGI

プリロードモジュール機能
事前にモジュールをコンパイルしておく機能。ここで指定したモジュールはスクリプトの実行時にコンパイルすることが無くなる(事前にコンパイルされてる)ので、CGI環境をエミュレートするPerlRunモードでの実行速度向上が見込める。
Registryモード
いわゆる一般的な速いと言われるmod_perlの実行モード。一度コンパイルしたスクリプトをメモリ上にキャッシュし、2回目以降はそこから実行する。変数の内容が次回実行時に引き継がれたり、コンパイルしたスクリプトがメモリを占有したりと色々注意が必要。でも一番速い実行モード。
PerlRunモード
Apacheモジュールとして組み込まれたPerlインタプリタで毎回スクリプトコンパイル/実行するモード。Registryモードからスクリプトのキャッシュ機能を除いたような感じ。通常のCGI実行と比べるとPerlインタプリタの起動に掛かるオーバーヘッドが削減される。RegistryモードではCGI向けとして配布されてるPerlスクリプトが動かない事がほとんどなので、PerlRunモードでは通常のCGI実行環境に近づけることでそれらスクリプトが動作するようにしてある。それでも完全に一緒ではない。カレントディレクトリとか。