coocanでアクセスカウンターを作ってみた
2016/11/20


ずっと使っていたニフティーの「@homepage」が閉鎖になり、「coocan」なるサーバーに移転することになった。
インターネットの世界では、それなりに移動を続けないとゴミも溜まるし、なによりハードやソフトの変化が激しいので作り直しが必要なことなのはしょうがないのである。

ところが、今回の移動ではアクセスカウンターのサービスが終了するということだったのである。

まぁ、カウンターの値自体はあまり気にするものでもないのだが、カウントがアップしていくと「何人かの人は、こんな文章でも定期的に見に来てくれているンだな〜」と、なにげに嬉しいのである。
※、感謝!!、感謝!!である。

そのカウンターの運用が終了となってしまい、「なんとなくつまらないナ〜」という感じになり、「これは書く気を維持するためにもなんとかせねば」と思っていたのである。

ところがどっこい、ここのところ母親の体調悪化と入退院、介護の色々な手続きが重なり、あまつさえ秋からは自治会の会長なんぞを押し付けられてドタバタだったのでる。


今日は久しぶりに、妹が昼から明日のお昼までは母親の介護を引き受けてくれると言うので、ホームページの移動の手続きと、アクセスカウンターの設定をすることにしたのである。



さて、ネットでアクセスカウンターを調べてみると、有料、無料、色々なフリーソフトが出回っており、仕事を休職してしまっている私にとっては有料は論外としても、無料のものも高機能のものは色々設定がめんどくさそうである。
調べているうちに疲れてしまって嫌になった。

そこで、「簡単ならば作ってしまおう」と調べてみることにした。

早速サーバーのlacoocanの管理画面を見てみると、homepageディレクトリー内なら、cgiはどこでも動くと出ている。

ところがネット上には、「アクセスカウンターのサービスの提供をしない」という文言を「アクセスカウンターが動作しない(作れない)」と解釈してしまっている人もいるようなのである。
そんなことはなく、cgiさえ動けば作れるはずなのである。

ただ、積極的に「こうすればアクセスカウンターがホームページ上に現れます」というサービスをしないだけなのである。

ネット上のQ/Aの中には、ずいぶんいいかげんな解釈をして「出来ないようです」などと書く人がいるのである。
まぁ、書く方も書く方だけど、信じる方も信じる方だ!!ということなのかもしれない。



さて、アクセスカウンターとは如何なる原理で動いているのか?というと、簡単ではあるが、これこそがコンピューターの動作の基本中の基本とでもいうものなのである。

1、サーバー内部のどこかに、前回までのアクセス回数を覚えておく場所を作っておく。

2、ホームページが外部から閲覧されるたびに、とあるプログラムを動作させ、以下の処理を行う。

(1)、アクセス回数を覚えていた場所から回数を取り出す。

(2)、取り出した回数を1増加させる。

(3)、増加させた回数を覚えさせていた場所へ上書きする。

3、その最後の回数を文字にしてホームページ上へ表示する。

以上でアクセスする毎にカウントアップすることになるのである。
今回は、最低限の機能を使って実現しようという魂胆なのである。



※まずは、cgiの動作のテストを行う。
これが出来なけければ次へは進めない。

まず、"------"の内部の文をメモ帳で作成し、hello.cgiという名でhomepageディレクトリーに直接アップロードする。
※詳しいことを知りたい人は「cgi」と「perl」というものを調べると、ネットで色々出ている。
-------------------------------
#!/usr/bin/perl

# レスポンスヘッダの出力
print "Content-type: text/html; charset=Shift_JIS\n\n";

# HTMLの出力
print "<html>\n";
print "<body>\n";
print "<p>CGIが動いた!!</p>\n";
print "</body>\n";
print "</html>\n";
-------------------------------

さて、アップロードしたら、hello.cgiの属性を変更する。

この属性は「パーミッション」と呼ばれ、初心者にはなかなか理解しがたいものなのだが、誰が実行可能なものか?、とか、他人が書き込んで良いものか?というけっこう重要な情報なのである。
アップロードを実行したFTPというプログラムで、サーバー側のhello.cgiの属性を調べる(たいていは右クリックで出てくる)と、だいたいオーナーには読み書き可能で、その他では読み込みのみ可能という属性になっている。
※おそらく644という値になっている。
それを、実行可能に変更する。
※755という値に変更する。

次に、以下のようにしてcgiを実行してみる。

私のホームページは以下のようなURLなのである。
※この部分はこれを試す人各々のURLを使って下さい。
http://y-asaka.cool.coocan.jp/

それを表示させておいて、IEのURLの最後にhello.cgiと追加し、以下のようにする。
http://y-asaka.cool.coocan.jp/hello.cgi

エンターを押して、「CGIが動いた!!」と出てくればcgiの動作は確認終了である。
これが出ればもう勝ったも同然である......(^^;



次に、カウンターの動作テストである。

メモ帳で、半角0を4〜5個入れて、count.txt名でやはりhomepageディレクトリーに直接アップロードする。
これが上記のアクセス回数を覚えておく場所になる。
-------------------------------
00000
-------------------------------
アップロードしたら、パーミッションを書き込み可能に変更する。
※666という値にする。


次にカウントアップするcgiのプログラムを作る。
再度、"------"の内部の文をメモ帳で作成し、counter_test.cgiという名でhomepageディレクトリーに直接アップロードする。
-------------------------------
#!/usr/bin/perl
# アクセスカウンタ

print "Content-type: text/html; charset=Shift_JIS\n\n";

# カウントファイルから読み込み
open(IN, "count.txt");
$count = <IN>;
close(IN);

# カウント増加
$count++;

# カウントファイルに書き込み
open(OUT, "> count.txt");
print OUT $count;
close(OUT);

print "<html>\n";
print "<body>\n";
print "<p>あなたは $count 人目のお客様です</p>\n";
print "</body>\n";
print "</html>\n";
-------------------------------
アップロードしたら、パーミッションを実行可能に変更する。
※755という値にする。

ブラウザで以下のURLを表示させる毎にカウンターがアップしていけば大成功である。
http://y-asaka.cool.coocan.jp/counter_test.cgi



さて、全てのテストが良好なら、いよいよ本番のプログラムの作成であるが、実際はもう完成しているようなもので、先ほどのプログラムの最後の5行が1行になっただけである。
これをcounter.cgiという名でhomepageディレクトリーに直接アップロードする。
-------------------------------
#!/usr/bin/perl
# アクセスカウンタ

print "Content-type: text/html; charset=Shift_JIS\n\n";

# カウントファイルから読み込み
open(IN, "count.txt");
$count = <IN>;
close(IN);

# カウント増加
$count++;

# カウントファイルに書き込み
open(OUT, "> count.txt");
print OUT $count;
close(OUT);

print $count;
-------------------------------
アップロードしたら、パーミッションを実行可能に変更する。
※755という値にする。

これで、このCGIは呼び出されると数桁の数字を返すのみとなる。



最後に、カウンターを表示したいホームページで、HTML文章の適当な場所に以下のようなタグを入れ、上記のCGIを呼び出す。

<iframe src="counter.cgi" width="60px" height="40px" frameborder="0"></iframe>

これで、このタグが表示させる毎にカウントアップするカウンターが出来た(はず)のであった。
めでたしめでたし・・・・かな?......(^^;


たったこれだけのことを行うのと、この文章を書くだけで数時間も掛かってしまった。
しかも、けっこう夢中になってしまい、クタクタに疲れてしまった。


HOME