AWStats6.2の導入メモ

今回はAWStats 6.2のインストールと、合わせて新規にビルド・インストールしたapache1.3のログ関係の設定を行いました。

AWStats
Downloadから、awstats-6.2.tgzをダウンロードしました(今思えばrpm版使えば良かった)。

ファイルを展開します。
# cd /usr/local
# tar zxvf /tmp/awstats-6.2.tgz
# mv awstats-6.2 awstats
ファイルの展開先はどこでもいいのですが、/usr/local/awstatsに置くのが無難です。

awstats/docs/awstats_setup.html

を参考に進めていきます。

Step 0-1:
# perl awstats_configure.pl

基本的に行うことは
- httpd.confのawstats用書き換え
- confファイルの作成(名前づけ)
です。httpd.confの方は特に問題ありませんのでそのままで大丈夫です。

perl awstats_configure.plの実行終了時に以下のメッセージが出ます。

-----> Add update process inside a scheduler Sorry, configure.pl does not support automatic add to cron yet. You can do it manually by adding the following command to your cron: /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=blog.group4.co.jp Or if you have several config files and prefer having only one command: /usr/local/awstats/tools/awstats_updateall.pl now

A SIMPLE config file has been created: /etc/awstats/awstats.blog.group4.co.jp.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'blog.group4.co.jp' with command:
> perl awstats.pl -update -config=blog.group4.co.jp
You can also read your statistics for 'blog.group4.co.jp' with URL:
> http://localhost/awstats/awstats.pl?config=blog.group4.co.jp

このメッセージに従い、cronの設定を行うべく
/etc/cron.hourly/awstats
に以下を記述。


#!/bin/sh
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=blog.group4.co.jp 2>&1 > /dev/null


permissionの設定。
# chmod 755 /etc/cron.hourly/awstats

Step 0-2:
confファイルについては、この後に必ず修正します。
デフォルトでは /etc/awstats/awstats.<名前>.confでconfファイルが作成されています。

This is for example the parameters you should check seriously :
- Check/Change LogFile value with full path of your server log file (You can also use a relative path from your awstats.pl directory, but full path avoid errors).
- Check/Change LogType value with "W" for analyzing web server log files, "S" for a streaming server log file, "M" for mail log files, "F" for ftp log files.
- Check if LogFormat has the value "1" (it means "NCSA apache combined/ELF/XLF log format") or use a personalized log format if you don't use combined log format.
- Edit SiteDomain parameter with the main domain name or the intranet web server name used to reach the web site to analyze (Example: www.mydomain.com). If you have several possible name for same site, add list in HostAlias parameter.
- You can also change other parameters if you want.

ということなので、

LogFile="/usr/local/apache/logs/access_log"
LogType ログタイプ。Wで良い
LogFormat ログフォーマット。1で良い
SiteDomain="blog.group4.co.jp"
DirData="/usr/local/awstats/wwwroot/data" (cron化するときは必ず絶対パス指定にします)

と設定しました。DirData, データ保存用ディレクトリを作成します。

# mkdir /usr/local/awstats/wwwroot/data
# chmod 777 /usr/local/awstats/wwwroot/data

Step1-1:
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=myvirtualhostname -update

を手動で実行します。これでエラーなく終了すればログ解析は出来ています。

http://www.myserver.mydomain/awstats/awstats.pl?config=myvirtualhostname

でブラウザからアクセスが可能となります。

Step 2 : Read Statistics

では色々な見方を紹介していますので、そちらを参照されてください。
セキュリティの観点から、このページはアクセス制限したほうが良いでしょう。

httpd.confの以下の部分を変更します。


<Directory "/usr/local/awstats/wwwroot">
Options All
AllowOverride All

Order allow,deny
Allow from all
</Directory>

/usr/local/awstats/wwwroot/cgi-bin/.htaccess


AuthType Basic
AuthName "Password Required"
AuthUserFile /apache/password/directory/.htpasswd
require valid-user


を入れてユーザー制限しました(ユーザー制限の仕方は他のサイトをご覧下さい)。

- サーチキーワードの日本語化
のまのしわざ:AWStats 5.9のインストール
上記のコメントにならい、修正しました。


[root@vtec cgi-bin]# diff awstats.pl*
4255d4254
< use Jcode;
4259d4257
< Jcode::convert(\$stringtodecode, "utf8");

apache設定関連
- logrotateの設定

■apacheのログの例

ここで例としてapacheのlogファイルをlogrotateする設定例を紹介します。ここではapacheのログファイル(apache_log, error_log)及びpidファイル(httpd.pid)が/usr/local/apache/logs/ディレクトリにあるものとします。多くのプロセスはsyslogにログを取らせるように設定されていますが、apacheのデフォルトではsyslogを通さずに自分でログを採るようになっています。そのため、ローテーション後にはhttpdにHUPシグナルを送ってログファイルを初期化することに注意してください。 以下のように記述したファイルを /etc/logrotate.d/ ディレクトリに保存しておけば後は自動的にローテーションしてくれます。

/usr/local/apache/logs/access_log{
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2> /dev/null` 2> /dev/null
endscript
}
/usr/local/apache/logs/error_log{
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2> /dev/null` 2> /dev/null
endscript
}

上記の内容で/etc/logrotate.d/apacheを作りました。

- /etc/init.d/httpdの設定

redhat8にインストールされていた httpd(apache2)のスクリプトは2.0用なので、以下の手順で今回インストールした apache1.3用のスクリプトを作りました。

Apache HTTP Server: ブート時の起動

システムのリブート後にもサーバを実行し続けさせたい場合は、 httpd または apachectl の呼び出しをシステムのスタートアップファイル(標準では rc.local または、rc.N ディレクトリのファイル)に追加して下さい。これは root で Apache を開始します。この設定をする前にセキュリティやアクセス制限が サーバに対して適切に設定されるようにしてください。 apachectl スクリプトは init スクリプトとして直接リンクできるように設計されていますが、 システムの正確な仕様を把握してから使用してください

上記の説明を信用して、
# cp /etc/init.d/httpd / # cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

元々の/etc/init.d/httpdの上の部分、

#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd


を新しいhttpdの上の部分に挿入。
/sbin/chkconfigを使って、runlevel 3と5のみ起動するように設定しました。

[root@vtec init.d]# /sbin/chkconfig --list httpd
httpd 0:オフ 1:オン 2:オン 3:オフ 4:オン 5:オフ 6:オフ
[root@vtec init.d]# /sbin/chkconfig --level 12345 httpd off
[root@vtec init.d]# /sbin/chkconfig --level 35 httpd on
[root@vtec init.d]# /sbin/chkconfig --list httpd
httpd 0:オフ 1:オフ 2:オフ 3:オン 4:オフ 5:オン 6:オフ

再起動はかけてないので、動作確認はしていません(^^;