LAMP 架构——日志管理
访问日志不记录静态文件
网站大多为静态网页,网页内部的图片、css 文件等同样有其网址链接,如果不设置,这些无效的信息也将被存入访问日志中,会导致访问日志文件大小快速增加,占用大量存储空间。我们可以通过设置不记录某些文件来减少无效信息,节省内存资源。
步骤如下
编辑虚拟主机配置文件
[root@dl-001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
//以上为定义变量:将所有关于图片的请求定义为变量img
CustomLog "logs/111.com-access_log" combined env=!img
//"env=!img"表示非img变量。意思是:不记录关于变量img的请求日志。
说明:
将所有访问图片的请求定义为变量 img,在访问记录(日志)中将其排除即可。重新加载后使用 curl 访问 img 变量中所指定格式的文件内容时将不会产生访问记录。
访问日志切割
随着服务器的运行,访问日志文件大小也将会不断变大,日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件
步骤如下
1,编辑虚拟主机配置文件
[root@dl-001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d_log 86400" combined env=!img
// /usr/local/apache2.4/bin/rotatelogs工具是apache自带的分割日志的工具
// -l参数按当前系统时间为基准进行切割(我国为CST)
// %Y%m%d表示年月日,这样会每天记录一个带日期的日志文件,更方便
// 86400(s)表示每天都进行切割
2,重新加载
[root@dl-001 logs]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@dl-001 logs]# /usr/local/apache2.4/bin/apachectl graceful
3,测试效果
[root@dl-001 ~]# curl -x 127.0.0.1:80 111.com/111.php
abc.com
# logs目录下已经产生当天格式的访问日志
[root@dl-001 ~]# ls /usr/local/apache2.4/logs/
111.com-access_log abc.com-access_log error_log
111.com-error_log abc.com-error_log httpd.pid
111.com-access_20171221_log access_log
4,定期删除老日志
[root@dl-001 ~]# crontab -e
0 0 1 * * /usr/bin/find /usr/local/apache2.4/logs/ -regex ".*/.*-access_.*_log" -mtime +15 -exec rm -f {} \
//每月1号0点0分删除15天以前的所有带日期的日志文件
说明:由于 find 目录查找文件显示为绝对路径,使用正则来匹配时不能只单单匹配文件名,还需要匹配其之前的路径,这里使用了 -regex 这个不常用的参数。
静态文件失效时间设置
浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了
步骤如下
1,在主配置文件中开启 expire
[root@dl-001 logs]# vim /usr/local/apache2.4/conf/httpd.conf
#LoadModule expires_module modules/mod_expires.so
//如果这一行被注释掉了请删除注释
2,查看 expire 模块是否加载
[root@dl-001 ~]# /usr/local/apache2.4/bin/apachectl -M | grep expire
Syntax OK
expires_module (shared)
3,在虚拟主机配置文件中增加配置
[root@dl-001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<IfModule mod_expires.c>
ExpiresActive on //打开该功能的开关
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
// 按文件类型来设置自定义过期时间
// acess表示从访问时间开始
// now表示按当前时间开始
// plus在前面的时间基础上加上
// 1 hours/days 表示文件的生命周期
// 例如 acess plus 1 days 表示该文件从访问的时间开始1天内有效,无需重新获取
ExpiresDefault "now plus 0 min" //除上述外的文件指定默认的过期时间
</IfModule>
说明:重新加载后使用 curl 可以看到效果