標籤:lamp apache 搭建 日誌切割
網站的訪問日誌增長很快,如果儲存在一個檔案中,不進行切割,那麼很快就會撐爆伺服器的磁碟,我們需要對其進行切割,並且定期刪除無用的日誌,以保證磁碟的合理使用。
1.編輯虛擬機器主機設定檔
[[email protected] important]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
2.去掉訪問日誌配置行前面的注釋符#
<VirtualHost *:80>
DocumentRoot "/tmp/123"
ServerName invalid.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.test.com
ServerAlias www.mydiscuz.com
ServerAlias www.others.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" combined
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mydiscuz.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.others.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
<Directory /data/www/important/>
AllowOverride AuthConfig
AuthName "username"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
</VirtualHost>
其中combined是日誌格式名字,主設定檔裡定義了三種日誌格式combined、common、combinedio。我們這裡使用combined格式。
3.檢查無誤後重新載入設定檔:
[[email protected] important]# apachectl -t
Syntax OK
[[email protected] important]# apachectl graceful
4.在瀏覽器中多訪問幾次,就可以產生訪問日誌和錯誤記錄檔(沒有錯誤時為空白)
[[email protected] important]# cd /usr/local/apache2/logs/
[[email protected] logs]# ls
access_log error_log
dummy-host.example.com-access_log httpd.pid
dummy-host.example.com-error_log
查看主設定檔中日誌格式定義:
[[email protected] important]# vim /usr/local/apache2/conf/httpd.conf
……
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
……
格式說明:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h來源IP
%l不存在時用‘—‘表示
%u使用者名稱,不存在時用‘—‘表示
%t時間
%r動作,GET或POST
5.編輯虛擬機器主機設定檔,定義日誌切割的方式:
<VirtualHost *:80>
DocumentRoot "/tmp/123"
ServerName invalid.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.test.com
ServerAlias www.mydiscuz.com
ServerAlias www.others.com
ErrorLog "logs/test.com-error_log"
CustomLog "| /usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mydiscuz.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.others.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
<Directory /data/www/important/>
AllowOverride AuthConfig
AuthName "username"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
</VirtualHost>
說明:
使用Apache內建的rotatelogs工具,-l 指定存放的絕對路徑,%Y%m%d(YYYYMMDD),86400秒是一天,表示按一天為單位切割
6.檢查無誤後重新載入設定檔:
[[email protected] logs]# apachectl -t
Syntax OK
[[email protected] logs]# apachectl graceful
7.訪問我們的網站就可產生指定切割格式的記錄檔:
[[email protected] logs]# ls
access_log httpd.pid
dummy-host.example.com-access_log test.com-access_20170111_log
dummy-host.example.com-error_log test.com-error_log
error_log
LAMP搭建9:Apache日誌切割