WWWアクセス解析スクリプトAWStats

これは本当に素晴らしいです

こちらは最新のバージョンではありません
AWStats日本語版についての最新の情報は、こちらのページを参照してください

WWWのアクセスを解析するということ

 このページに立ち寄られる方のほとんどは自分で既にWebページをお持ちの方、もしくはこれから構築しようと考えられている方だと思います。そのような方々全ての共通の関心といっても過言でないのは、

一体どれだけの人がこのページを見てくれているのだろう?

 ということだと思います。これだけならWebページにカウンタをつければある程度の数字を取ることは出来ますし、またカウンタならばかなりのプロバイダが設置を許可しています。しかし、

どのページに関心を持っている人が一番多いのだろう?
どの時間帯にアクセスが多いのだろう?
どのようなOS/Browserで見ているのだろう?

 というような情報については、なかなか手に入れるのが難しいのではないでしょうか。この条件を入手するには、結局のところhttpdのアクセスログを見るしかないのですが、それを一般ユーザーに公開するプロバイダは、いたとしてもなかなかいないでしょうし、もし入手できてもそれを手で解析するのは並大抵の苦労ではありません。

 しかし、もしこのような情報を効率的に解析することができれば、その後のWebページの作成の指針などに活用することができるばかりか、個人的な欲求を満たすこともできるでしょう。

 

AWStatsとは

 AWStatsは、httpdのアクセスログを解析し、視覚的にブラウザで閲覧することが出来る形に整形するPerlのスクリプトです。この手のツールは何種類もあるようですが、知っている限りで一番素晴らしい物だと私は思います。特徴としては、

 ・ApacheだけでなくIIS5.0まで対応
 ・ロボットに対応(ロボットが調べにきたら、どこのロボットが来たかわかる)
 ・来訪者の国(Top Domain)、Browser、OSのデータの統計を取得可能

などが挙げられます。

 AWStatsの配布元はこちらで、GPLライセンスに従って配布されています。

http://awstats.sourceforge.net

 現在の最新版はVer.2.22で、こちらからダウンロードできます。

 

AWStatsのインストール

 AWStatsはzip形式で配布されています。Linuxで解凍するには、ダウンロードしたファイルがあるディレクトリに移動してから

 unzip ./awsta222.zip

 と入力すると、カレントディレクトリにawstasディレクトリが作成され、そこに解凍されます。

 解凍後、awstatsディレクトリに移動し、以下の作業を行います。

 1. Perlの場所の確認
  "which perl"と入力して返ってくるパスが、perlがある場所になります。

 2. Apacheのログファイルフォーマットを"Combined"に変更する
  /etc/httpd/conf/httpd.confの570行目付近のログ設定部分を以下のように修正

  #
  # The location and format of the access logfile (Common Logfile Format).
  # If you do not define any access logfiles within a <VirtualHost>
  # container, they will be logged here. Contrariwise, if you *do*
  # define per-<VirtualHost> access logfiles, transactions will be
  # logged therein and *not* in this file.
  #
  #CustomLog /var/log/httpd/access_log common
  
#
  # If you would like to have agent and referer logfiles, uncomment the
  # following directives.
  #
  CustomLog /var/log/httpd/referer_log referer
  CustomLog /var/log/httpd/agent_log agent
  
#
  # If you prefer a single logfile with access, agent, and referer information
  # (Combined Logfile Format) you can use the following directive.
  #
  CustomLog /var/log/httpd/access_log combined

 3. awstatsディレクトリにあるawstats.plファイルをcgi-binディレクトリにコピーする
  cgi-binディレクトリにhttpdが書き込み可能どうか確認してください。
  具体的には、nobody(デフォルトの場合)に対して書き込み権限があればOKです。

 4. awstats.plファイルのperlの場所を設定
  ファイルの一番先頭の"#! /usr/local/bin/perl"を、実際にperlがある場所に変更します。
  Turbo Linuxの場合は "#! /usr/bin/perl"になります。

 5. awstats.plファイルの$LogFile変数を設定
  16行目の$LogFile変数に、実際にhttpdのログファイルのパスと名前を設定します。
  Turbo Linuxの場合は、"/var/log/httpd/access_log"になります。

 6. awstats.plファイルの$LogFormat変数を設定
  17行目の$LogFormat変数を、"1"に設定します。元々"1"になっているはずです。

 7. Apacheから読めるディレクトリに全てのアイコンファイルディレクトリをコピー
  awstatsディレクトリに解凍された/clock, /flags, /other, /browser, /cpu, /osディレクトリを
  Apacheから読める出来る場所にコピーします。私は/home/httpd/iconsにコピーしました。

 8. awstats.plファイルの$DirIcons変数を設定
  19行目の$DirIcons変数を、7.でコピーした場所に設定します。
  ここはhttpd.confの65行目付近のServerRootからの相対パスになるようですので、
  私の場合は"/icons"に設定してあります。

 9. awstats.plファイルを実行し、設定のテストを行う
  awstats.plファイルを"awstats.pl www.myserver.com"という形式でコマンドラインから実行します。
  "www.myserver.com"は、アクセス解析を行いたいサイトのURLを入力します。
  htmlファイルらしき内容が結果として出力されたら、設定はOKです。
  エラーが出たら、メッセージを見てawstats.plファイルを修正し、成功するまでテストします。

 10. ブラウザからアクセスしてみる
  ブラウザから"http://www.myserver.com/cgi-bin/awstats.pl" と入力してみます。
  これで統計結果が表示されればOKです。

 

快適に利用するために

 awstats.plは、実行されるたびにその時点で存在するアクセスログファイルを読み、解析し、自分で作成する統計データファイルに書き出します。その後、アクセスログファイルを切り詰めます。当然ですが、解析すべきアクセスログファイルが大きければ大きいほど、awstats.plの実行に時間がかかることになります。

 しかし、ここで問題になるのが権限です。通常、httpdのアクセスログファイルは一般ユーザーに対して読み取りしか許可されておらず、変更する権限はありません(デフォルトではrootのみ可能)。httpd自体はnobody権限で動作しているので、実際にはブラウザからアクセスした場合にはアクセスログファイルを切り詰めることは出来ません。実際、ブラウザからアクセスすると、"アクセスログファイルを切り詰めることが出来ませんでした"というようなエラーが出ます。

 アクセスログファイルをnobodyで変更できるようにchmod/chgrpする手もありますが、それはセキュリティ的に問題があります。httpdをルート権限で動かすというのも論外なので、やはりREADMEに示されているとおり、ここはcronで"awstats www.myserver.com"を1日に一回程度起動するのがいいでしょう。こうすると実際に私はそのようにして運用しています。

 設定は簡単で、suでrootになったあと、/etc/cron.dailyに適当な名前で以下の内容のファイルを用意し、"chmod 755 (ファイル名)"として実行権限を与えればOKです。

#! /bin/sh
/home/httpd/cgi-bin/awstats.pl www.myserver.com