LANDISK HACKING DIARY
Since2005/8/17
TOPへ戻る
     awstats のインストール
 


アクセス解析のできるWebalizer (その後継のWebdruidも含めて)は、個人的にデフォルトデザインが好きになれなかったので、 AWstats をインストールする事にする。シンプルなデザインで見た目に優しいのでこれなら癒されそうだ。

# apt-get install awstats

バーチャルホスト用に、apache2のアクセスログを分離させておく。

# cd /etc/apache2/sites-available/
# vi landisk.kororo.jp


<VirtualHost *>
~~省略~~
CustomLog /var/log/apache2/access_landisk.log combined
ErrorLog /var/log/apache2/error_landisk.log
~~省略~~
</VirtualHost>

# vi linux.kororo.jp

<VirtualHost *>
~~省略~~
CustomLog /var/log/apache2/access_linux.log combined
ErrorLog /var/log/apache2/error_landisk.log
~~省略~~
</VirtualHost>

次に、/etc/awstats/awstats.conf をリネームコピーして、そのファイルを編集していく。バーチャルホスト運用をしていない場合、もしくは、バーチャルホスト運用していたとしても、awstats の統計を全てまとめて管理したい場合は、/etc/awstats/awstats.conf を直接編集してしまって構わない。

# cp /etc/awstats/awstats.conf /etc/awstats/awstats.landisk.kororo.jp.conf
# vi /etc/awstats/awstats.landisk.kororo.jp.conf


LogFile="/var/log/apache2/access_landisk.log.utf8"
// ログファイルの位置を指定。後述する文字化け対策(ログのUTF変換)のため、
access_landisk.logではなく、access_landisk.log.utf8 としている
(このログファイルは、現時点では、まだ作成されていない)


LogType=W

//ログのタイプ 「W」はWebログのこと。

LogFormat=1

//ログのフォーマットを指定。筆者は、combined なので「1」を指定。

SiteDomain="landisk.kororo.jp"

// ドメイン名の指定


HostAliases="219.117.218.XXX localhost 127.0.0.1"

// ホストのエイリアス名を指定する

DNSLookup=0

// ルックアップを行うかどうか。無駄に負荷はかけたくないので「0」にして無効にしておく。
ルックアップを無効にすると国別アクセス解析ができなくなる


DirData="/var/lib/awstats"

//解析結果を保存する場所

DirCgi="/cgi-bin/awstats"

//cgi-binディレクトリのある場所。ドキュメントルートからの相対or絶対パス

DirIcons="/awstats-icon"
//解析結果ページに表示されるアイコン画像のPATH。
ドキュメントルートからの相対or絶対パス


DefaultFile="index.php"

//解析対象のインデクスファイル。index.html からindex.php へ変更。

Lang="jp"

//言語の指定。デフォルトでは、auto に指定されています。


UseFramesWhenCGI=1
//表示を左右2画面のフレームにする。

DetailedReportsOnNewWindows=0
//詳細表示をクリックしたときに別ウィンドウにするかどうか。
別ウィンドウが開くと面倒なのでオフにした。


AllowToUpdateStatsFromBrowser=1
//ブラウザから解析の更新を可能にする
//通常、cronで定刻時刻に解析データをアップデートするようにするところを、
//ブラウザから解析データを更新できるようにする。

AllowFullYearView=3

//年間の集計を許可する

SkipHosts="127.0.0.1 REGEX[^172\.16\.50\.]"
// ローカルからのアクセスをカウントしない

FirstDayOfWeek=0
// 日曜日を週の頭にもってくる

設定項目は、他にもたくさんありますがとりあえずここで解析してみます。
-config=~ の後は、config ファイルのおかれている絶対パスではなく、「SiteDomain」名(ここでは、landisk.kororo.jp)で指定してください。そうでないとエラーが発生します。なお、-config オプション無しでコマンドを実行した場合は、デフォルト設定ファイルの /etc/awstats/awstats.conf が実行されます。処理が終了すると、DirData (ここでは、/var/lib/awstats)に、awstats042006.landisk.kororo.jp.txt のようなファイルが作成されています。

# /usr/lib/cgi-bin/awstats.pl -config=landisk,kororo.jp -update

Update for config "/etc/awstats/awstats.landisk.kororo.jp.conf"
With data in log file "/var/log/apache2/access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 109072
Found 38 dropped records,
Found 1 corrupted records,
Found 0 old records,
Found 109033 new qualified records.

次に、HTML出力して、Web上で閲覧できるようにします。出力したら、実際にWeb上からアクセスしてみてください。

# /usr/lib/cgi-bin/awstats.pl -config=landisk.kororo.jp -output > /home/www/public_html/awstats.html

アイコンが見えない場合は、apache2 コンフィグで、以下のようにエイリアスさせておく。

# mkdir /home/www/public_html/awstats-icon
# vi /etc/apache2/apache2.conf

