| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
「Apache」のログ解析には「Webalizer」がありますが、「AWStats」の方がより詳細な結果を出力してくれます。
ただ、「Perl」で動作しますので、「Webalizer」より動作が重いです。
また、「Apache」のログ形式がcombinedである必要があります。
なお、ここでは「AWStats」のバージョンは6.5-r1としています。
6.7-r2の場合はこちらを参照して下さい。
自分が作業したときは以下のコマンドでインストールできましたが、現在では新しいバージョンがインストールされます。
その為、6.5-r1をインストールするにはバージョンを指定してインストールする必要があります。
Gentoo ~ # emerge awstats <= 「AWStats」のインストール |
「awstats.pl」が格納されているディレクトリとアイコン等が格納されているディレクトリが離れていますので、コピーします。
Gentoo ~ # cp -pr /usr/share/webapps/awstats/6.5-r1/hostroot/cgi-bin /usr/share/webapps/awstats/6.5-r1/htdocs/ |
ログファイルの検索サイトからの文字列が文字化けするのを防ぐため、文字コードを変換します。
ここでは、nayuta氏が公開されている
conv_weblog_to_utf8.pl
を利用させて頂きました。
スクリプトの保存先は
/usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin
としました。
Gentoo ~ # chmod 755 /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/conv_weblog_to_utf8.pl <= ダウンロードしたファイルに実行権限を付与 Gentoo ~ # /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/conv_weblog_to_utf8.pl \ < /var/log/apache2/access_log > /var/log/apache2/jaccess_log <= ログファイルの文字コードを変換 |
Gentoo ~ # cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.apache2.conf <= サンプル設定ファイルのコピー Gentoo ~ # vi /etc/awstats/awstats.apache2.conf <= 設定ファイルの編集 LogFile="/var/log/apache2/access_log" ↓ LogFile="/var/log/apache2/jaccess_log" <= 文字コードを変換したログファイルを指定 SiteDomain="localhost" ↓ SiteDomain="crimson-snow.net" <= ドメインを指定 DirData="." ↓ DirData="/var/lib/awstats" <= AWStatsが保持する分析結果等のファイルを格納するディレクトリを指定 (絶対パスもしくはawstats.plからの相対パス) DirCgi="/cgi-bin/awstats" ↓ DirCgi="/awstats/cgi-bin" <= awstats.plが格納されているディレクトリを指定 (絶対URLもしくはWWWサーバのルートディレクトリからの相対URL) DirIcons="/awstats/icons" ↓ DirIcons="/awstats/icon" <= アイコンファイルが格納されているディレクトリを指定 (絶対URLもしくはWWWサーバのルートディレクトリからの相対URL) DNSLookup=2 ↓ DNSLookup=1 <= DNSの逆引きを行う AllowToUpdateStatsFromBrowser=0 ↓ AllowToUpdateStatsFromBrowser=1 <= 更新ボタンを設置する AllowFullYearView=2 ↓ AllowFullYearView=3 <= 年間統計情報を出力出来るように許可する Lang="auto" ↓ Lang="jp" <= 統計情報を日本語にする |
日本の検索エンジンの追加
Gentoo ~ # vi /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/search_engines.pm <= 設定ファイルの編集 @SearchEnginesSearchIDOrder_list1=( 以下を追加 '66\.249\.(89\.99|93\.104)', '66\.102\.(7\.104|9\.104|11\.104)', '64\.233\.(161\.104|179\.104|167\.104|183\.104|187\.104)', '72\.14\.(203|207|209|221|235|253)\.104', '209\.85\.(173|175)\.104', '216\.239\.(39\.104|41\.104|51\.104|57\.104|59\.104)', 'search\.biglobe\.ne\.jp', 'goo\.ne\.jp', 'nifty\.com', 'search\.msn\.co\.jp', 'search\.odn\.ne\.jp', 'naver\.co\.jp', 'fresheye\.com', 'tocc\.co\.jp', 'infoseek\.co\.jp', 'cache\.yahoofs\.jp', 'ask\.jp', 'search\.livedoor\.com', 'www\.ceek\.jp', ここまで %SearchEnginesHashID = ( 以下を追加 '66\.249\.(89\.99|93\.104)','google', '66\.102\.(7\.104|9\.104|11\.104)','google', '64\.233\.(161\.104|179\.104|167\.104|183\.104|187\.104)','google', '72\.14\.(203|207|209|221|235|253)\.104','google', '209\.85\.(173|175)\.104','google', '216\.239\.(39\.104|41\.104|51\.104|57\.104|59\.104)','google', 'search\.biglobe\.ne\.jp','biglobe', 'goo\.ne\.jp','goo', 'nifty\.com','nifty', 'search\.msn\.co\.jp','msn', 'search\.odn\.ne\.jp','odn', 'naver\.co\.jp','naver', 'fresheye\.com','fresheye', 'tocc\.co\.jp','tocc', 'infoseek\.co\.jp','infoseek', 'cache\.yahoofs\.jp','yahoocache', 'ask\.jp','askjp', 'search\.livedoor\.com','livedoor', 'www\.ceek\.jp','ceek', ここまで %SearchEnginesKnownUrl=( 以下を追加 'biglobe','q=', 'goo','MT=', 'nifty','Text=', 'msn','(q|MT)=', <= 「'msn','q=',」の部分を変更 'odn','Querystring=', 'naver','query=', 'fresheye','kw=', 'tocc','QRY=', 'yahoocache','w=', 'askjp','q=', 'livedoor','q=', 'ceek','q=', ここまで %SearchEnginesHashLib=( 以下を追加 'biglobe','Biglobe', 'goo','Goo', 'nifty','Nifty', 'odn','ODN', 'naver','Naver', 'fresheye','Fresheye', 'tocc','TOCC/Search', 'yahoocache','Yahoo (Cache)', 'askjp','Ask Jeeves Japan', 'livedoor','Livedoor', 'ceek','CEEK.JP', ここまで |
修正した内容が正しいかの確認をします。
Gentoo ~ # perl -c /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/search_engines.pm /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/search_engines.pm syntax OK |
ブラウザの追加
日本独自のブラウザである「Sleipnir」と「Lunascape」を追加します。
Gentoo ~ # vi /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/browsers.pm <= 設定ファイルの編集 @BrowsersSearchIDOrder = ( 以下を追加 'sleipnir', 'lunascape', ここまで %BrowsersHashIDLib = ( 以下を追加 'sleipnir','Sleipnir', 'lunascape','Lunascape', ここまで %BrowsersHashIcon = ( 以下を追加 'sleipnir','sleipnir', 'lunascape','lunascape', ここまで |
上記の設定の「%BrowsersHashIcon」で指定したアイコンを
/usr/share/webapps/awstats/6.5-r1/htdocs/icon/browser
に用意します。
なお、アイコンの形式は「png」にします。
次に、「awstats.pl」を修正します。
Gentoo ~ # vi /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl <= 設定ファイルの編集 my $regnotie=qr/webtv|omniweb|opera/i; ↓ my $regnotie=qr/webtv|omniweb|opera|sleipnir|lunascape/i; <= 「Sleipnir」と「Lunascape」の追加 |
修正した内容が正しいかの確認をします。
Gentoo ~ # perl -c /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/browsers.pm <= 「browsers.pm」ファイルの確認 /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/browsers.pm syntax OK Gentoo ~ # perl -c /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl <= 「awstats.pl」ファイルの確認 /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl syntax OK |
ロボットの追加
日本のロボットを追加します。
Gentoo ~ # vi /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/robots.pm <= 設定ファイルの編集 @RobotsSearchIDOrder_list1 = ( 以下を追加 'hatena', 'naver', 'bookmark', ここまで %RobotsHashIDLib = ( 以下を追加 'hatena','Hatena Bookmark', 'naver','NaverBot', 'bookmark','Bookmark Renewal Check Agent', ここまで |
修正した内容が正しいかの確認をします。
Gentoo ~ # perl -c /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/robots.pm /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/lib/robots.pm syntax OK |
出力結果の表示の修正
出力結果の表示で年月の表示がおかしい部分がありますので、修正します。
Gentoo ~ # vi /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl <= plファイルの修正
else { print "$Message[5] $MonthNumLib{$MonthRequired} $YearRequired"; }
↓
else { print "$YearRequired"."$Message[6]".$MonthNumLib{$MonthRequired}; } <= 変更
print ($MonthRequired eq 'all'?"$Message[6] $YearRequired":"$Message[5] ".$MonthNumLib{$MonthRequired}." $YearRequired");
↓
print ($MonthRequired eq 'all'?"$YearRequired $Message[6]":$YearRequired."$Message[6] ".$MonthNumLib{$MonthRequired});
<= 変更
|
権限等の変更
「AWStats」の設定で AllowToUpdateStatsFromBrowser を 1 にしましたが、
これは、出力結果に更新ボタンを設置し、ブラウザから最新のログの情報に更新します。
ただ、Apacheのユーザ権限で更新しますので、パーミッションエラーが起きます。
そこで、必要なディレクトリの権限等を変更します。
この作業は AllowToUpdateStatsFromBrowser を 0 のままに設定していれば必要ありません。
ただし、当サイトでは文字コードを変換したログファイルを用いている為、
更新ボタンを押しても最新のログファイルを参照してはくれません。
Gentoo ~ # chown apache /var/lib/awstats <= 分析結果等の格納先のオーナをapacheに変更 |
「AWStats」の設置されているディレクトリにアクセスできるように設定します。
Gentoo ~ # vi /etc/apache2/httpd.conf <= 設定ファイルの編集
以下を追加
Alias /awstats "/usr/share/webapps/awstats/6.5-r1/htdocs/"
<Directory "/usr/share/webapps/awstats/6.5-r1/htdocs/">
AllowOverride None
Options Includes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
AddHandler php5-script .php
AddHandler image/gif .gif
AddHandler image/jpeg .jpeg .jpg
AddHandler image/png .png
AddHandler text/html .html .htm
</Directory>
|
「Apache」を再起動し、設定を反映させます。
Gentoo ~ # /etc/init.d/apache2 restart |
「AWStats」の実行
Gentoo ~ # /usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl -config=apache2 -update |
http://サーバのIPアドレス/awstats/cgi-bin/awstats.pl?config=apache2
でアクセスできれば問題ありません。
上記のままの設定で問題ありませんが、アクセスするたびにCGIスクリプトが実行されますので、
表示が遅く、サーバにも負荷がかかります。
そこで、出力結果をHTML化します。
Gentoo ~ # awstats_buildstaticpages.pl \ -awstatsprog=/usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl \ -config=apache2 -update -lang=jp \ -dir=/usr/share/webapps/awstats/6.5-r1/htdocs |
http://サーバのIPアドレス/awstats/awstats.apache2.html
でアクセスできれば問題ありません。
HTML化の自動実行
出力結果のHTML化を行うスクリプトを作成し、cronに登録して自動的に実行するようにします。
また、トップページをindex.htmlとなるようにします。
Gentoo ~ # vi awstats.sh <= スクリプトファイルの新規作成 #!/bin/sh MV='/usr/bin/mv' AWSTATS='/usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/awstats.pl' BUILDSTATIC='/usr/bin/awstats_buildstaticpages.pl' CONV='/usr/share/webapps/awstats/6.5-r1/htdocs/cgi-bin/conv_weblog_to_utf8.pl' DATADIR='/usr/share/webapps/awstats/6.5-r1/htdocs' $CONV < /var/log/apache2/access_log > /var/log/apache2/jaccess_log $AWSTATS -config=apache2 -update > /dev/null $BUILDSTATIC -awstatsprog=$AWSTATS \ -config=apache2 -update -lang=jp \ -dir=$DATADIR > /dev/null $MV $DATADIR/awstats.apache2.html $DATADIR/index.html Gentoo ~ # chmod 755 awstats.sh <= スクリプトファイルに実行権限を付加 Gentoo ~ # crontab -e <= cronの編集 00 00 * * * /root/awstats.sh <= 追加 |
ログローテーションに合わせた実行
ログローテーションのタイミングでも上記で作成したスクリプトを実行するようにします。
また、ログ解析は access_log のみ行う為、その他のログローテーション時には実行しないようにします。
Gentoo ~ # vi /etc/logrotate.d/apache2 <= 設定ファイルの編集
access_log のみスクリプトを実行するように以下を追加
/var/log/apache2/access_log {
missingok
notifempty
prerotate
/root/awstats.sh
endscript
postrotate
/etc/init.d/apache2 reload > /dev/null 2>&1 || true
endscript
}
ここまで
/var/log/apache2/*log {
↓
/var/log/apache2/error_log /var/log/apache2/spam_log /var/log/apache2/worm_log { <= 変更
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null 2>&1 || true
endscript
}
|