cd /usr/ports/www/awstats/
make
make install
インストール時のメッセージ。
===> Installing for awstats-7.7_2,1
===> Checking if awstats is already installed
===> Registering installation for awstats-7.7_2,1
Installing awstats-7.7_2,1...
Use /usr/local/www/awstats/tools/awstats_configure.pl to set up your
hosts.
To activate awstats in your webserver, see the example files for
apache: /usr/local/share/doc/awstats/httpd_conf
nginx: /usr/local/share/doc/awstats/nginx/
今はコンフィガースクリプトやコンフィグレーションファイルの例が提供されているんですね。
2. apache 定義ファイルの編集
正常にインストールできていれば、ウェブサーバのドキュメントルートが「/usr/local/www」とすれば
/usr/local/www/awstats
というディレクトリが作成されているはずです。
「apache」の定義ファイルを作成してアクセスできるようにします。
定義ファイルを
/usr/local/etc/apache24/Includes/awstats.conf
として、提供されているものをコピーします。
cp /usr/local/share/doc/awstats/httpd_conf /usr/local/etc/apache24/Includes/awstats.conf
コピーした直後の状態です。
#
# Content of this file, with correct values, can be automatically added to
# your Apache server by using the AWStats configure.pl tool.
#
# If using Windows and Perl ActiveStat, this is to enable Perl script as CGI.
#ScriptInterpreterSource registry
#
# Directives to add to your Apache conf file to allow use of AWStats as a CGI.
# Note that path "/usr/local/awstats/" must reflect your AWStats install path.
#
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icon/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/www/awstats">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
24行目以降に手を入れます。
<Directory "/usr/local/www/awstats/">
Options None
AllowOverride None
Require all granted
</Directory>
28行目は、実際にはアクセス制限をかけるようにします。
「apache」を再起動します。
service apache24 configtest
service apache24 graceful
3. awstats.conf の編集
/usr/local/www/awstats/cgi-bin/awstats.model.conf
というコンフィグレーションファイルのサンプルが用意されています。
例えば、ウェブサーバのドメイン名が「www.sing.ne.jp」とするならば、ドメイン名をいれた「.conf」にコピーして編集します。
cp /usr/local/www/awstats/cgi-bin/awstats.model.conf /usr/local/www/awstats/cgi-bin/awstats.www.sing.ne.jp.conf
vi /usr/local/www/awstats/cgi-bin/awstats.www.sing.ne.jp.conf
編集する箇所は、環境、好みによって異なりますが、わたしがおすすめ、および実際に手を入れたのは以下の通りです。
#
LogFile="/var/log/httpd/mylog.log"
実際のログファイル名を絶対フルパスで記述します。
LogFormat=1
「apache」の「combined」は、「1」でいいと書いてありますが・・・なんでだろううまくいかなかったので、下記へ書き換えました。
LogFormat="%host %other %other %time1 %methodurl %code %bytesd %refererquot %uaquot"
#
SiteDomain=""
ウェブサーバのドメイン名を記述します。
#
HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]"
ウェブサーバの別名を記述します。
DirData="."
「/var/lib/awstats」に加工用のデータを置いていますので、下記へ書き換えました。
DirData="/var/lib/awstats"
AllowFullYearView=2
デフォルトの設定で年間で見ることができます。
3 に設定すると操作して、別の年を見ることができるようになります。
SkipHosts=""
「localhost」をはじめ、自分のクライアントPCのドメイン名や IP アドレスを記述することで、ログ内の自分からのアクセスを統計上から除外します。
本サーバの場合、こんな感じ
SkipHosts="localhost REGEX[.*\.sing\.ne\.jp]"
SkipFiles=""
統計に含めたくないファイル名を記述します。
「HostAliases」「SkipHosts」「SkipFiles」等は、「REGEX」準拠の正規表現を使用することが可能です。
わたしは、動画ファイルを省略しますので、以下のように記述しています。
SkipFiles="REGEX[.*\.mp4] REGEX[.*\.m4v] REGEX[.*\.flv]"
4. ログファイルの連結
「awstats.ドメイン名.conf」にログファイル名を記述しますが、「awstats」は、「analog」と違ってログファイル名をワイルドカード表記して複数のログファイルを一度に読み込ませることはできません。
「newsyslog」等で月間、週間等でログファイルをローテーションしている場合は、複数ファイルになっていますが、これをすべて解析したい場合は、ログファイルを連結します。
連結したログファイルの出力先は、デフォルトで「awstats」のワークフォルダが「/var/lib/awstats」となっているのでそこに出力します。
前節のコンフィグレーションファイルの設定で、アクセス解析に不要なホスト名を設定できると記述していますが、これは、アクセスホストのリストからはずすのみで、そのホストからアクセスしたページへのカウント等はそのままカウントされてしまいます。
これを解消するには、ログファイルからそのホストの履歴を消してしまう必要があります。
面倒になったので、ログファイルのマージとスキップホストの行を消すスクリプトを書きました。
以前は、「Perl」で記述しておりましたが、「Python」で書き直しました。
「Python - apache のログを編集する」あたりに掲載しております。
興味があれば、参考にしてみてください。
5. 解析ファイルの作成
ログファイル連結して準備が整ったので、解析ファイルを出力します。
> /usr/local/bin/perl /usr/local/www/awstats/cgi-bin/awstats.pl -update -config=awstats.ドメイン名.conf
Create/Update database for config "/usr/local/www/awstats/cgi-bin/awstats.www.sing.ne.jp.conf" by AWStats version 7.7 (build 20180105)
From data in log file "/var/log/www/httpd-access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 29
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 29 corrupted records,
Found 0 old records,
Found 0 new qualified records.
2行目以降は、「awstats」からのログの一例です。
ログが大きければ、初回は恐ろしく時間がかかります。
結果がうまく作成されれば
http://ドメイン名/awstats/awstats.pl?config=awstats.ドメイン名.conf
にアクセスすることでログの解析結果を見ることができるようになります。
あとは、ログファイルの編集や解析ファイル出力の一連の作業をスクリプト化して「crontab」に記述することで、定期的にログ解析することができるようになります。