操作系统:centos 6.3


下载解压webalizer

wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-05-src.tar.bz2
tar zxf webalizer-2.23-05-src.tar.bz2 && cd webalizer-2.23-05


在lang 目录找到 webalizer_lang.simplified_chinese  将文件格式转化为utf-8,可以借助外部工具,修改后放回即可.这里我使用EditPlus 3进行格式转换,大家可以去网上下载一些软件,将文件格式转换即可,如无需汉化,此步骤可略过.

yum  -y install fonts-chinese  安装中文字体

cd .. && vi graphs.c
在代码最后一行

int ashex2int(char *str)
{
   // returns base-10 integer value from a 2 ASCII hex number
   return from_hex(str[1])+(from_hex(str[0])*16);
}

增加下列代码

void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color)
{
gdImageStringFT(im, 0 , color, "/usr/share/fonts/chinese/TrueType/ukai.ttf", 9 , 0.0, x, y+9, s);
}
void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color)
{
gdImageStringFT(im, 0 , color, "/usr/share/fonts/chinese/TrueType/ukai.ttf", 9 , -PI/2, x, y-9 , s);
}

安装webalizer

yum -y install gd-devel libpng-devel zlib-devel  Geoip*
./configure --prefix=/usr/local/webalizer --enable-geoip --with-language=simplified_chinese
make && make install
cd /usr/local/webalizer/etc
cp webalizer.conf.sample  webalizer.conf
vi /etc/webalizer.conf
   LogFile        /var/log/nginx/access.log  指定日志文件位置,可以是压缩包
   LogType  clf     设置日志类型
   OutputDir      /var/www/vhosts/log   生成统计数据记录目录
   HostName        rocdk890
   GeoIP           yes       启用geoip功能
   GeoIPDatabase   /usr/share/GeoIP/GeoIP.dat 指向geoipdatabase路径
   Incremental     yes
   IncrementalName /var/www/vhosts/log
   Incremental 为yes时,使每天分析结果存在,否则只会为当时分析的,LogType定义为clf,所以要分析的nginx日志的格式与clf符合,要不分析时会报错误.

cron 定时执行脚本 按天目录生成报告

#!/bin/bash
webdir="/var/www/docs/`date '-d -2 day' '+%Y%m%d'`/"
if [ ! -d $webdir ];then
mkdir -p "$webdir"
fi
/usr/local/webalizer/bin/webalizer -c /usr/local/webalizer/etc/webalizer.conf  -o $webdir

apache 配置

<VirtualHost *:80>
    DocumentRoot  /var/www/docs
    ServerName  webalizer.v1cn
    AddDefaultCharset UTF-8
    <Directory "/var/www/docs">
        Options Indexes
    </Directory>
</VirtualHost>