[黑客人生] AWStats

前幾天剛把 FreeBSD 上的 AWStats 更新到 6.95,照例要處理一下,讓繁體中文的介面是 UTF-8 編碼的,然後一樣用靜態網頁模式來製作報表。因為網路上容易查到的資訊好像都是有誤或不足的,所以這邊稍微速記一下。

首先就是用 ports 來更新 AWStats:

cd /usr/ports/www/awstats/
sudo make clean deinstall reinstall

如果是全新安裝的話則是用:

sudo make clean install

接著要來把原本是 Big5 編碼的繁體中文語系檔改為 UTF-8 編碼:

cd /usr/local/www/awstats/cgi-bin/lang/
sudo cat awstats-tw.txt | sed -e 's/big5/utf-8/' | iconv -f big5 -t utf-8 > awstats-tw-utf8.txt
sudo mv awstats-tw-utf8.txt awstats-tw.txt

別忘了還有工具提示的語系檔:

cd /usr/local/www/awstats/cgi-bin/lang/tooltips_w/
sudo cat awstats-tt-tw.txt | iconv -f big5 -t utf-8 > awstats-tt-tw-utf8.txt
sudo mv awstats-tt-tw-utf8.txt awstats-tt-tw.txt

接著是設定(有需要的話),可以參考 /usr/local/www/awstats/cgi-bin/awstats.model.conf 來做,並不難。修改好的設定檔存成 awstats.FOO.conf,其中 FOO 就是這個設定檔的「名字」,等一下會用到。

最後是最重要的一點:用靜態網頁模式來使用 AWStats,這樣可以保證絕對的安全,也就是不會讓歹人有機會利用 AWStatas 可能的安全漏洞入侵你的機器(多年前我還很菜的時候吃過這種虧)。我現在用的是這個 Makefile

Makefile:
YYYY != date -v -1d +%Y
MM != date -v -1d +%m

AWROOT = /path/to/html/output/
DIR = $(AWROOT)/$(YYYY)/$(MM)

update:
/usr/local/www/awstats/cgi-bin/awstats.pl -update -config=FOO

output:
mkdir -p $(DIR)
cd $(AWROOT) && find 2*/* -type d | sort -r | sed -e 's#\(.*\)#<a href="\1/">\1</a><br>#g' > index.html
/usr/local/www/awstats/tools/awstats_buildstaticpages.pl -config=FOO -dir=$(DIR) -awstatsprog=/usr/local/www/awstats/cgi-bin/awstats.pl -year=$(YYYY) -month=$(MM)
cd $(DIR) && ln -f awstats.FOO.html index.html

這樣以後要更新資料(把 log 處理成 AWStats 資料檔)就用:

gmake update

然後要做出統計網頁(把 AWStats 資料檔做成靜態網頁)的時候就用:

gmake output YYYY=四位數的年份 MM=兩位數的月份

如果你發現不會動的話,別忘了調整一下各目錄及檔案的讀寫權限。

jedi.org: