NGiNX 502 Bad Gateway 自動重啟腳本

NGiNX為何會502呢~ 大多都是PHP-FPM死蹺翹了,我在AceLNMP那篇文章中也有講解過該如何調教負載能力,機器配備不錯的,設定參數當然設高一點才能撐的住,但我最近碰到了鬼打牆現象 :kao 某台機器的PHP升級到5.3.8之後偶而會掛掉,而且還連NGiNX一起掛,設定檔卻又都沒問題,同樣的設定檔在一堆機器上跑都沒出什麼包,系統也大同小異,挖哩咧!所以只好摸摸鼻子多放一包乖乖了... :er

好啦~ 總之就弄個自動監測的SHELL吧 :|

vi /root/nginx-502-restart.sh

CODE:
  1. #!/bin/bash
  2. export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/local/bin:$HOME/bin:$HOME
  3. ############### 你要修改的地方從這裡開始 ###############
  4. # 本機的網址
  5. URL=http://520.be/
  6. # NGiNX程式的路徑
  7. NGiNX=/usr/local/nginx/sbin/nginx
  8. ############### 你要修改的地方從這裡結束 ###############
  9.  
  10. if [ -e /var/lock/subsys/502 ]
  11. then
  12.     killall -9 curl 2>/dev/null
  13.     killall -9 php-fpm 2>/dev/null
  14.     service php-fpm start>/dev/null
  15.     $NGiNX -s reopen
  16. else
  17.     touch /var/lock/subsys/502
  18.     if [ `curl --connect-timeout 5 -I $URL 2>/dev/null | grep '502 Bad Gateway' -c` != '0' ]
  19.     then
  20.         killall -9 php-fpm 2>/dev/null
  21.         service php-fpm restart>/dev/null
  22.         $NGiNX -s reopen
  23.     fi
  24.     rm -f /var/lock/subsys/502
  25. fi

然後把他交給最勤奮滴CRONTAB兄弟去自動每5分鐘檢查一次有沒有出怪手,有的話就重新啟動NGiNX跟PHP-FPM :pu

chmod +x /root/nginx-502-restart.sh
crontab -e

