Apacheのアクセス解析のために、Awstatsをインストールします。

 

 

前提条件

 

インストール

パッケージからインストールします。

$ sudo apt install awstats

 

設定

設定ファイルを雛形からコピーします。コピー先のファイル名はawstats.ドメイン名.confとなります。
次の例は、ドメイン名がexample.comの場合です。

$ sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.example.com.conf
$ vi /etc/awstats/awstats.example.com.conf

変更箇所は以下の通り。
SkipHostsには集計に含めたくないホストを

SiteDomain="example.com"
HostAliases="localhost 127.0.0.1 example.com"
SkipHosts="127.0.0.1 REGEX[^10\.] xxx.yyy.zzz.aaa"

また、Cronで統計データを更新するときに、オリジナルのファイルをそのままにしておくとエラーを吐いてくるので、ファイル名を変更しておきます。

$ sudo mv /etc/awstats/awstats.conf /etc/awstats/awstats.conf.org

 

統計データの作成をテスト

次ののコマンドを実行します。

sudo /usr/lib/cgi-bin/awstats.pl -config=example.com -update

実行後は以下のようなレスポンスがあればOK

Update for config "/etc/awstats/awstats.example.com.conf"  
With data in log file "/pathtoyourlog/yourlog.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)...  
Jumped lines in file: 0  
Parsed lines in file: 225730  
Found 122 dropped records,  
Found 87 corrupted records,  
Found 0 old records,  
Found 225521 new qualified records.

 

Apache2.4でAwstatsを設定

mod_cgidを有効にする。

$ sudo a2enmod cgid

awstats.confを作成

$ sudo vi /etc/apache2/sites-available/awstats.conf

実際に動いた(笑)設定は以下の通り。オープンにするのは気持ちが悪いので、Digest認証するようにしています。

Alias /awstats-icon/ /usr/share/awstats/icon/
Alias /awstatsclasses/ /usr/share/java/awstats/
ScriptAlias /cgi-bin /usr/lib/cgi-bin
ScriptAlias /awstats /usr/lib/cgi-bin

<Directory "/usr/lib/cgi-bin">
    AuthType Digest
    AuthName "Digest Auth"
    AuthUserFile /etc/apache2/.htdigest
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    AddHandler cgi-script cgi pl
    AllowOverride None
    Require valid-user
</Directory>

<Directory /usr/share/awstats>
    Options +FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /usr/share/java/awstats>
    Options +FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

サイトを有効にします。

$ sudo a2ensite awstats.conf

 

ダイジェスト認証の設定

以下のコマンドで、ダイジェスト認証用のユーザーとパスワードを設定する。

$ sudo htdigest -c /etc/apache2/.htdigest "Digest Auth" ${SOME_USER_NAME}

パスワードを2回問われるので入力すれば、OK。

 

動作の確認

設定に間違いがないか確認。

$ sudo apachectl configtest

あとは、サービスを再起動して、Awstatのページを確認する。

$ sudo systemctl restart apache2

ブラウザから、次のURLに接続してみる。

https://www.example.com/awstats?awstats.pl?config=example.com

ダイジェスト認証のダイアログDigest Authが開いて、ユーザー名、パスワードを入力して統計画面が出ればOK。

 

Cronの設定

/etc/cron.d/awstatsに、次のように設定されているので、そのまま利用します。

MAILTO=root

*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

 

パーミッションの変更

ここで、実行ユーザーがwww-dataになっているのに注意。このままだと、Cronで実行される度にroot宛にログファイルが読み込めない等のエラーが発生している、という内容のメールが10分毎(!)に飛んでくるので、関連するファイルのパーミッションを変更する。

実行ユーザーをrootにすればいいと思うのですが、ここはわざわざwww-dataを実行ユーザとした意図(?)を汲み取ることにします。
$ sudo chgrp -R www-data /var/log/apache2
$ sudo chmod 755 /var/log/apache2
$ sudo chmod 644 /var/log/apache2/*

また、apache2のログローテートも修正します。

sudo vi /etc/logrotate.d/apache2

次の箇所を修正する。

notifiempty
create 640 root www-data
sharedscripts

 

 
カテゴリー: apacheLinuxubuntu管理一般

zaturendo

中小企業社内SE。

0件のコメント

コメントを残す

アバタープレースホルダー

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