W2K3のIISにdopvSTAR*を組み込んだ

  • 投稿日:
  • by
  • カテゴリ:

 またまたMovable Type関連のネタ。仕事から早々に帰って来て、またしてもVPCいじり。今日は、過去に一度挫折したことがあるアクセス解析CGIdopvSTAR*の設置に挑戦した。 基本的に、LinuxやApache環境なら問題ないはずなんだろうけど、IISとActivePerlの組み合わせだと結構解説しているサイトが少ない。というか、割と挫折しているようにも見える。確かに、そのままcgi-binフォルダに解凍しただけじゃ全く動かないし、かといって、dsi.plファイルをどういじればまともに動いてくれるのかは、それなりに知っていないと難しい。 ただ、この手の問題は、パスが違ったりしていて、本来アクセスできるべきファイルにアクセスできないことが原因で動かない場合が大部分なので、CGIについて全くの素人のオレは、sysinternalsのfilemonを使って、どのファイルにアクセスしにいっているのかを調べてみることにした。

手順ここでは、dopvSTAR*は/cgi-bin/ds/にインストールされていることを想定している。cgi-binの仮想ディレクトリの下のdsフォルダということ。

1. まず、cgi-binフォルダに適当なサブフォルダを作って、dopvSTARのzipファイルを解凍する。

2. 解凍したフォルダのdsa.cgiやdsw.cgiは、設定ファイルdsi.plから情報を読んで動くので、このdsi.plファイルの中の具体的なパスを書き換えることになる。アクセス解析CGIのdsa.cgiを実行して、FilemonでまずひっかかったのはJcode.pmが無いということ。これはPerlのモジュールなので、ppmを起動して、>install Jcodeで解決。Jcode.pmを入れておかないと、解析画面の検索キーワードが化ける。

3. その次にひっかかるのは一連のplファイル群。これらは、dsi.plによればdopvSTAR*を展開したフォルダからの相対パスになっているはずだけど、Filemonのログを見ると、c:\inetpub\wwwroot\cgi-bin\以下にアクセスしようとしている。おかしいよね?dopvSTAR*はその下の./dsフォルダに解凍してるんだから、c:\inetpub\wwwroot\cgi-bin\dsフォルダの下のサブフォルダにアクセスしなくちゃいけないのに。ということで、dsi.plファイルの中に記述されている相対パスを機械的に全部「./」から「./ds/」に置換する。

4. 次に、dsa.cgiとdsw.cgiファイルを開き、この中の相対パスも「./」から「./ds/」に書き換えた。

5. 一旦dsa.cgiを起動してみると、フレームは表示されるものの、中身が空っぽ。再度Filemonで見てみると、dsa.cgiのパスが/cgi-bin/ds/ds/dsa.cgiになっている。dsi.plファイルを見てみると、さっき一括で置換したときにdsa.cgiのパスも書き換えられているので、ここは./dsa.cgiに戻す。

6. 再度dsa.cgiを実行すると、今度は期待通りの表示が現れた!!! ただし、まだアクセスログが書き込めたかわからないので、ログを記録するように設定しないといけない。

7. 「./ds/dat」フォルダ配下はログが保存される場所なので、エクスプローラを起動し、IUSR_<サーバー名>のユーザーに書き込みと変更のアクセス権(フルコントロールでもいいだろう)を与えて、詳細設定ボタンを押してサブフォルダにも継承させるように設定した。

8. 次に、Movable Typeにアクセスしたときにログを記録するために、このサイトの設定を実施して、index.htmlにカウンタが表示されるようにMTのテンプレートを修正。サイトを再構築してアクセスしてみる。トップページにカウンタが表示されていれば成功。

9. あとは、dsa.cgiを実行して、期待通りに解析できればよしなんだけど、グラフを表示してみると、グラフの画像が表示されない。。。おや?と思い、機械的に置換したdsi.plの「./ds/images」表記に直した部分を「./images」に戻してみたところ、グラフの棒が表示されるようになった。が、このままでは実はOSやブラウザのアイコンが表示されないことが発覚。Perlの内部処理でアイコンの存在を確認するところでは./ds/imagesという相対パスで問題ないものの、これが解析画面では/ds/ds/imagesというパスになってしまい、なぜかここだけdopvSTARのホームディレクトリを正しく取っている模様。どうやっても、ファイルの有無を確認する処理とアイコン埋め込みの両方を実現できそうになかったので、dopvSTARをインストールしたフォルダの下にもdsフォルダを作って/ds/dsというパスに矛盾が生じないようにし、imagesフォルダのショートカットを作成して/ds/dsフォルダにショートカットを移動した。  ということで、Filemon.exe のおかげで、修正すべきポイントが容易に絞り込め、一度は挫折したdopvSTARを組み込むことができた。