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