Alias /awstats-icon /usr/share/awstats/icon/


■検索文字列の文字化け解消

awstats の「検索文字列(キーフレーズ) 」「検索文字列(キーワード) 」が文字化けしているので、これを修正します。この原因は、awstats が出力するHTMLファイルがデフォルトでUTF-8 コードで出力されるため、文字コードの異なる検索エンジンで検索された文字列は文字化けしてしまうというわけです。これを修正するには、apache2のアクセスログを UTF-8に変換した上で、再度、awstats -update と awstats -output を行う必要があります。まず、UTF-8 に変換するPerlスクリプトをダウンロードしてきてください。

⇒conv_weblog_to_utf8.pl のダウンロード

ダウンロードしてきたら、/usr/lib/cgi-bin の中に conv_weblog_to_utf8.pl を放り込みます。放り込んだら、apache2のアクセスログをUTF-8に変換します。

# /usr/lib/cgi-bin/conv_weblog_to_utf8.pl < /var/log/apache2/access_landisk.log > /var/log/apache2/access_landisk.log.utf8
# /usr/lib/cgi-bin/conv_weblog_to_utf8.pl < /var/log/apache2/access_linux.log > /var/log/apache2/access_linux.log.utf8

先ほど、/etc/awstats/awstats.landisk.kororo.jp.conf を編集した際に、LogFile の値を access_landisk.log.utf8 にしたのは、UTF-8に変換されたアクセスログを読み込むためです。次に、awstats -update で解析データベースを更新し、awstats -output で 出力します。これで、検索文字列は、文字化けせずに正常に表示されるはずです。但し、すでに文字化けしていたものは、修正されません。もし、文字化けのないまっさらな状態にしたい場合は、/var/lib/awstats/ 以下の解析データを削除してから再度コマンドを実行するといいでしょう。

# /usr/lib/cgi-bin/awstats.pl -config=landisk.kororo.jp -update
# /usr/lib/cgi-bin/awstats.pl -config=landisk.kororo.jp -output > /home/upload/public_html/landisk/awstats.html

# /usr/lib/cgi-bin/awstats.pl -config=linux.kororo.jp -update
# /usr/lib/cgi-bin/awstats.pl -config=linux.kororo.jp -output > /home/upload/public_html/linux/awstats.html

ただし、UTF-8に変換する場合は、ちょっとした問題点が…。

AllowToUpdateStatsFromBrowser=1 に設定して、ブラウザから解析データを更新するようにした場合、/etc/awstats/awstats.landisk.kororo.jp.conf に記述された LogFile の値、つまり、access_landisk.log.utf8 を読み込むようになっているため、ブラウザ側からいくら更新ボタンを押してもログデータは更新されません。何故なら、apache の最新のログは、access_landisk.log であって、access_landisk.log.utf8ではないからです。ブラウザ側から更新する場合は以下のコマンド、

# /usr/lib/cgi-bin/conv_weblog_to_utf8.pl < /var/log/apache2/access_linux.log > /var/log/apache2/access_linux.log.utf8

が抜けているのです。さてさて、どうしたものか。awstats.pl をいじってこのコマンドが実行されるようにする!?
Perl の「パ」の字も知らない自分にそんな高等技術ができるわけないので素直にあきらめる。

ということで、以下のスクリプトを作成して、cron で 3時間ごとにUTF変換だけは済ませるようにし、ブラウザ側からの更新を可能にするように設定した。かなり、強引は気はするが、これなら見たいときにだけawstats -update コマンドが実行されるようになるので、サーバーに余計な負荷はかかからなくてもいいかも!?

# vi /usr/local/bin/awstats.sh

#!/bin/sh

PATH=/usr/bin:/usr/local/bin:/usr/lib/cgi-bin
LOG=/var/log/apache2
HOME=/home/www/public_html

# Domain of landisk.kororo.jp
conv_weblog_to_utf8.pl < $LOG/access_landisk.log > $LOG/access_landisk.log.utf8

# Domain of linux.kororo.jp
conv_weblog_to_utf8.pl < $LOG/access_linux.log > $LOG/access_linux.log.utf8

# vi /etc/crontab
00 */3 * * * root /usr/local/bin/k-awstats.sh > /dev/null

最後に、言うまでもないが、出力結果を見られたくない場合は、ベーシック認証なり、.htaccess なりを使ってアクセスを制御するようにしてください。

SEO効果を倍増させるアクセスログ解析の極意
SEO効果を倍増させるアクセスログ解析の極意
アクセスログ解析の教科書
アクセスログ解析の教科書
自分でできるWebアクセス解析とデータ活用術
自分でできるWebアクセス解析とデータ活用術
Analog―Webアクセスログの高速解析ソフト
Analog―Webアクセスログの高速解析ソフト
ヤフー!・グーグルSEO対策テクニック
ヤフー!・グーグルSEO対策テクニック




TOPへ戻る
 
Copyright © KORO All Rights Reserved.