ライン

ポイント:ホームページの参照者数をリアルに表示するバイナリカウンタ

ライン

 はじめに

www/wwwcount

 バイナリCGIカウンターアプリのwwwcountを導入します。
もう既にメンテナンスされていないようですし、またホームページにカウンターを付けているページも少なくなったのですが。
一応設置メモを作成し直します。

 FreeBSD 9.2での例です。

 導入と設定

導入

 早速、導入を開始します。portsから導入を行います。
最近なんだかメッセージが来るので、/etc/make.confに

MAKE_JOBS_UNSAFE=yes

を加えてportsを利用することにしました。

# cd /usr/ports/www/wwwcount
# make install clean
.
.
*cgi-bin directory [/usr/local/www/cgi-bin]: /usr/local/www/apache24/cgi-bin
*Base directory [/usr/local/etc/Counter]:
* Config directory [/usr/local/etc/Counter/conf]:
* Name of the configuration file [count.cfg]:
*Data directory [/usr/local/etc/Counter/data]:
*Digits directory [/usr/local/lib/Counter/digits]:
*Log directory [/var/log]:
* Name of the log file [Counter.log]:

Your configuration:
----------------------------------------------------------------
CgiBinDir=/usr/local/www/apache22/cgi-bin
BaseDir= /usr/local/etc/Counter
DigitDir=/usr/local/lib/Counter/digits
ConfDir= /usr/local/etc/Counter/conf
ConfFile=count.cfg
DataDir=/usr/local/etc/Counter/data
LogDir=/var/log
LogFile=Counter.log
----------------------------------------------------------------
Everything looks OK [y|n]?y
.
.
    First of all you must know your
        1) fully qualified domain name (FQDN), for example,
            if your hostname is foo and your domain name is bar.com,
            then your FQDN is
            foo.bar.com

        2) IP address of your host, for example,
            192.165.155.2

        3) If your host has any nickname defined, for example,
            www.foo.com. Note, th nick name also has to be a FQDN.

