Apache 服务器Log分析应用实例

ZDNet软件频道 时间:2008-07-02 作者: | 中国IT实验室 我要评论()
本文关键词:log Apache PHP Linux
日志文件是针对每一个虚拟主机产生的所以可以配置一台服务器上多个虚拟主机的日志分析.
一,所用软件及工具
  
  1,Apache服务器   
  2,awstats 日志分析软件   
  3,cronolog 日志截取软件   
  二,环境构架
  
  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
  
  三, 配置
  
  1, Apache
  
  a,让Apache中的某个虚拟主机产生日志:
  
  全局环境变量设置:
  
  代码:logFormat "%h %l %u %t "%r" %>s %b "%i" "%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  DocumentRoot /db/htdocs/www
  
  ServerName  
  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
  
  主要设置的是需要输入做统计的主机名的配置文件名如:  
  接着修改 刚才配置是产生的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 后可以在浏览器中输入进行访问了。
  
  3,cronolog (基本不用什么修改)
  
  4,crontab的修改
  
  在 crontab中添加如下 命令保证15分钟更新一次,也可以根据你自己的需要修改更新的间隔
  
  代码:
  
  */15 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.abc.net
  
  四,安全性考虑
  
  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>
  
  如果 虚拟主机 主目录为/db/htdocs/www/ 则在浏览器中输入就可以通过认真访问静态页面
  
  3,如果用静态页面就不要忘了注释掉
  
  LoadModule cgi_module modules/mod_cgi.so

log

Apache

PHP

Linux


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134