1. 程式人生 > >Ubuntu+Nginx+PHP WEB環境配置的因php-fpm配置引起的502錯誤

Ubuntu+Nginx+PHP WEB環境配置的因php-fpm配置引起的502錯誤

在Ubuntu+Nginx+PHP環境下部署好以後,訪問網站報錯502,在後臺nginx error_log裡看到以下報錯資訊

2017/07/29 10:59:15 [error] 5622#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 183.14.134.39, server: xx.xx.xx.xx, request: “GET /index.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9001”, host: “xx.xx.xx.xx”

通常這個報錯是表示php-fpm這個服務未啟動,由於預設是配置的9000埠,執行netstat -anp|grep 9000確實沒有看到相關程序。

但執行命令查詢php-fpm是running狀態

# /etc/init.d/php7.0-fpm status
● php7.0-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2017-07-29 11:52:47 CST; 3h 43min ago
Process: 7191 ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf (code=exited, status=0/SUCCESS)
Main PID: 7200 (php-fpm7.0)
Status: “Processes active: 0, idle: 2, Requests: 54, slow: 0, Traffic: 0req/sec”
CGroup: /system.slice/php7.0-fpm.service
├─7200 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
├─7203 php-fpm: pool www
└─7204 php-fpm: pool www

Jul 29 11:52:47 iZwz96f0gkw4blayus6g2yZ systemd[1]: Starting The PHP 7.0 FastCGI Process Manager…
Jul 29 11:52:47 iZwz96f0gkw4blayus6g2yZ systemd[1]: Started The PHP 7.0 FastCGI Process Manager.

檢視/etc/php/7.0/fpm/pool.d/www.conf和/etc/php/7.0/fpm/php-fpm.conf發現以下引數:

listen = /run/php/php7.0-fpm.sock

查閱資料後才知道,原來php-fpm支援網路埠監聽和socket兩種方式,但後者效率更高。

針對該問題的解決方案是,修改nginx/conf/vhosts下的conf檔案,

將fastcgi_pass 127.0.0.1:9000;修改為fastcgi_pass unix:/run/php/php7.0-fpm.sock;

重啟Nginx服務後,WEB訪問依然報錯502,繼續定位分析。

在nginx error_log日誌中出現了以下新的報錯內容:

2017/07/29 11:24:47 [crit] 6114#0: *1 connect() to unix:/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 183.14.134.xx, server: 112.74.89.xx, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/run/php/php7.0-fpm.sock:”, host: “112.74.89.xx”

然後找到/etc/php/7.0/fpm/pool.d/www.conf檔案,做以下處理:

註釋掉

;listen.owner = www-data
;listen.group = www-data

將mode值修改為0666

listen.mode = 0666

最後,執行/etc/init.d/php7.0-fpm restart重啟php-fpm服務,執行/etc/init.d/nginx restart重啟Nginx服務,問題解決!!!