Continue [y|n]?y
* Enter your fully qualified domain name [no default]: HOST.example.ne.jp
* Enter your IP address [no default]: XXX.YYY.ZZZ.aaa
* Does your host have any nickname [y|n]:? y
* Enter your host's nickname (FQDN) [no default]: www.example.ne.jp
* Do you want to allow automatic file creation [[y|n]? n
* Do you want the program to run in strict mode [[y|n]? y
* Do you want to ignore access hits from your own host [y|n]? y
* Allow using the rgb.txt file [y|n]? y
* Do you want to allow the counter to be reloaded [y|n]? n
* Do you want to log error messages [[y|n]? y
* Do you want to show error messages to browsers [[y|n]? n

以上のような流れで導入が行われます。

若干、修正すべき部分は残るので続きの作業を行います。

 導入されたバイナリは、

# cd /usr/local/www/apache24/cgi-bin/
# ll
total 124
-rwx------  1 nobody  nogroup  108790 Feb 14 15:55 Count.cgi*

という状態となっています。

# chown www:www Count.cgi
# chmod 500 Count.cgi
# cd /usr/local/etc
# chown -R www:www Counter
# chmod 400 Counter/conf/count.cfg

/usr/local/etc/Counter/data 以下のファイルは自動生成にしませんでしたので、あらかじめ touchコマンドでファイルを生成しておきます。

# touch -t 200001010000 example.ne.jp.count
# chown www:www example.ne.jp.count
# chmod 664 example.ne.jp.count

などのようにしておきました。

設定

 設定ファイルの確認と修正を加えます。
設定ファイルは、 /usr/local/etc/Counter/conf/count.cfg です。

 導入時に決めた内容がオプションで反映されていることを確認します。

[options]
  auto_file_creation=No
  strict_mode=Yes
  allow_rgb_database=Yes
  count_reload=No
  log_error_messages=Yes
  show_error_messages_to_browsers=No

 以下の設定は、カウンターを進めることをさせないIPアドレスを列挙する箇所です。

[ignore IPs]
  192.168.0.*
  XXX.YYY.ZZZ.aaa

 また、以下の部分に並べたIPアドレスアドレスまたはドメイン名のものでしか、カウンターを使用させないように記述することができます。

[authorized]
  www
  www.example.ne.jp

 上記、Googleなどのキャッシュ(キャッシュ側を見てもカウンターは進める)のために、googleのアドレスを許可するなどを加えるなど、いろいろなことを設定されている方はおられます。

オリジナル修正

 次にオリジナルの画像を使った利用についての設定を実施します。
/usr/local/lib/Counter 以下に設置します。

# cd /usr/local/lib
# chown -R www:www Counter/
# cd Counter/digits
# ls -la
total 20
drwxr-xr-x  2 www  www  512 Mar  1 08:52 A
drwxr-xr-x  2 www  www  512 Mar  1 08:52 B
drwxr-xr-x  2 www  www  512 Mar  1 08:52 C
drwxr-xr-x  2 www  www  512 Mar  1 08:52 D
drwxr-xr-x  2 www  www  512 Mar  1 08:52 E
drwxr-xr-x  2 www  www  512 Mar  1 08:52 bang
drwxr-xr-x  2 www  www  512 Mar  1 08:52 cd
drwxr-xr-x  2 www  www  512 Mar  1 08:52 cdd
drwxr-xr-x  2 www  www  512 Mar  1 08:52 cdr
-r-xr-xr-x  1 www  www  432 Mar  1 08:52 mkstrip.sh

のようなものが初期で入っていると思います。
ここに準備されている A〜Eなどは "/cgi-bin/Count.cgi?dd=x" の部分の"x" に相当するディレクトリ名です。

 今回ここでは "J" というディレクトリを作成し、ここに準備したファイルを sftpやFTP でアップすることにしましょう。

# mkdir J
# chown www:www J
# chmod 777 J

サーバにftp等 で接続し、 J ディレクトリに zero.gif one.gif two.gif three.gif four.gif five.gif six.gif seven.gif eight.gif nine.gif colon.gif am.gif pm.gif colon.gif comma.gif dash.gifに相当するファイルをアップロードします。

 次に、この mkstrip.sh をそのディレクトリにコピーしておきます。

# cp mkstrip.sh J
# chmod 755 J
# cd J

 これが終わったら、stripファイルの生成を行います。
小さなスクリプトを作成しておき、これを利用することにします。
mkstrip.sh という名前で作りました。

#!/bin/sh
mkstrip \
zero.gif one.gif two.gif three.gif four.gif five.gif six.gif seven.gif \
eight.gif nine.gif>strip.gif

上記の例では、数字だけのファイルで実施した例なので、全種類で実施する場合にはこれらも含めた形で実施することになります。

 実際に利用する場合には、html上に

<IMG src="/cgi-bin/Count.cgi?dd=J&pad=0&trgb=cdccff&ft=0&df=example.ne.jp.2.cnt">

のように埋め込む形になります。

 具体例をもってやってみることにします。
このドメインのFavicon.ico でも利用させていただいている「ぴよの素材屋さん」の7種類の動物カウンターを設置してみることにします。
AM/PMとコロン、ダッシュも準備されているので取り込むことにしました。

 猫の物をいただくことにします。ルールの通り、piyo_n_014_5_0.gif に相当するものは、zero.gif として保存します。
これを ftpで /home/foo/tmp などにアップロードします。

# ls
am.gif          dash.gif        five.gif        nine.gif        pm.gif          six.gif         two.gif
colon.gif       eight.gif       four.gif        one.gif         seven.gif       three.gif       zero.gif

AM/PMとコロン、ダッシュも準備されているので取り込むことにしました。
※そのままの名前でも問題はないですが、その場合には、mkstrip.sh の内容をそれに併せて変更してください

 スクリプトも反映させたものにするために、

#!/bin/sh
mkstrip \
zero.gif one.gif two.gif three.gif four.gif five.gif six.gif seven.gif \
eight.gif nine.gif colon.gif am.gif pm.gif dash.gif dash.gif > strip.gif

と修正しました。

# sh mkstrip.sh

とすれば、strip.gif ができたはず。

# mkdir -p /usr/local/lib/Counter/digits/F
# mv strip.gif /usr/local/lib/Counter/digits/F
# chown -R www:www /usr/local/lib/Counter/digits/F

 以上で、できあがり。

 透過GIFのはずなのに、透過しないのは気づきませんでした。(というか、なんでダッシュがリスを受信していたかの方がびっくり)
透過加工されたイメージは以下の通りです。(実際には、最後も猫に戻しましたけど)

※上記に書いた手順と多少違うけど、やっていることは同じなので修正しないままで放置します。

いかがでしょうか?表示されていますでしょうか。
透過させるために、背景色の色を見て背景色は消すことにしました。

 以下のように指定したものです。

<IMG src="/cgi-bin/Count.cgi?dd=F&ft=0&trgb=c0c0c0&df=random">

 こんな感じで利用してみてください。以下、パラメータの指定例を以前のホームページソースより再掲載します。

パラメータの指定

 Count.cgiの後には ? で続けて、パラメータをつなげばいいだけです。(上記の例のように)

 
■ファイル名,枠(フレーム)の色と幅を指定

<IMG src="/cgi-bin/Count.cgi?df=file-name&ft=x&frgb=color">
# cd /usr/local/etc/Counter/data
# chmod 664 sample.cnt
# chown www.www sample.cnt
df には、/usr/local/etc/Count/data/file-name という形で置かれるファイル名。
frgbには、実際のカウンターの周囲の枠(フレーム)の色を指定するもの。
HTMLに同様に文字で色を単語で書くことも可。GRB値 00ff00 が一般的
ft はその太さを指定。
<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&ft=0&frgb=blue">

<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&ft=4&frgb=009900">

<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&ft=12&frgb=ffff00">
■カウンター画像のイメージの選択

〜&dd=x">
自分でイメージ画像をつくったり、フリーの画像を使ったりすると楽しくなります。指定しない場合には Aがデフォルトとして指定される。
dd は、イメージの種類を指定。初期に準備されている5種類(右の通り)やオリジナルとして、自分で追加したものなどを設置することができる。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&dd=A">
[上記の例のA]
 [B]
 [C]
 [D]
[E]
■カンマ編集をする

〜&comma=T">
Tの時はカンマ編集する、Fの時はカンマ編集しない
comma は、カンマ編集をした方が良いと思う場合に追加するものです。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&comma=T">
■色を変える

〜&srgb=color&prgb=color">
色を変えたい時に指定します。srgbには現状指定されている色を指定し、prgbには変えたい色を指定します。
srgb には 黄緑の 00ff00 を指定し、prgb に表示したい文字色を指定します。自分で作成したものなどで色だけを変更したい場合には楽しく使えます。背景色などを変更する場合にも使うことができます。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&srgb=00ff00&prgb=ffffff">

<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&srgb=00ff00&prgb=ffff00">
■色を反転させる
〜&negate=T">
negate は背景色と文字色をネガとポジのフィルムのような逆転させた表示を行う指定です。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&negate=T">


以下が通常の場合の表示。ネガとポジという感じ。
<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&negate=F">
■透過させる
trgb=color">
trgbは変更後の色を指定します。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&trgb=000000">
■気づかれないようにカウンターを置く
〜&sh=T">
shFに設定すれば hidden の状態で表示されません。Tにすれば表示される通常の状態です。この内容は 0 としてもFと同様に扱われます。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&sh=F">
※当然なにも表示されてこない
■カウントアップしない設定
〜&incr=F">
この指定は、カウンターが増加されないまま表示させるもの。
incr=Tだと通常に増加。Fだと有効になる。
<IMG src="/cgi-bin/Count.cgi?df=sample.cnt&incr=F">
■単純に数字を表示させるツールで使う
〜?lit=string">
任意の数字を表示。
lit には 数字、カンマ、A/PなどのAM/PMを示すたぐいの文字や記号が入れることができます。
<IMG src="/cgi-bin/Count.cgi?lit=54321">
■時間や時刻を表示する
〜?display=clock">
〜?display=date">
displayclockdateで指定することができます。日付ではdformatYYMMDDのように指定すれば年月の配置を指定することができます。時間ではtformatというもので24と指定すればで24時間表示。timezoneの指定でグリニッジ標準時からの時間も指定可能です。 日付を表示するケース
<IMG src="/cgi-bin/Count.cgi?display=date&dformat=YYMMDD">

時間表示
<IMG src="/cgi-bin/Count.cgi?display=clock&tformat=24">
■カウンタの桁数を指定する
〜&md=n">
mdに表示桁数を指定することでサプレスされない数値が表示されます。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&md=8">
■文字を回転させる
〜&rotate=B&degrees=180">
rotateにTまたはFを指定します。角度の指定はdegreeで指定します。時計回りに指定しますが、rotateだけの指定の場合には逆回りの90度となります。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt&degrees=180">
■乱数を表示させる
〜&df=random">
乱数というものが何に意味があるのか不明ですが…dframdomを指定することが可能。 <IMG src="/cgi-bin/Count.cgi?df=random">
■ゼロサプレス(0をつめて表示させる)
〜&pad=T">
patFを指定するとサプレスが指定できます。 <IMG src="/cgi-bin/Count.cgi?df=sample.cnt1&pad=F">
その他

 &st=n という指定は、上積みしたい数を加えることができます。以前公開していたホームページなどの件数などを加えたいなどのケースに用いることができるでしょう。

【改訂履歴】作成:2009/03/01 更新 2014/02/14
【参考リンク】
WWW Homepage Access Counter and Clock … オフィシャルページ

Copyright © 1996,1997-2006,2007- by F.Kimura,