Apacheのアクセス解析のために、Awstatsをインストールします。
前提条件
- Ubuntu18.04 + LAMP環境構築(2) - Apache2.4 の設定が終わっている。
- メールサーバ移行計画(1)とメールサーバ移行計画(2)の設定が終わっている。
インストール
パッケージからインストールします。
$ 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
0件のコメント