nginx (“engine x”) 是一個(gè)高性能的 http 和反向代理服務(wù)器,也是一個(gè) imap/pop3/smtp 代理服務(wù)器。 nginx 是由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點(diǎn)開發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過兩年半了。igor 將源代碼以類bsd許可證的形式發(fā)布。
nginx 超越 apache 的高性能和穩(wěn)定性,使得國內(nèi)使用 nginx 作為 web 服務(wù)器的網(wǎng)站也越來越多。
上周對centos中跑的nginx做了優(yōu)化,重新設(shè)置了圖片、js、css的緩存時(shí)間,關(guān)閉了一些不需要的日志記錄等,我側(cè)重講日志的處理, 因?yàn)槲矣X得這個(gè)是相當(dāng)有必要的。剛開始一直認(rèn)為日志沒有必要處理,也就那么幾m的東西,當(dāng)我查看日志大小的時(shí)候我瞠目了,我的日志居然有幾百m的級別了, 當(dāng)下就決定對日志進(jìn)行每天必要的處理操作。
為什么要切割日志?一般nginx安裝好后有些人會(huì)打開日志記錄有些人會(huì)關(guān)閉日志記錄,打開日志記錄的人一般都會(huì)把架設(shè)在nginx上的所有網(wǎng) 站日志都存在同一個(gè)文件里(比如我存在access.log日志文件里),這樣日積月累所有網(wǎng)站的訪問記錄就會(huì)把日志文件越積越大,當(dāng)需要查看日志文件的 時(shí)候一看就是一大串,不方便查找?,F(xiàn)在,如果我把每天的日志文件分割開來用相應(yīng)的日期標(biāo)識出來這樣就大大方便查找了。(我是建議打開日志記錄,日志記錄里 面存放著很多有用的東西。比如:瀏覽器名稱,可以方便你對網(wǎng)站的排版做出調(diào)整;ip地址,如果網(wǎng)站收到攻擊,你就可以查到那個(gè)ip地址。)
下面開始詳細(xì)步驟:
編寫shell程序
某種情況下會(huì)設(shè)置多個(gè)子域名,因此會(huì)產(chǎn)生多個(gè)日志文件,像我這類喜歡整齊的人會(huì)設(shè)置多個(gè)日志文件,把每個(gè)域名的日志都分開放。下面這個(gè)shell程序是多域名處理。
下面是示例,對以下三個(gè)網(wǎng)站的日志切割(日志文件名自己命名):
對應(yīng)日志 blog.log
對應(yīng)日志 demo.log
對應(yīng)日志 happy.log
# !/bin/bash
# 你的日志文件存放目錄
logs_path=/home/logs/
# 日志文件的名字,多個(gè)需要空格隔開
logs_names=(blog demo happy)
mkdir -p ${logs_path}$(date -d yesterday +%y)/$(date -d yesterday+%m)/
num=${#logs_names[@]}
for((i=0;i< p=> <>
mv ${logs_path}${logs_names[i]}.log ${logs_path}$(date -d yesterday+%y)/$(date -d yesterday+%m)/${logs_names[i]}_$(date -d yesterday+%y%m%d).log
done
#pid的位置,自己查找
kill -usr1 `cat /usr/local/nginx/nginx.pid`
設(shè)置crontab,每天定時(shí)切割
首先需要確定你的服務(wù)器有沒有安裝crontab的服務(wù),輸入crontab -e命令,有反應(yīng)就安裝了。
如果沒有安裝,運(yùn)行yum install vixie-cron 一鍵安裝。
輸入crontab -e命令,輸入下面的內(nèi)容:
1、00 00意思為00分00點(diǎn),也就是凌晨0點(diǎn),后面“ * * * ”為“ 日 月 年 ”無需定義
2、” /home/logs/cut_nginx_log.sh “為你的shell的路徑。
00 00 * * * /bin/bash /home/logs/cut_nginx_log.sh
ok ! 大功告成,每天的0時(shí)就會(huì)自動(dòng)完成日志的切割并存在相應(yīng)的以日期命名的目錄中。
注解:
1.只在centos下測試,其他linux環(huán)境設(shè)置略有不同。
2.開啟shell程序的775權(quán)限,否則可能導(dǎo)致不能運(yùn)行。