一次Nginx和php-fpm自啓動設置和排錯

上次自行搭建好LNMP環境後,只有mysql可以直接用服務設置自啓動,nginx和php-fpm都要手動開啓,於是寫了個簡單的腳本:

#!/bin/bash
cd /usr/local/nginx/sbin
./nginx
cd /usr/local/php/sbin
./php-fpm

每次啓動系統後ssh進去運行這個腳本。

因爲覺得這樣比較麻煩,於是參考網上的自啓動腳本來進行設置。但是設置後服務器提示錯誤

001251638.png

開始以爲是nginx的問題,ps aux | grep nginx查看了下,有進程。又懷疑是文件權限的問題,於是去把nginx下的文件全部所有者和組都設置爲nobody,重啓後錯誤依舊。折騰了許久,想起來應該去查看error.log,看到裏面提示錯誤"connect() failed (111: Connection refused) while connecting to upstream",搜索了下,看到有個類似問題的回覆:

'Connection refused' means that backend does not listen to the port 9000 or its queue is filled up. This problem is related to the backend itsef. Are you able to telnet localhost 9000? You should also check your backend and php logs. – AndrewOct 1 '11 at 9:17

看來錯誤應該是在php-fpm上,查看了下啓動日誌,果然是的:

002246403.png

果然是啓動腳本寫得有問題,回去看了看沒看出什麼問題,索性找了一個php-fpm5.2的啓動腳本,結果還是不行,繼續看log:

002518576.png

看來是啓動是參數的問題,看了看啓動的代碼:

case "$1" in
    start)
        echo -n "Starting php_fpm "
        $php_fpm_BIN --fpm $php_opts
        if [ "$?" != 0 ] ; then
            echo " failed"
            exit 1
        fi
        wait_for_pid created $php_fpm_PID
        if [ -n "$try" ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;

其中

php_fpm_BIN=/usr/local/php/bin/php-cgi
php_fpm_CONF=/usr/local/php/etc/php-fpm.conf

從錯誤信息看,不能直接使用--fpm這個參數,索性把 後面參數註釋掉了,再reboot,訪問網站,OK!

折騰了這麼久,得出的經驗是出錯一定要看日誌!


不過在這個過程中也瞭解了系統服務和腳本自啓動的方式,init.d裏的腳本默認以start的選項運行,推薦一篇文章《理解Linux系統/etc/init.d目錄和/etc/rc.local腳本》

順便也溫習了下vim的諸多用法,比如多窗口,vim環境下執行shell命令等。


最後附上我下載的兩個腳本地址:

http://soft.vpser.net/lnmp/ext/init.d.nginx

http://soft.vpser.net/lnmp/ext/init.d.php-fpm5.2


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章