アクセスログ解析機能を導入する
アクセスログ解析パッケージをインストールする
アクセスログ解析パッケージ (awstats) は、yum コマンドを使用してインストールしますので、パッケージ管理の設定が完了していることを確認して下さい。
[ Fedora 8 / Fedora 7 ]
[root@web ~]# yum install awstats
また、AWStats は Perl スクリプトであるため、最新版の Perl パッケージがインストールされているか確認しておきます。
[ Fedora 8 / Fedora 7 ]
[root@web ~]# which perl
/usr/bin/perl « Perl モジュールがインストール済み
アクセスログ解析機能の設定について
アクセスログ解析機能に関するオプション設定は、/etc/awstats/awstats.[ ホスト名 ].[ ドメイン名 ].conf ファイルを編集します。 (例として、ホスト名が[ web ]、ドメイン名が[ i2kt.com ]の場合)
[ Fedora 8 / Fedora 7 ]
[root@web ~]# vi /etc/awstats/awstats.web.i2kt.com.conf
# "SiteDomain" must contain the main domain name, or the main intranet web # server name, used to reach the web site. # If you share the same log file for several virtual web servers, this # parameter is used to tell AWStats to filter record that contains records for # this virtual host name only (So check that this virtual hostname can be # found in your log file and use a personalized log format that include the # %virtualname tag). # But for multi hosting a better solution is to have one log file for each # virtual web server. In this case, this parameter is only used to generate # full URL's links when ShowLinksOnUrl option is set to 1. # If analyzing mail log, enter here the domain name of mail server. # Example: "myintranetserver" # Example: "www.domain.com" # Example: "ftp.domain.com" # Example: "domain.com" # ホスト名になっていることを確認 SiteDomain="web.i2kt.com" : ( 中略 ) : # If you want to have hosts reported by name instead of ip address, AWStats # need to make reverse DNS lookups (if not already done in your log file). # With DNSLookup to 0, all hosts will be reported by their IP addresses and # not by the full hostname of visitors (except if names are already available # in log file). # If you want/need to set DNSLookup to 1, don't forget that this will reduce # dramatically AWStats update process speed. Do not use on large web sites. # Note: Reverse DNS lookup is done on IPv4 only (Enable ipv6 plugin for IPv6). # Note: Result of DNS Lookup can be used to build the Country report. However # it is highly recommanded to enable the plugin 'geoipfree' or 'geoip' to # have an accurate Country report with no need of DNS Lookup. # Possible values: # 0 - No DNS Lookup # 1 - DNS Lookup is fully enabled # 2 - DNS Lookup is made only from static DNS cache file (if it exists) # Default: 2 # アクセス元のホストドメイン名で表示 DNSLookup=1 # When AWStats updates its statistics, it stores results of its analysis in # files (AWStats database). All those files are written in the directory # defined by the "DirData" parameter. Set this value to the directory where # you want AWStats to save its database and working files into. # Warning: If you want to be able to use the "AllowToUpdateStatsFromBrowser" # feature (see later), you need "Write" permissions by web server user on this # directory (and "Modify" for Windows NTFS file systems). # Example: "/var/lib/awstats" # Example: "../data" # Example: "C:/awstats_data_dir" # Default: "." (means same directory as awstats.pl) # スクリプトと同一ディレクトリ内にデータを保存 DirData="." : ( 中略 ) : # Do not include access from clients that match following criteria. # If your log file contains IP addresses in host field, you must enter here # matching IP addresses criteria. # If DNS lookup is already done in your log file, you must enter here hostname # criteria, else enter ip address criteria. # The opposite parameter of "SkipHosts" is "OnlyHosts". # Note: Use space between each value. This parameter is not case sensitive. # Note: You can use regular expression values writing value with REGEX[value]. # Change : Effective for new updates only # Example: "127.0.0.1 REGEX[^192¥.168¥.] REGEX[^10¥.]" # Example: "localhost REGEX[^.*¥.localdomain$]" # Default: "" # ローカルホスト、内部ネットワークからのアクセスは除外 SkipHosts="127.0.0.1 REGEX[^192¥.168¥.0¥.]"; : ( 中略 ) : # Set your primary language (ISO-639-1 language codes). # Possible values: # Albanian=al, Bosnian=ba, Bulgarian=bg, Catalan=ca, # Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Croatian=hr, Czech=cz, # Danish=dk, Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi, # French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu, # Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=ko, # Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl, # Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru, # Serbian=sr, Slovak=sk, Slovenian=si, Spanish=es, Swedish=se, Turkish=tr, # Ukrainian=ua, Welsh=cy. # First available language accepted by browser=auto # Default: "auto" # アクセスログ解析結果表示の日本語化 Lang="jp" : ( 中略 ) : # Choose if you want the week report to start on sunday or monday # Possible values: # 0 - Week starts on sunday # 1 - Week starts on monday # Default: 1 # 週の始まりを日曜日に変更 FirstDayOfWeek=0
アクセスログ解析機能の設定について (ウェブサーバーの設定)
ウェブサーバーが出力するアクセスログ形式を確認します。 また、統計情報をブラウザで閲覧するためのオプション設定ファイルも編集します。
[ Fedora 8 / Fedora 7 ]
ウェブサーバーのオプション設定ファイル (httpd.conf) を確認する
[root@web ~]# view /etc/httpd/conf/httpd.conf
# # The following directives define some format nicknames for use with # a CustomLog directive (see below). # 「combined」が指定されているか確認 LogFormat "%h %l %u %t ¥"%!414r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent
ウェブサーバーのオプション設定ファイル (awstats.conf) を編集する
[root@web ~]# vi /etc/httpd/conf.d/awstats.conf
# # This is to permit URL access to scripts/files in AWStats directory. # <Directory "/usr/share/awstats/wwwroot"> Options None AllowOverride None Order allow,deny アクセス許可リストの指定 Allow from 192.168.0 [ 内部ネットワークのみ許可する : ネットワークアドレス指定 ] </Directory>
ウェブサーバーを再起動する
アクセスログ解析機能の設定を反映するため、ウェブサーバーを再起動します。
[ Fedora 8 / Fedora 7 ]
[root@web ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ] httpd を起動中: [ OK ]
アクセスログ解析を定期的に実行する
アクセスログ解析機能は、統計情報を表示するたびに AWStats Perl スクリプトが実行されるため、アクセスログ解析に時間を要するなど、ネットワークサーバーへの負荷が増加してしまいます。 この回避策として、アクセスログの解析を定期的に実行、HTML 形式の統計情報を作成しておくことをお薦めします。 また、アクセスログ解析を定期的に実行するため、アクセスログ解析スクリプトを作成、クーロン起動の設定に追加します。
[ Fedora 8 / Fedora 7 ]
アクセスログ解析スクリプトの格納先ディレクトリを作成する
[root@web ~]# mkdir /root/cron/
アクセスログ解析スクリプトを作成する
[root@web ~]# vi /root/cron/awstats
#!/bin/sh CGI_HOME=/usr/share/awstats/wwwroot/cgi-bin AWS_HOME=/var/www/html/analyze/awstats HOST_NAME=`hostname` ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -update ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output ¥ -staticlinks > ${AWS_HOME}/index.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=alldomains -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.alldomains.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=allhosts -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.allhosts.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=lasthosts -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.lasthosts.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=unknownip -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.unknownip.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=allrobots -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.allrobots.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=lastrobots -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.lastrobots.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=urldetail -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.urldetail.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=urlentry -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.urlentry.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=urlexit -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.urlexit.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=osdetail -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.osdetail.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=unknownos -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.unknownos.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=browserdetail -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.browserdetail.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=unknownbrowser -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.unknownbrowser.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=refererse -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.refererse.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=refererpages -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.refererpages.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=keyphrases -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.keyphrases.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=keywords -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.keywords.html ${CGI_HOME}/awstats.pl -config=${HOST_NAME} -output=errors404 -staticlinks ¥ > ${AWS_HOME}/awstats.${HOST_NAME}.errors404.html
アクセスログ解析スクリプトのアクセス権限を参照・書き込み・実行モード (所有者のみ) に変更する
[root@web ~]# chmod 700 /root/cron/awstats
HTML 形式の統計情報の格納先ディレクトリを作成する
[root@web ~]# mkdir /var/www/html/analyze/
[root@web ~]# mkdir /var/www/html/analyze/awstats
毎日2時間おきにアクセスログ解析スクリプトを実行する
[root@web ~]# crontab -e
0 */2 * * * /root/cron/awstats | nkf -j > /dev/null 2>&1
AWStats Perl スクリプトを修正する
統計情報に表示される「年・月」の表示形式を修正するため、awstats.pl ファイルを編集します。
[ Fedora 8 / Fedora 7 ]
[root@web ~]# vi /usr/share/awstats/wwwroot/cgi-bin/awstats.pl
7801 print "<span style=¥"font-size: 14px;¥">"; 7802 if ($DayRequired) { print "$Message[4] $DayRequired - "; } 7803 if ($MonthRequired eq 'all') { print "$YearRequired$Message[6]"; } 7804 else { print "$YearRequired$Message[6] ".$MonthNumLib{$MonthRequired}; } 7805 print "</span>"; : ( 中略 ) : 8951 print ($MonthRequired eq 'all'?"$YearRequired$Message[6]":" $YearRequired$Mess age[6] ".$MonthNumLib{$MonthRequired});