FreeBSD 13.1 RELEASE - apache24 - ログ解析ツール - awstats - インストール

 クラウディア
1. 概要・インストール
2. apache 定義ファイルの編集
3. awstats.conf の編集
4. ログファイルの連結
5. 解析ファイルの作成

1. 概要インストール


cd /usr/ports/www/awstats/
make config
 オプションは、デフォルトのままにしています。
「FreeBSD 13.1 RELEASE」-「/usr/ports/www/awstats」「make config」


cd /usr/ports/www/awstats/
make
make install
 インストール時のメッセージ。

===>  Installing for awstats-7.8,1
===>  Checking if awstats is already installed
===>   Registering installation for awstats-7.8,1
Installing awstats-7.8,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/
 2020年7月頃に、「FreeBSD 11.4 RELEASE」へインストールしたときが「awstats-7.7_2,1」でした。  「FreeBSD 12.2 RELEASE」「FreeBSD 13.0 RELEASE」へのインストール時、2021年5月28日まで「awstats-7.8,1」でした。  2022年5月27日、「FreeBSD 13.1 RELEASE」で、少し変わりました。

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>
 これ「apache 2.2」までの定義のままなんですな。  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
chmod 755  /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.www.sing.ne.jp.conf
 下記のようなログが出力されます。

Create/Update database for config "/usr/local/www/awstats/cgi-bin/awstats.www.sing.ne.jp.conf" by AWStats version 7.8 (build 20200416)
From data in log file "/var/log/www/access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Flush history file on disk (unique url reach flush limit of 5000)

		中略

Flush history file on disk (unique url reach flush limit of 5000)
Jumped lines in file: 0
Parsed lines in file: 4058552
 Found 65 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 84880 corrupted records,
 Found 0 old records,
 Found 3973607 new qualified records.
 ログが大きければ、初回は恐ろしく時間がかかります。  結果がうまく作成されれば

http://ドメイン名/awstats/awstats.pl?config=awstats.ドメイン名.conf
 にアクセスすることでログの解析結果を見ることができるようになります。  あとは、ログファイルの編集や解析ファイル出力の一連の作業をスクリプト化して「crontab」に記述することで、定期的にログ解析することができるようになります。
ハイスピードプランネットオークションの相場、統計、価格比較といえばオークファン5G CONNECT