Awstatsのインストール


Apacheをインストールしたら、アクセス解析をしてみましょう。
アクセス解析を行えばどのページのアクセスが多いのか、どこのページから飛んできたのか、どの時間帯のアクセスが多いのか等、今後のサーバ運用に有益な情報が得られます。

アクセス解析といえばGoogle Analysticsが有名ですが、これはサイト毎にコードを埋め込まなくてはならず手間が掛かるのと、ログを見るのにいちいちGoogleにログインしなければなりません。

今回紹介するAwstatsはサーバにインストールしてApacheのログ単位でアクセス解析を行うものです。
他のも同様のアクセス解析ソフトはありますが、見た目が一番良かったので、Awstatsを選びました。

Awstatsのインストール

apt-getを使ってインストールします。

# apt-get install awstats
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libnet-xwhois-perl
提案パッケージ:
  libnet-dns-perl libnet-ip-perl libgeo-ipfree-perl
以下のパッケージが新たにインストールされます:
  awstats libnet-xwhois-perl
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 39 個。
941kB のアーカイブを取得する必要があります。
この操作後に追加で 5087kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://ftp.jp.debian.org lenny/main awstats 6.7.dfsg-5.1 [918kB]
取得:2 http://ftp.jp.debian.org lenny/main libnet-xwhois-perl 0.90-3 [23.0kB]
941kB を 1s で取得しました (618kB/s) 
未選択パッケージ awstats を選択しています。
(データベースを読み込んでいます ... 現在 107940 個のファイルとディレクトリがインストールされています。)
(.../awstats_6.7.dfsg-5.1_all.deb から) awstats を展開しています...
未選択パッケージ libnet-xwhois-perl を選択しています。
(.../libnet-xwhois-perl_0.90-3_all.deb から) libnet-xwhois-perl を展開しています...
man-db のトリガを処理しています ...
awstats (6.7.dfsg-5.1) を設定しています ...
libnet-xwhois-perl (0.90-3) を設定しています ...
#

Awstatsの設定

設定はAWstatsとApacheの両方で必要になります。まずはAwstatsの方から。

Awstats設定ファイルは/etc/awstats/awstats.confです。このサーバはいくつものバーチャルサイトを作っているので、バーチャルサイト別に解析するように修正することにします。

まずはバーチャルサイトhogehoe.com用に設定ファイルをコピーして、ファイルを編集します。

# cp -p /etc/awstats/awstats.conf /etc/awstats/awstats.hogehoge.conf
# vi /etc/awstats/awstats.hogehoge.conf
LogFile="/var/log/apache2/access.hoge.log"      ←解析するhogehoge.comのログを指定
SiteDomain="hogehoge.com"                           ←サイトのドメイン名
DirData="/var/lib/awstats/hogehoge"              ←データディレクトリをヴァーチャルサイト毎に設定
Lang="jp"                                                    ←表示言語を日本語に変更
SkipHosts="localhost 127.0.0.1 REGEX[^192\.168\.1\.]"    ←同一ネットワークからのアクセスは解析しないように設定

データディレクトリを作ります。

# mkdir /var/lib/awstats/hogehoge

Apacheの設定です。

/etc/apache2/sites-available/default のhogehoge.comのVirtual Hostの定義に/usr/lib/cgi-bin/awstats.plを実行するための設定を追加します。

# vi /etc/apache2/sites-available/defalut
ScriptAlias /awstats/ /usr/lib/cgi-bin/   <-awstats.plを実行できるようにAliasを設定
<Directory "/usr/lib/cgi-bin">              <-/usr/lib/cgi-binに設定を追加
    AllowOverride None
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

デフォルトでは古いapacheのログはgz形式で圧縮されてしまいます。
そんなにログが大きくならないのであれば無圧縮にしましょう。

/etc/logrotate.d/apache2 を編集し、loglotate時の圧縮を無効にします。
また、ログの所有者がrootになっていてこのままではApacheが読み込めないので、所有者をApacheのユーザーwww-dataに変更します。

# /etc/logrotate.d/apache2
#compress
nocompress

#create 640 root adm
create 640 www-data www-data

既に圧縮されてしまったログを解凍し、所有者も変更します。

# ls /var/log/apache2/*.gz | xargs gunzip
# chown www-data:www-data /var/log/apache2/*

これでAwstatsとApacheの設定は終了です。
後は画像表示のため、ドキュメントルートの下でAwstatsのリンクを張ります。

# cd /home/www
# ln -s /usr/share/awstats/icon awstats-icon

これで http://hogehoge.com/awstats/awstats.pl?=hogehoge.com から統計情報が見ることができます。

Awstats初期データベースの作成

最初に過去分のログを全てAwstatsのデータベースに取り込みます。
ログの数が多いと大変なので、こんな感じで取り込みました。
ログはaccess.hogehoge.logです。

# for log in `ls /var/log/apache2/*hogehoge*`
> do
> /usr/lib/cgi-bin/awstats.pl -config=hogehoge.com -update -logfile=$log
> done

しばらく時間がかかりますが、/var/lib/awstats/hogehoge/にデータが作成されれば成功です。

cronの登録

データベースのupdateを自動で行うようにします。
すでに/etc/cron.d/awstatsがあったので、書かれていた行をコメントアウトし、毎日0:00にupdateが行われるよう以下の行を追加します。

# crontab -e
0 0 * * * www-data /usr/lib/cgi-bin/awstats.pl -config=hogehoge.com -update >/dev/null

logrotateの対応

このままだとlogrotate時に問題が起きます。

Awstatsは.conf内のLogfileで指定されたログを使いupdateを行うため、cronで自動upadateを行う0:00からlogrotateが行われる間のログがデータベースに取り込まれなくなってしまいます。
そこでlorotateが行われる直前にupdateが行われるようにします。

logrotate.dの設定ファイル /etc/logrotate.d/apache2 に以下を追加します。

# vi /etc/logrotate.d/apache2
prerotate
/usr/bin/perl /usr/lib/cgi-bin/awstats.pl -config=hogehoge.com -update
endscript

動作確認

後はhttp://hogehoge.com/awstats/awstats.pl?config=hogehoge.comと入力すれば前日までのアクセス統計が見れるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


8 + 7 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>