Red Hat 9 で mod_perl の導入と、状態の確認
Red Hat Linux 9 で mod_perl を導入し、その状態を確認したときのメモです。
mod_perl とは
mod_perl は Apache 上で Perl のプログラムを高速に動作させるモジュールです。通常、Perl で書かれた CGI は、リクエストの度に毎回プロセスが立ち上がるため、オーバーヘッドがかかります。mod_perl を導入すれば、mod_perl 上で動作する Perl プログラムは、初回ロード時にコンパイルされ、その後メモリにキャッシュされるので、呼び出し時間が短縮されます。メモリに常駐するので、その分メモリは食いますが、パフォーマンス劇的に改善されます。
よく、PHP や Java に比べて Perl は重くてパフォーマンスが悪いと言われますが、それは mod_perl を使っていない場合です。PHP も Apache に組み込まれているから動作が速いのですし、Java も事前に読み込まれていなければ、起動が遅いのは言うまでもありません。
インストール
Red Hat Linux 9 には mod_perl が附属しています。通常は勝手に入っていますが、インストールされているかどうか確認してみましょう。
$ rpm -q mod_perl mod_perl-1.99_07-5
どういうわけか Red Hat 9 では、安定版の 1.29 ではなく、開発版の 1.99 が入っています。 何も表示されない場合はインストールされていませんので、Red Hat Linux 9 の CD-ROM からインストールします。
# rpm -ivh mod_perl-1.99_07-5.i386.rpm
Red Hat Linux 9 の場合、これだけで設定は完了です。/etc/httpd/conf/httpd.conf を書き換える必要はありません。なぜなら、/etc/httpd/conf.d/ に perl.conf というファイルが置かれ、これが Apache の起動時に自動的に読み込まれるからです。これは Red Hat 系ディストリビューションのお約束です。
mod_perl の状態確認
mod_perl の状態を確認するには、Perl の Apache::Status モジュールが便利です。通常、このモジュールは mod_perl のパッケージに含まれています。ところが、先述の Red Hat Linux 9 用の RPM には、Apache::Status モジュールが含まれていません。
本来ならば mod_perl の RPM を作り直してインストールしなおしたいところですが、今回はファイル一つなので、直接取ってきました
# wget -O /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/Apache/Status.pm \ http://search.cpan.org/src/GEOFF/mod_perl-1.99_14/lib/Apache/Status.pm
次に、/etc/httpd/conf.d/perl.conf の末尾に次の設定を追加します。
# vi /etc/httpd/conf.d/perl.conf
<Location /perl-status> SetHandler perl-script PerlHandler Apache::Status </Location>
この後、Apache を再起動します。
# service httpd graceful
これで http://server_name/perl-status にアクセスして、次のような画面が表示されれば OK です。
この中の “Loaded Modules” で、現在読み込まれている Perl プログラムの確認が可能です。”Symbol Table Dump” を利用するには、別途 Devel::Symdump モジュールが必要になります。
注意事項
Apache::Status の出力する内容には、サーバの設定やローカル情報がたくさん含まれています。この内容はクラッカーを助けることになります。かならずアクセス制限をかけるか、確認が終わったら直ちに設定を無効にしましょう。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.