新增以下這行就可以收工啦~ ({)
*/5 * * * * /root/nginx-502-restart.sh > /dev/null 2>&1

WordPress的Cache外掛

WordPress的Cache外掛W3 Total Cache測試跑了1個多月,上禮拜從PHP 5.2.14升級5.3.3,照理說運作速度應該是也會提升一點,但總感覺網站速度時快時慢的,而且反而影響到控制台出現些問題,像是留言刪不掉、外掛不能停止,php-fpm怎摸調整都沒用,我想可能是W3 Total Cache跟NGiNX不合吧~ :kao 今天換上WP Super Cache這套老牌Cache外掛,運作也不錯,在FF 3.6跟IE8底下瀏覽都沒有問題,而且沒影響到控制台了,呼~ 放心不少丫! 雖然覺得W3 Total Cache滿屌的,除了可以把DB也Cache化還支援CDN,不過運作不順也只能移除了。 :S

另一套Hyper Cache就沒裝起來過,不過看網路上文章評價也是很不錯的外掛,同樣支援GZIP壓縮網頁功能、手機瀏覽,而且不用改rewrite規則,所以設定更簡單。 (F)

Cache化的好處是伺服器不必常常執行PHP去存取資料庫,而只需要做GZIP的動作,既然不會大量讀取造成伺服器的資源飆高、所以能降低不少系統負載,也比較不會被主機商盯上啦! 順便放上NGiNX底下運作WP Super Cache的rewrite規則:

... 閱讀完整文章→

NGiNX的妙用

最近綁了不少domain在NGiNX上,一直在編輯nginx.conf同一個檔案管理起來,還真是眼花啊 = =" 心理就在想有沒有比較好的方式做管理呢?! 後來抓新的原始檔下來看,發現可以這樣做,在http區段的最後面寫上

include /usr/local/nginx/conf/conf.d/*.conf;

原先網站設定的server區段就完全移動到/usr/local/nginx/conf/conf.d/這個資料夾底下分別建立檔案控制,再建立一個放rewrite規則設定檔的資料夾,我的是放在

/usr/local/nginx/conf/rewrite/

這樣老子就輕鬆多了 A_A 不用一直搞nginx.conf,conf.d這個資料夾就放每個網站的設定檔,rewrite規則設定檔就通通丟在rewrite資料夾底下,有需要再載入就好了,要修改的時候就比較不會眼花撩亂的在查nginx.conf了。這樣做nginx.conf會自動讀取到conf.d資料夾底下的網站設定檔,而網站設定檔再依照需求去載入rewrite規則設定檔,出現錯誤也比較清楚是哪邊寫錯了,不會只在nginx.conf上面一直翻;而且日後要新增網站也輕鬆很多,只要摳比其他的網站設定檔改一下網址跟路徑以及rewrite規則設定檔就好了,感覺效率比較高一些~ :D 下面是我的範例,有興趣可以參考看看,注意include這個字眼唷!

... 閱讀完整文章→

YUM方式安裝LNMP

剛剛發現有位老俄真的實在太佛心來著的 :O 居然打包好LNMP所需的元件,安裝起來真是方便又快速來著的了,我還寫啥鬼腳本了油幹嗎,真想親他一下啊!! (K) 這位老俄真的是太好心了啦! (Y) 而且他還打包了非常非常多的東西唷! 有興趣的可以看看~

http://centos.alt.ru/?p=120 < < 佛心老俄的部落格,請用咕狗翻譯機,免得霧煞煞

http://centos.alt.ru/pub/

http://centos.alt.ru/pub/repository/centos/5/

用法很簡單,先建立一個repo餵給YUM用vi /etc/yum.repos.d/CentALT.repo,內容如下:

... 閱讀完整文章→

監控寶&NGiNX無痛升級

玩了一下監控寶的MySQL跟NGiNX的監控,才發現我在鞭NGiNX的設定設定不夠齊全,好吧~ 偶認命偶大不了重鞭就是了!火大的偶把能鞭的全上(文章後面會附上過程)。 (6)

阿六仔的監控寶免費版的功能可以監控3個站台、監控頻率15分鐘(也算不錯了,Hyperspin以及大多免費監控服務都是1小時),另外像是一般Linux系統或VPS和獨立主機也可以監控CPU使用率、I/O、記憶體使用率和網卡流量以及Apache/Lighttpd/Nginx/MySQL等項目(需自行安裝Net-SNMP)。反正監控寶還有一堆功能都是省去自己裝一堆監控程式的麻煩,免費版我覺得就能應付很多龜毛的人了,唯一要挑剔的大概就是監控寶在中國這點吧~! 中國的網路長城這個也擋那個也擋,作網站監控服務要面像世界的話實在是有一定的難度,另外付費套餐我覺得也很不錯,最便宜的月繳9 RMB(~45 TWD)就很好用了。不想操死自己的口以去註冊個免費的玩玩看,介面以及所以有幫助文件全都是中文,很方便使用。 (Y)

監控寶 → 註冊頁面
監控寶 → 功能特色
監控寶 → 監控項目類型概述
監控寶 → 安全指引
監控寶 → 常見問題(FAQ)

以下是鞭譯過程,有需要的再看吧:

... 閱讀完整文章→

NGiNX 使用 .htaccess 保護/防盜連/限速

NGiNX 是個那摸猛滴 HTTP 伺服器軟體,當然! 絕對! 一定是可以用 .htaccess 來保護目錄的 ;) 簡單的範例如下,我要保護的是 phpmyadmin 資料夾,在 nginx.conf 的設定裡面,我的 root 網頁根目錄已經指定到 /web/www 了,所以再來就直接在 server 的區段加上

# .htaccess 保護
location ~ .*/phpmyadmin {
auth_basic "PLEASE ENTER YOUR USERNAME AND PASSWORD!";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}

location 的意思就是保護從網頁根目錄算起的 phpmyadmin 目錄 (放在 /web/www/phpmyadmin )
auth_basic 的意思就是進入資料夾時會顯示的訊息
auth_basic_user_file 的意思就是需要的帳號密碼檔案放在哪,我這邊設定是放在 /usr/local/nginx/conf/htpasswd

... 閱讀完整文章→