アクセスカウンタを設置した。どのくらいのお客様が来てくれているのかを知りたいというのももちろんあるが、主な目的はサイトが落ちていないかを自宅にいてもわかるようにしたいということ。ダイナミックDNSが外れていても自宅LANからは更新などが出来るため、しばらく気づかないということがあったのだ。
Movable Typeはそれ自体ではカウンタ機能は持っていないため、フリーソフトとして公開されているCGIプログラムを探す。あまり機能にこだわりはないので、日計カウンタ2を利用させていただくことにした。
設置の流れとしては、ダウンロードしたZIPファイルを解凍して、サーバにアップロードして、パーミッション類を整えて、Perlのパスを確認して、Movable Typeのテンプレートにカウンタ表示のリンクを埋め込むだけ。作業としては単純だ。
まず手元のPCにZIPファイルをダウンロードして解凍する。出てきたファイルはWindows形式(つまり文字コードがShift-JISで、改行がCRLF)なので、Linuxサーバ(文字コードはUTF-8、改行はLF)で使えるようにするために変換をしなくてはいけない。これはよく知られた手続きなので、FTPソフトによっては一括でやってくれるものがある。僕はシェアウェアのNextFTPを使っている。ホスト漢字コード=UTF-8N、ローカル漢字コード=無変換、ファイル名漢字コード=UTF-8、ホスト改行コード=LFとしてファイルを転送する。ちなみにホスト漢字コードをUTF-8NではなくUTF-8とすると、ファイルの先頭に<U-FEFF>という余計なコードが入るので注意。
CGIを配置できるディレクトリはWebサーバの設定で決まっている。Apacheであれば/var/www/cgi-binなどとなっている場合が多いだろう。ホームディレクトリを使っているなら~/public_html/cgi-binか。そこにdayxフォルダを配置する。
次に所有者、パーミッション、SELinuxコンテキストの設定をする。データ書き込みに使うファイルは書き込みビットと書き込み可能なコンテキストを設定する必要があるので注意。よくわからない人はrootになってdayxフォルダに入り、以下の通りにコマンドを打って欲しい。
chown -R apache:apache . chmod 705 dayx.cgi chmod 705 dayxmgr.cgi chmod 604 init.cgi chmod 705 lib chmod 604 lib/gifcat.pl chmod 604 lib/index.html chmod 705 data chmod 606 data/dayx.dat chmod 606 data/day.dat chmod 606 data/mon.dat chmod 604 data/index.html chmod 705 gif1 chmod 604 gif1/* chmod 705 gif2 chmod 604 gif2/* chmod 705 img chmod 604 img/*
SELinuxを使っていない方は以上で終了。SELinuxを使っている人は以下の作業も必要だ。
chcon -R user_u:object_r:httpd_user_content_t . chcon user_u:object_r:httpd_user_script_exec_t dayx.cgi chcon user_u:object_r:httpd_user_script_exec_t dayxmgr.cgi
それからday.cgiとdayxmgr.cgiの先頭行のPerlへのパスを自分のサーバのものに合わせて書き換える。
次に、連続リロードなどでカウンタがあがらないように設定する。init.cgiの$ip_check = 0; を$ip_check = 1;に書き換える。ただし実装を見てみると記録しているのは直近にアクセスした1アドレスだけのようなので、完全にユニークIP集計というわけではない。一日に何度も訪れるロボットがだいぶアクセス数をかさ上げしている予感...。
ここまでやったら設定は終了。Webページの好きなところに以下のようにリンクをはって設置する。僕はテンプレートモジュールのバナーフッターの<div id="footer-content">の中にはりつけた。
あなたは<img src="cgi-bin/dayx/dayx.cgi?gif">人目のお客様です。<br /> 本日は<img src="cgi-bin/dayx/dayx.cgi?today">人目のお客様です。 昨日は<img src="cgi-bin/dayx/dayx.cgi?yes">人のお客様がいらっしゃいました。