lamp-日誌設置(訪問日誌切割、不記錄靜態文件日誌、緩存文件過期時間)
阿新 • • 發佈:2018-03-05
lamp 訪問日誌 訪問日誌切割 設置靜態文件不記錄日誌 設置緩存靜態文件過期時間 訪問日誌不記錄指定類型的文件
在網站大多數元素為靜態文件,比如圖片、css、js等,這些靜態文件都可以不用記錄,我們只需要記錄哪個ip訪問了那個網頁就可以;
編輯配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在 ErrorLog "logs/111.com-error_log"的下面加入; 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 在CustomLog "logs/111.com-access_log" common 增加env=!img
代碼預覽
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.111.com ErrorLog "logs/111.com-error_log" 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 CustomLog "logs/111.com-access_log" common env=!img </VirtualHost>
生效配置
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
測試
未設置配置前
訪問111.com/baidu.png會被日誌記錄下來
curl -x127.0.0.1:80 111.com/baidu.png
tail /usr/local/apache2.4/logs/111.com-access_log
127.0.0.1 - - [05/Mar/2018:16:41:31 +0800] "GET HTTP://111.com/baidu.png HTTP/1.1" 200 7877
設置生效後
curl -x127.0.0.1:80 111.com/baidu.png tail /usr/local/apache2.4/logs/111.com-access_log 127.0.0.1 - - [05/Mar/2018:16:41:31 +0800] "GET HTTP://111.com/baidu.png HTTP/1.1" 200 7877
除了生效前被記錄下來的一條日誌,生效後訪問的卻並未被記錄下來;
訪問日誌切割
日誌文件會一直記錄著,總有一天會把磁盤空間給占滿,一個文件上100G如何查看刪除?那麽我們可以設置日誌按天切割成一個日誌文件,一來方便查看日誌,而來方便刪除老舊日誌;
配置虛擬主機文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改這一條配置CustomLog "logs/111.com-access_log" common env=!img
沒有配置過不記錄靜態文件日誌的小夥伴,請忽略掉後面的env=!img
修改成
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log" common env=!img
代碼預覽
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.111.com
ErrorLog "logs/111.com-error_log"
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
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log" common env=!img
</VirtualHost>
生效配置
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
測試
配置前log文件
ls /usr/local/apache2.4/logs/
[root@shu-test 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_log access_log httpd.pid szl.com-error_log
111.com-error_log error_log szl.com-access_log
[root@shu-test 111.com]#
配置生效,訪問後log文件
curl -x127.0.0.1:80 111.com/sdfhskjadfh.df
[root@shu-test 111.com]# curl -x127.0.0.1:80 111.com/sdfhskjadfh.df
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /sdfhskjadfh.df was not found on this server.</p>
</body></html>
ls /usr/local/apache2.4/logs/目錄下面多出了111.com-access_20180305.log按年月日的log文件
[root@shu-test 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_20180305.log 111.com-error_log error_log szl.com-access_log
111.com-access_log access_log httpd.pid szl.com-error_log
[root@shu-test 111.com]#
設置靜態元素緩存過期時間
瀏覽器訪問網站圖片時,會把靜態文件下載到電腦上,這樣下次再訪問時就不用去遠程下載,達到節約服務器帶寬的作用;
然而每個網站都是有內容更新的,我們一般設置一天更新一次,不設置更新那麽本機訪問的網頁就是以前的舊網頁,而不是更新後的網頁;
編輯虛擬配置文件
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"
ExpiresDefault "now plus 0 min"
</IfModule>
配置預覽
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.111.com
<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"
ExpiresDefault "now plus 0 min"
</IfModule>
ErrorLog "logs/111.com-error_log"
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
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" common env=!img
</VirtualHost>
加載expires模塊
由於增加了內容,調用了新模塊expires,那麽我們也要讓apache加載對應模塊才能生效
vim /usr/local/apache2.4/conf/httpd.conf
取消註釋
LoadModule expires_module modules/mod_expires.so
查詢expires模塊是否正常加載(加載成功)
/usr/local/apache2.4/bin/apachectl -M |grep expires
expires_module (shared)
生效配置
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
測試
curl -x127.0.0.1:80 111.com/baidu.png -I
HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 09:42:30 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 05 Mar 2018 09:39:35 GMT
ETag: "8bfa-566a71a942179"
Accept-Ranges: bytes
Content-Length: 35834
Cache-Control: max-age=86400
Expires: Tue, 06 Mar 2018 09:42:30 GMT
Content-Type: image/png
其中Cache-Control: max-age=86400 表示緩存時間為86400秒
Expires代表緩存過期時間;
lamp-日誌設置(訪問日誌切割、不記錄靜態文件日誌、緩存文件過期時間)