9.14. Perl スクリプトの高速化(mod_perl)

Perl は、Linux のシステムコールの利用が可能であり文字列の操作が容易なため Web コンテンツの開発に多く利用されています。ただ、CGI として実行した場合には、起動時のオーバーヘッドによる性能上の問題があり、アクセスの集中するサイトでは、性能維持のために高性能なハードウェアが要求されます。mod_perl を利用すると、Apache に Perl インタプリタが組み込まれるため、この問題を緩和できるようになります。Turbolinux 10 Server の Apache は、mod_perl モジュールを標準で提供しています。/etc/httpd/conf.d/mod_perl.conf には以下の記述があり、mod_perl はデフォルトで読み込まれています。

LoadModule perl_module          modules/mod_perl.so

/var/www/perl/ 以下に格納したコンテンツを mod_perl として有効にするには、以下の例のように設定を行います。SetHandler perl-script は、外部プログラムではなく Apache 内部でインタプリタの解析を行う指定で、PerlHandler Apache::Registry は、そのために必要なモジュールの指定を行っています。PerlSendHeader On は、Apache で HTTP サーバーステータスを作成する設定です(Off のときには、Perl スクリプトで HTTP サーバーステータスを作成)。また、CGI の場合と同様にコンテンツを格納するディレクトリの Options ディレクティブに、ExecCGI を指定し、実行を許可するようにアクセス制限の設定をする必要があります。(詳細については、項9.9を参照)

Alias /perl/ /var/www/perl/
PerlModule Apache::Registry
<Location /perl>
    SetHandler perl-script
    PerlHandler Apache::Registry
    Options ExecCGI
    allow from all
    PerlSendHeader On
</Location>

この設定によりユーザーは、/var/www/perl/ ディレクトリに格納した Perl で開発されたコンテンツを mod_perl スクリプトとして実行することが可能になります。

mos_perl スクリプトやその他の情報については、perl.apache.org の Web サイトや専門書籍を参照してください。