首页 > 学技术 > 技术网文 > Web服务器 > 正文

[原创] [原创]Apache 服务器Log分析应用实例


来源 chinaunix.net 酷勤网整理

互联网的飞速发展,无论是传统企业的网站,还是互联网企业,为了了解自己的客户来源,点击率等资料,对网站日志的分析尤为重要,以下就本人所做的日志分析系统与大家分享,希望能对大家有所帮助。

欢迎大家复制,但请大家保留本文的完整,谢谢!!


[color=blue]一,所用软件及工具[/color]
    1,Apache服务器         官方网址:http://www.apache.org
    2,awstats  日志分析软件   官方网址:http://awstats.sourceforge.net/
    3,cronolog 日志截取软件  官方网址:http://www.cronolog.org  
[color=blue]二,环境构架[/color]
    1,RedHat AS 3
    2,Apache
      ./configure –prefix=/usr/local/apache2/ --enable-so
      make
      make install
    3, awstats      
      直接tar到 /usr/local/awstats
    4,cronolog    
      ./configure –prefix=/usr/local/cronolog
      make
      make install
[color=blue]三, 配置[/color]
      1, apache 
        a,让apache中的某个虚拟主机产生日志:

全局环境变量设置:  
LogFormat "%h %l %u %t \"%r\" %>;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

SetEnvIf Request_URI \.gif$ gif-image
SetEnvIf Request_URI \.GIF$ gif-image
SetEnvIf Request_URI \.jpg$ gif-image
SetEnvIf Request_URI \.JPG$ gif-image
SetEnvIf Request_URI \.png$ gif-image
SetEnvIf Request_URI \.swf$ gif-image
SetEnvIf Request_URI \.SWF$ gif-image
SetEnvIf Request_URI \.css$ gif-image
SetEnvIf Request_URI \.CSS$ gif-image
SetEnvIf Request_URI \.js$ gif-image
SetEnvIf Request_URI \.JS$ gif-image
SetEnvIf Request_URI \.ico$ gif-image

产生日志但不包括 图片。  
虚拟主机日志设置
<VirtualHost 12.34.56.78:80>;

        ServerAdmin webmaster@abc.net
        DocumentRoot /db/htdocs/www
        ServerName www.abc.net
        CustomLog "|/usr/local/cronolog/sbin/cronolog /db/logs/www.%Y-%m-%d.log" combined env=!gif-image
#用cronolog截取存放在/db/logs/下的按日期产生的apache日志文件
</VirtualHost>;

注:日志文件是针对每一个虚拟主机产生的所以可以配置一台服务器上多个虚拟主机的日志分析
       b,别名设置

#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">;
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>;

该配置在运行awstats/tools/awstats_configure.pl 后会自动产生所以不用手动添加。
      c,awstats需要cgi的支持如果没有添加cgi可以现在添加

./apxs -c -i /usr/local/src/httpd-2.0.50/modules/generators/mod_cgi.c

再在httpd.conf 中添加

LoadModule cgi_module         modules/mod_cgi.so

d为了保护日志统计信息需要对某些目录进行认证设置,需要认证模块的支持

./apxs -c -i /usr/local/src/httpd-2.0.50/..../mod_auth.c

再在httpd.conf 中添加

LoadModule auth_module        modules/mod_auth.so

配置需要认证的目录:

<Directory "/db/htdocs/www/awstat/">;
   AuthType Basic
  AuthName "Restricted Files"
  AuthUserFile /usr/local/apache2/passwd/passwords
  Require user loguser
  </Directory>;

其中在 /usr/local/apache2/passwd/下产生passwords 的密码文件
   运行如下代码产生用户名为loguser用户及其密码

/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/passwd/passwords  loguser

注意:先要在 /usr/local/apache2/下建passwd目录
2,Awstats
         运行 /usr/local/awstats/tools/awstats_configure.pl
         主要设置的是需要输入做统计的主机名的配置文件名如:www.abc.net 
         接着修改 刚才配置是产生的awstats配置文件 默认位置在:                                      
          /etc/awstats/awstats.www.abc.net.con 主要做指定log位置

LogFile="/db/logs/www.%YYYY-4-%MM-2-%DD-2.log"

