1. 若有設定虛擬主機的話,要先設定虛擬主機的日誌以及日誌內容的格式
2. apache的日誌設定完之後,就可以開始設定apache的logrotate功能。在開始定義之前,先解釋甚麼是logrotate。
由上面的圖示我們可以清楚的知道,當第一次執行完 rotate 之後,原本的 messages 會變成 messages.1 而且會製造一個空的 messages 給系統來儲存登錄檔。而第二次執行之後,則 messages.1 會變成 messages.2 而 messages 會變成 messages.1 ,又造成一個空的 messages 來儲存登錄檔!那麼如果我們僅設定保留三個日誌檔而已的話,執行第四次時,則 messages.3 這個檔案就會被刪除,並由後面的較新的保存日誌檔所取代!那麼多久進行一次這樣的 logrotate 工作呢?這些都記錄在 logrotate.conf裡面,我們來看一下預設的 logrotate 的內容吧!
接下來就開始設定虛擬主機的logrotate。請於cd /etc/logrotate.d的目錄內新增一個檔案 vim vhost_logrotate,並於該檔案的內容貼上以下設定
若要更詳細的設定說明,在linuxcommand頁面有說明
打開vim /etc/crontab,安插此指令,時間就看自己喜歡定在甚麼時候要輪替
<VirtualHost *:80> ServerName DNS網址 DocumentRoot 網站目錄路徑 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog access_log的路徑 combined </VirtualHost> ... ... ...其中 LogFormat 與 CustomLog 的制定方式,在官方頁面有說明「Log Files說明頁面」
2. apache的日誌設定完之後,就可以開始設定apache的logrotate功能。在開始定義之前,先解釋甚麼是logrotate。
logrotate顧名思義就是log rotate,即日誌的輪換。Logrotate是Linux系統自身帶的一個日誌輪替執行檔,它的執行檔所在的目錄是/usr/sbin/logrotate,是專門對各種系統日誌(syslogd,mail)進行輪替的執行檔。所以logrotate 的主要功能就是將舊的日誌檔案移動成舊日誌檔, 並且重新建立一個新的空的日誌檔案來記錄,它的執行結果有點類似底下的圖示:
圖:登錄檔進行 logrotate 的結果
[鳥哥的 Linux 私房菜]
由上面的圖示我們可以清楚的知道,當第一次執行完 rotate 之後,原本的 messages 會變成 messages.1 而且會製造一個空的 messages 給系統來儲存登錄檔。而第二次執行之後,則 messages.1 會變成 messages.2 而 messages 會變成 messages.1 ,又造成一個空的 messages 來儲存登錄檔!那麼如果我們僅設定保留三個日誌檔而已的話,執行第四次時,則 messages.3 這個檔案就會被刪除,並由後面的較新的保存日誌檔所取代!那麼多久進行一次這樣的 logrotate 工作呢?這些都記錄在 logrotate.conf裡面,我們來看一下預設的 logrotate 的內容吧!
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.由這個檔案的設定我們可以知道 /etc/logrotate.d 其實就是由 /etc/logrotate.conf 所規劃出來的目錄,所以,其實我們可以將所有的資料都給他寫入 /etc/logrotate.conf 即可,但是這樣一來這個檔案就實在是太複雜了,尤其是當我們使用很多的服務在系統上面時, 每個服務都要去修改 /etc/logrotate.conf 的設定也似乎不太合理~所以,如果獨立出來一個目錄,那麼每個以 RPM 打包方式所建立的服務的登錄檔輪替設定,就可以獨自成為一個檔案,並且放置到 /etc/logrotate.d/ 當中即可。
接下來就開始設定虛擬主機的logrotate。請於cd /etc/logrotate.d的目錄內新增一個檔案 vim vhost_logrotate,並於該檔案的內容貼上以下設定
若要更詳細的設定說明,在linuxcommand頁面有說明
虛擬主機的日誌擋位置/*log { daily #指定輪替周期為每日 missingok #若日誌擋不存在就直接忽略,不會顯示在錯誤日誌擋內 rotate 100 #保留輪替檔的數量 compress #與delaycompress一起使用時,輪替的日誌檔到下一次輪替時才壓縮 delaycompress #與compress一起使用時,輪替的日誌檔到下一次輪替時才壓縮 notifempty #如果是日誌檔是空文件的話,不輪替 create 640 root #輪替日誌檔時,使用指定日誌檔的權限與使用者 #若有撰寫postrotate或postrotate必須用sharedscripts....endscript包起來 sharedscripts postrotate #輪替完後要執行的命令 /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } ... ... ...最後制訂要執行的輪替時間。Apache 的 Log Rotate 預設是靠 anacrontab 執行更換的, 所以每一天都會執行一次輪替。因為執行時間不一定,若要固定時間來執行logrotate,就開啟 vim cron.daily/logrotate設定檔給註解或刪掉(建議不要^^")
#!/bin/sh #/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 #EXITVALUE=$? #if [ $EXITVALUE != 0 ]; then # /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" #fi #exit 0改透過CRONTAB來設定執行固定時間。其中/usr/sbin/logrotate是執行檔。
打開vim /etc/crontab,安插此指令,時間就看自己喜歡定在甚麼時候要輪替
59 23 * * * root /usr/sbin/logrotate -v -f /etc/logrotate.conf > /dev/null 2>&1或是想要先手動執行輪替的話,就直接輸入以下指令來馬上執行。
/usr/sbin/logrotate -v -f /etc/logrotate.conf
留言
張貼留言