まえがき
デスクトップCGIフレームワークを用いたアプリケーションにおいては、同一のCGIを繰り返して起動したり、CGIからCGIを呼び出すようなスクリプトを書くことが多く、連続的、連鎖的にCGIが起動されます。その度に新たなプロセスを生成していては、パフォーマンス的には不利です。このような場合には、PerlのCGIにおいてはmod_perlを使うとよいはずです。今回は、WindowsのApacheでmod_perlを使う方法を取り上げます。
mod_perl導入前後で、第7回連載記事のスクリプトの動作が体感的に変化することを確かめてください。
ご質問などがあれば、jscripter9@gmail.com宛てにメールをいただいても結構です。ご質問に基づいて得られた内容につきましては、必要に応じて本連載で使わせていただく予定です。
対象読者
Windows上のApache+Perl+MySQL+Firefoxの環境で動作するアプリケーションを作ってみたい方。
必要な環境
記事の前提となる環境の導入方法は、前回、簡単にまとめています。詳細は、連載の第1回や第4回を参照ください。少なくともWindows環境下でApache、MySQL、PerlとFirefoxを使える必要があります。デスクトップCGIのセキュリティについては第2回でApacheの設定などに触れています。今回のApacheのhttpd.confの設定はその復習にもなるでしょう。その他の項目は必要に応じて各記事を参照してください。
前回の記事から、Apacheは2.2.4に、ActivePerlはバージョン5.8.8のBuild 820にアップグレードした環境を使用しています。今回から、Firefoxのバージョンは2.0.0.4となっています。著者のWindows環境は、Windows XP Professional Version 2002 Service Pack 2です。PCは、CPUがPentium4 2.8GHz、1GB RAMとメモリが128MBのグラフィクスカードを搭載しています。
「デスクトップCGIによるWebとデスクトップの融合」の記事一覧
- 第1回 Firefox/Apache用AtomリーダーCGIの作成
- 第2回 Web日記のAtom配信
- 第3回 独自の日記記述言語からHTML形式のWeb日記を出力・配信する
- 第4回 MySQLでAtomフィードをデータベース化 - 前編
- 第5回 MySQLでAtomフィードをデータベース化 - 後編
- 第6回 デスクトップCGIフレームワークでDHTMLを実現する
- 第7回 デスクトップCGIにinnerHTMLを使ったAjaxを導入する
mod_perlの導入
インターネット上の情報
Windows上でmod_perlを使用するための情報があるかどうか調べるために、Googleを使って、「mod_perl ActivePerl」でキーワード検索すると、下記の三つのサイトがトップにヒットします。それぞれ大変参考になります。著者も参考にさせていただきました。ありがとうございました。
- Windows + Apache + mod_perl
- メモランダム : Apache2 for Windows NT/2000/XP インストール
- ActivePerl5.8/6.mod_perl - Ground-SunLight
mod_perlモジュールのインストール
まず、mod_perlのモジュールの最新バージョンと対応するApacheのバージョンを調べます。ActivePerl用のmod_perlモジュールは、ActiveStateのPPM レポジトリ(Repository)には存在しません。theoryx5.uwinnipeg.ca(カナダのウィニペグ大学物理学部)にあるレポジトリにあります。
環境変数 ACTIVEPERL_PPM_HOME の設定
意外と盲点となるのが、PPM(Perl Package Manager)によるモジュールのインストールです。Web上では、これがうまく使えなくて断念しているケースも見掛けます。ユーザーの環境にも依存するのですが、環境変数「USERPROFILE」の文字列にユーザー名がShift_JIS文字列で入っているとGUIバージョンPPMが起動できなかったり、コマンドラインの ppm install package.ppd などでうまくインストールできなかったりします。そのような場合には以前にも紹介していますが、環境変数「ACTIVEPERL_PPM_HOME」に「C:\Perl5.8\ppm_home」(エクスプローラなどで実際にフォルダも作成しておく)などを設定しておきましょう。
PPMレポジトリの追加設定
ppmで起動したGUIバージョンのPerl Package Managerの[Edit]→[Preference]から、PPM PreferencesのNameとLocationにそれぞれ、「Theoryx5」(Nameは適当でよい)、「http://theoryx5.uwinnipeg.ca/ppms/package.xml」と入力して、[add]ボタンを押して設定完了です。無論、インターネットに接続した環境で実行してください。
mod_perlモジュールは2.0.3を使う
Perl Package Managerを起動して調べると、mod_perlのバージョンは2.0.3です。「Embed a Perl interpreter in the Apache/2.2 HTTP server」と説明がありますから、Apacheは2.2を使う必要がありそうです。
実際には、mod_perlをインストールする前に、ここで、Apacheのバージョン2.2をインストールしますが、その説明は後に回して、インストール済みとして話を進めます。
PPM GUIではインストールに失敗する
mod_perlをGUIのPPMからインストールしようとすると、インストールスクリプトが、mod_perl.soのインストール先を標準入出力で問い合わせてくるので、失敗してしまいます。Statusタブのウィンドウをよく確認してください。
ppm-shellを使ってインストールする
PPM GUIは使えないので、ppm-shellで次のようにしてインストールします。
- ppm-shellをコマンドプロンプトで起動して、「repo list」のコマンドで、theoryx5.uwinnipeg.caがレポジトリに登録されているかどうかを確かめます。
- リストになければ、「repo add [url] [name]」のコマンドで登録します。
- 「search mod_perl」でレポジトリを検索します。
- 検索結果のリストの番号を使って、「install 1」としてインストールします。
- 「Where should mod_perl.so be placed? [D:/Apache2/modules]」に対して、「C:/Apache2.2/modules」と応答します。
次図のようになります。この図は、一度アンインストールして、再インストールしている場面なので、アンインストールされなかったmod_perl.soがフォルダに残っているため、Overwriteの確認があります。最初のインストールであれば出てこないはずです。