创建目录:mkdir /var/lib/awstats/
         执行:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.abc.net 

更新,update 后可以在浏览器中输入 http://www.abc.net/awstats/awstats.pl 进行访问了。
        
        
       3,cronolog (基本不用什么修改)
       4,crontab的修改
      在 crontab中添加如下 命令保证15分钟更新一次,也可以根据你自己的需要修改更新的间隔

*/15 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.abc.net

[color=blue]四,安全性考虑[/color]
   1, 以上的设置由于要cgi支持,也增加了安全隐患可以用awstats 自带的awstats_buildstaticpages.pl来 生成静态页面 可以添加到crontab中

*/15 * * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=www.abc.net -lang=cn -dir=/db/htdocs/www/awstat/ -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl

这样没15分钟在/db/htdocs/www/awstat/ 下生成各种静态页面

   2,保护/db/htdocs/www/awstat/禁止未授权用户访问

      在httpd.conf中添加

<Directory "/db/htdocs/www/awstat/">;
  AuthType Basic
 AuthName "Restricted Files"
  AuthUserFile /usr/local/apache2/passwd/passwords
   Require user loguser
  </Directory>;

如果www.abc.net 虚拟主机 主目录为/db/htdocs/www/ 则在浏览器中输入http://www.abc.net/awstat/awstats.www.abc.net.html 就可以通过认真访问静态页面
   3,如果用静态页面就不要忘了注释掉 
      LoadModule cgi_module  modules/mod_cgi.so


 [color=blue]五,献给我最爱的飞飞。[/color]

 [color=blue]六,由于本人是初学者,本文略显粗糙,如有任何指点和问题欢迎和我联系,大家相互交流提高 :hoash2003@hotmail.com [/color]


欢迎大家复制,但请大家保留本文的完整,谢谢!!



 rhinux 回复于:2004-11-29 10:29:20

自己顶一个先,希望大家能提意见!


 徐徐的飞飞 回复于:2004-11-29 13:35:03

以上四条,一条也没看明白 :em06: 
  就第5条看明白了 :em02:  :em02: :lol:


 wd 回复于:2004-11-29 13:56:59

晕死


 徐徐的飞飞 回复于:2004-11-30 09:07:13

顶住, :em06: 
千万不能沉~~~~~ :cry:


 tianci3982730 回复于:2004-11-30 16:01:36

帮你顶偶在win下一直用awstats感觉不错
linux下还是mrtg


 hrcxf 回复于:2004-11-30 21:47:31

mrtg没有awstats对apache日志记录那么详细和直观


 rhinux 回复于:2004-12-03 10:26:56

本人测试一段时间后,觉得用awstats生成静态页面比较占系统,所以我建议各位有条件的可以单独做一台日志分析的机器,本人过段时间做一下,到时候在贴在这和大家分享


 wing-qiang 回复于:2004-12-16 11:07:33

不错!顶一个!:)


 szwsx 回复于:2005-01-01 15:03:36

非常感谢!!


 aspbiz 回复于:2005-01-06 11:55:25

支持,

写得不错。


 coldcoffee 回复于:2005-03-01 14:37:01

我是在win下安的apache和Awstats,我应该怎么配置?


 rhinux 回复于:2005-04-10 14:16:35

awstats 安全漏洞

Warning, a security hole was recently found in AWStats versions from 5.0 to 6.2 when AWStats is used as a CGI: A remote user can execute arbitrary commands on your server using permissions of your web server user (in most cases user "nobody").
If you use AWStats with another version or is not available as a CGI, you are safe. If not, it is highly recommanded to upgrade to 6.4 version that fix this security hole and another less important one still present in 6.3. 


入侵方法不便在此公布。
请用老版本的朋友升级到6.4 or 6.5(目前是测试版本)或者停掉cgi


 rhinux 回复于:2005-04-10 14:44:08


#注释掉以下内容就可以了,这样的话可以用静态生成的方法
#或者自己改名字,加认证也可以。
# Directives to allow use of AWStats as a CGI
#
#Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
#Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
#Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
#ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">;
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>; 



 james81327 回复于:2005-11-25 17:01:31

awstats能不能统计出,一个用户的在线时间呢?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=455139
转载请注明作者名及原文出处



收藏本页到: