[Orangepekoe Tearoom] >> [Linuxによるサーバー構築] >> [アクセスカウンタの設置]   

アクセスカウンタの設置

自宅サーバーにアクセスカウンタを取り付けてどうするんだ?

■アクセスカウンタのCGIを探す

アクセスカウンタを探す理由は、今までDIONのアクセスカウンタをJustnetで使用していたが、DIONは解約するので、そのためのもの。
Perlでかかれたアクセスカウンタをいろいろダウンロードして、自宅サーバーにインストールしてみるが、すべて表示が鈍い。先頭の数字からニュと表示される。プロバイダで、サービスで用意されているアクセスカウンタは、表示されてしまえばそんなにストレスを感じたことがなかったのに。・・・とあれこれ試しているうちにC言語でかかれたWWWCOUNTの存在を知る。PerlとC言語が並べてあるサンプルを見ると明らかにスピードが違う。つまりPerlのCGIは個人用で、C言語でかかれたCGIは業務用ということかな?

■ダウンロード・コンパイル

ダウンロード・コンパイルは、「wwwcount のインストール」(http://takaai.com/tokatu/count/wwwcount.htm)の通りで、問題なく進行。最後にパーミッションを変更し、実行できるようにしないと「画像」という文字しかでません。これで、自宅サーバーの方のアクセスカウンタは設置終わりです。ここまではとても簡単。

■無料WEBサーバー(トクトク)に設置

容量無制限、PerlもC言語もOKの無料WEBサーバー。自宅サーバーでコンパイルしたものをそのままFTPソフトでアップしてみる。一応、自宅サーバーで、tarを使って圧縮してからコピーした。細かいパーミッションが引き継がれるかと思ったんで。
そう簡単にはいきませんでした。「Unable to open config file for reading」というメッセージがでて、数字が表示されない。ディレクトリやファイルのパーミッションをいろいろ変えてもメッセージは消えない。そこで、ファイラーソフトで、Count.cgiの中身を見ることにした。C言語なので、当然バイナリーであるが、そこに自宅サーバーで設定したディレクトリがしっかりかかれている。つまり、置いてある場所が違うので、設定ファイルがないというメッセージだったのだ。最初の設定ファイルにたどり着くまでのディレクトリは、このバイナリーに直接かかれているのである。
そこで、無料WEBサーバー側にはGCCがあるので、そこでコンパイルしようと思って、telnetでログインし、tarで解凍まではできたものの、makeコマンドが入っていないのでできなかった。
今度は、自宅サーバーでWEBサーバーと同じディレクトリを作り、そこにインストールされるようにコンパイルをし直した。なお、一度解凍したファイルを消して、解凍するところからやらないと設定が残ってしまうらしい。
このとき、FTPファイルで、転送モードを自動ではなく、バイナリーにすることをお忘れなく。改行のCR-LFをLFに変換してバイナリーのサイズが減ってしまう。拡張子で判断しているので、C言語のバイナリーも変換をおこなってしまう。
ということで、不可能だと思っていたことが、意外にもできてしまった。

■いろいろな場所に設置してみた。

自分で設置したので数に限りはなく使うことができる。今まで、それぞれのプロバイダごとで違っていたのと併用して置いてみた。アクセスカウンタの設定で、リロードしたときにカウントするかどうかを指定できるが、プロバイダによって設定が違うんですね。
それにしても、Perlって、JavaScriptとかVBScriptよりずっと速いというイメージがあったのですが、C言語の前では、PerlのCGIって遅いです。所詮インタープリタ言語ですもね。苦労してPerlに慣れるより、昔使っていたC言語を使えばいいってことですね。
【追記】あとで気付いたのですが、このレンタルサーバー(トクトク)は、環境変数 REMOTE_ADDR での IPの取得ができないので、 HTTP_FROM にしなければなりません。

戻る