ラズパイで作る自宅WEBサーバ構築
第16回 簡単なアクセスカウンターを作る 2019.12.11
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
いよいよ、「ラズパイで自宅WEBサーバ構築」も最終回です。
自分のサイトがどう成長していくか、アクセスカウンターを作って、サイトへのアクセス情報を表示してみましょう。
まずは、データベース、ユーザーおよびテーブルを作成するためのスクリプトを作成します。
このスクリプトの中で、1件のレコードも作成しています。
$ vi /home/example/scripts/sample.sql
create database testdb;
grant select, insert, update, delete on testdb.* to testuser@localhost
identified by 'teSt.ps8d';
flush privileges;
use testdb;
create table counter(
seqno int unsigned not null auto_increment,
logdate date,
today int unsigned default '0',
sum int unsigned default '0',
PRIMARY KEY (seqno)
) ENGINE=MyISAM auto_increment=1 default charset=utf8;
insert into counter values(1,'2019-12-10',0,0);
$ sudo mysql -u root -p mysql < sample.sql
root のパスワードを問われるので、「第6回 MySQL設定」で設定した、root のパスワードを入力してください。
次にサイトがどれだけ閲覧されているかを表示するプログラムを作成します。
1件のレコードを使いまわしているだけのシンプルなプログラムです。
※エラー処理は省いています。
<?php
$mysqli = new mysqli('localhost','testuser','teSt.ps8d','testdb');
$mysqli->set_charset("utf8");
$sql = 'select seqno,logdate,today,sum from counter where seqno=1';
if ($result = $mysqli->query($sql)) {
if ($row = $result->fetch_assoc()) {
$logdate = $row['logdate'];
$today = $row['today'];
$sum = $row['sum'];
$now = date('Y-m-d');
if ($logdate==$now) {
$today++;
} else {
$logdate=$now;
$today=1;
}
$sum++;
$sql = 'update counter set logdate=\''.$now.'\',today='.$today.',
sum='.$sum.' where seqno=1';
$res = $mysqli->query($sql);
}
}
$mysqli->close();
echo date('Y-m-d (D)').' Today\'s Access : '.$today.' Total : '.$sum;
?>
【アクセスカウンター表示例】
2019-12-10 (Tue) Today's Access : 22 Total : 3299
上記のような、アクセスカウンターであれば、データベースを作成せずとも実装可能です。
このアクセスカウンターはページアクセス数を表示していますが、サイトを閲覧した訪問者数を表示するには、
セッション管理機能も必要になります。
非公開WEBサイトとしても活用してみましょう

ブロードバンドルーター内部だけで利用する非公開WEBサイトであれば、固定IPアドレスを取得する必要も、
ドメイン名を取得する必要もありません。
この場合は、DNS設定やメール設定は不要になりますので、簡単にサーバー構築が行えます。
ラズパイに各種機器を接続して、ブラウザ上から制御するのも面白いと思います。
|