
| Awstatsでアクセスログの管理 |
Awstatsはアクセスログの解析ツールです。特徴としてはかなり見やすく、集計結果もかなり詳細に
表示してくれるので、アクセスログを管理するには、非常に便利なツールです。
ここでは、yumを利用して導入し、また文字化けへの対処方法なども紹介していきたいと思います。
| Awstatsの導入と設定 |
Awstatsは、yumのエクストラパッケージで提供されているものになります。
標準のyumの設定では、導入することができませんので、エクストラパッケージを利用できる
ようにする記述をyum.confに追加する必要があります。
当サイトでは、FC3でエクストラパッケージを利用する方法を以下で紹介していますので、
良かったら参照してみてください。
エクストラパッケージが利用できるようになりましたら、yumでインストールします。
| # yum install awstats |
以上が済みましたら、Awstatsの設定ファイルの編集をします。
ただ、これは特に編集する部分もありませんので、そのままでも問題無く動きます。
一応編集する部分だけピックアップしたいと思います。
Awstatsの設定ファイルは、初期状態では、/etc/awstats/にawstats.linux.confというような、
awstats.ホスト名.confという設定ファイルになっていると思います。これを先ず変更します。
| cd /etc/awstats mv awstats.linux.conf awstats.conf |
これで、設定ファイル名をawstats.confに変更しました。続いて、このawstats.confの
編集に移ります。
| # vi /etc/awstats/awstats.conf SiteDomain="localhost.localdomain" ←143行目 ↓ SiteDomain="chibi.name" ←ドメイン名は置き換えてください。 DNSLookup=2 ↓ DNSLookup=1 ←1に変更 Lang="auto" ↓ Lang="jp" ←jpに変更 |
この3つの変更をしてください。DNSLookupは、ドメイン、国別などの統計情報を取得する場合の
DNSの逆引きに関する部分です。1をした場合は、逆引きする設定になります。デフォルトの2の場合は
DNSのキャッシュ内のIPアドレスのみ逆引きする設定になります。
以上で設定は完了ですので、一度httpdを再起動させてから、ログファイルからデータファイルの
作成をします。
| # service httpd restart # /usr/share/awstats/tools/awstats_updateall.pl now |
これで閲覧可能な状態になりますので、以下のようなURLを指定してアクセスしてみてください。
http://ドメイン名/awstats/awstats.pl これでawstatsの画面が出ると思います。
| Awstatsへのアクセスを制限 |
次はAwstatsの閲覧ですが、これはLAN内のみの閲覧に制限しておきます。
制限をかけるには、/etc/httpd/conf.d/awstats.confの編集を行います。
以下のように変更します。
| # vi /etc/httpd/conf.d/awstats.conf <Directory "/usr/share/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all </Directory> ↓ <Directory "/usr/share/awstats/wwwroot"> Options None AllowOverride None Order deny,allow ←deny,allowに変更 Deny from all ←追記 Allow from 192.168.1 ←allを192.168.1に変更(ここは自分の環境に置き換えて) </Directory> |
なお、deny,allowの記述ですが、このように記述した場合には、deny、allowの順に評価されます。
deny,allowと記述した場合は、デフォルトでアクセスが禁止されます。Denyにマッチしないか、
Allowにマッチするホストがアクセスできます。
逆に、allow,denyとした場合は先ほどとは逆で、allow、denyの順に評価され、デフォルトで
アクセスが許可され、Denyにマッチするホストが拒否されることになります。
| 文字化けの対策とCronへの登録 |
このままでも閲覧は十分可能なんですが、ただ1つ問題点があります。
それは、検索語の部分です。文字化けを起こした単語が何個もあると思います。
Awstatsが出力するHTMLファイルの文字コードはデフォルトでUTF-8です。ですので、その他の文字コードで
検索された単語などは文字化けしてしまいます。
これの対応には、先ずaccess_logの検索文字列をUTF-8に変換してやる必要があります。
このUTF-8に変換してくれるスクリプトはこちらを利用させていただきました。
このスクリプトを/root以下に置きました。そして、次にこのスクリプトを使用して早速、
access_logを変換したいと思います。その前にこのスクリプトに実行権限を与えてあげます。
それから以下のように実行します。(/rootで)
| # chmod +x conv_weblog_to_utf8.pl # ./conv_weblog_to_utf8.pl < /var/log/httpd/access_log > /var/log/httpd/access_log.utf |
この場合、新たにUTF-8に変換したaccess_log.utfというファイルが、/var/log/httpd/以下に
出来上がります。
次に重要なことがあります。またawstats.confを設定しなければなりません。
以下の設定を変更してください。
| # vi /etc/awstats/awstats.conf LogFile="/var/log/httpd/access_log" ↓ LogFile="/var/log/httpd/access_log.utf" ←変換したaccess_log.utfを指定する |
以上で、今後UTF-8以外の文字コードで検索された文字列もawstatsの画面で文字化けしないように
することができます。
最後にこれらを自動で実行する為にcrontabに登録します。
| # crontab -e 00 00 * * * /root/conv_weblog_to_utf8.pl < /var/log/httpd/access_log > /var/log/ httpd/access_log.utf ; /usr/share/awstats/tools/awstats_updateall.pl now > /dev/null 2>&1 ↑実際は1行で記述 |
この場合、0時0分にaccess_logの変換をして、そのあとでデータファイルの作成をするようにしています。
「A ; B」という記述で、Aを実行した後にBを実行するという意味になります。またこの場合、Aのコマンドの
成功失敗に関わらずBを実行します。「A && B」と記述すると、Aが成功したらその後でBを実行するという
意味になります。また、「A || B」と記述するとAが失敗したらBを実行するという意味になります。
このログ変換とデータファイルの作成の時間帯は自分の目的に合うように変更してください。
1時間ごとに実行してもいいですし、1日に2回実行するとかでもいいです。
最終更新 : 05/22/2005