您的位置: 首页 / Experiences / IXWebhosting 上安装 Awstats(二)

IXWebhosting 上安装 Awstats(二)

Published at Dec 19, 11pm / Keywords: , ,

续上文:IXWebhosting 上安装 Awstats(一)(三)

提示:这篇文章只是分析和解决问题,并不是一步一步设置那种。我认为,了解整个解决问题的过程比直接告诉你如何去做要受益更多。当然,这篇文章之后我也会写个最简明的教程,手把手帮你装好 Awstats,敬请期待。

上文提到了两个难点,解决了它们基本就等于成功了 80%,另外 20% 就看 IXWebhosting 是否提供了足够的运行环境了(经验正结论是肯定的)。首先看第一个问题,日志文件名的解决。

其实解决这个问题相对还是简单的,因为每天的日志文件命名还是很有规律的。我们只需要在配置文件中设置每日正确的 LogFile 就可以了。这种工作当然不能由人来做,要留给代码做。前文提到 IX 的日志文件文件名为 /logs/domain/domain.,前面的路径都很容易搞定,只差最后那个时间戳。通过测试,我得到这个时间戳实际就是格林威治时间每天的 00:00:00 的时间戳,通过一行 php 程序就可以搞定:



实际中由于 IXWebhosting 服务器时区设置不是 GMT,我用了两行命令生成了正确的时间戳。不过无论什么方法,能得到 LogFile 文件名这个问题解决也就有希望了。我使用的方法是在每次统计前,先运行一个 PHP 程序,生成含有正确 LogFile 的 awstats 配置文件,随后 awstats 进行统计时就可以正常进行统计了。这种方法的优点在于,我还可以在这个 php 脚本里做很多事情,为后面的工作做好准备,缺点就是要添加两个 cronjobs,稍微麻烦一点。另外我想可能通过写 Awstats 插件的方法,可以为 LogFile 添加对时间戳的支持。具体我没有试,因为我发现,由于多年不用,我现在对于 Perl 的程序,水平只限于看懂和改改了 -_-b。权衡利弊,我选择写 PHP 脚本生成配置文件。

由于 Awstats 配置文件是支持 Include 的,所以我们生成配置文件时只需要包含 Include 和 LogFile 就可以了,当然如果需要多站统计再加上 Domain 和 Aliases。其它的配置预先写好个配置文件 Include 进来就好了。

PHP 脚本本身也很简单,主要有几个方面的功能。通过时间戳和命名规则得到正确的 LogFile 完整文件名,并写入配置文件,这也是最核心的功能。第二,尝试建立所需的静态文件输出路径,并设定正确的输出权限,同时向目录中写入 .htaccess 文件,定义 DirectoryIndex 为 awstats..html,为浏览提供方便。由于我需要对多个站点进行统计,我额外添加了一部分,生成最终通过 cronjob 运行的 bash 脚本,对需要统计的站点进行统计。由于 IX 对于当天没有产生浏览的网站不生成日志,因此可以根据这点判断是否需要统计,从而生成合适的 bash 脚本提高效率。

再说说上次提到的目录权限问题。静态文件目录的问题很容易解决,通过 php 创建或 chmod 就可以解决,重点在于配置文件和最终的 Bash 脚本。由于不能将 cgi-bin 目录设为 0777,因此通过 php 无法向目录中建立文件,我选择了一个折中的方法绕过这个问题。准备几个 0 字节的文件,文件名与将要生成的文件一样,上传到 cgi-bin 目录。然后将配置文件的属性改为 0666,Bash 脚本的文件名改为 0777,这样 php 程序就可以根据需要修改他们的内容了。

做完这些工作,安放好 Awstats 程序和 PHP 脚本,并在 IX 的控制面板中设定好 cronjob,等着看漂亮的统计结果吧。

具体实现方法看这里

发表您的观点或推荐本文 Loading...