我有一個特別過時的 ubuntu 發行版 (12.10),並開始按順序更新到 16.04。昨天,我使用 Ubuntu 舊版檔案和 Digital Ocean 的本教學成功從 12.10->13.10->14.04 更新。我不必更改內核,因為我們的 Droplet 使用的是 grubloader v2.0。
更新成功令我興奮不已,我使用 do-release-upgrade 從 14.04 升級到 16.04,雖然發行版已成功更新,但更新後我立即遇到 502 錯誤 (nginx /1.4.6)。我對這一切都很陌生,所以我以與 13.10->14.04 升級完全相同的方式從 14.04 到 16.04 進行了版本升級。
有人從 14.04->16.04 更新時遇到這個問題嗎?另外,我將 Droplet 恢復到 12.10 並更新回 14.04,儘管 14.04 更新之前工作正常,但我現在遇到了相同的 502 錯誤。
這是我今天的錯誤日誌(14.04 版本 502 錯誤):
2018/03/22 10:01:08 [crit] 774#0: *58351 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 46.229.168.67, server: localhost, request: "GET /tag/love-me-some-cats/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "wesleying.org"
有沒有人遇到這樣的問題和/或知道新手的快速解決方法?
答案1
Nginx 透過 unix 套接字連接 PHP FPM。根據所使用的版本(不同作業系統版本可能有所不同),套接字的名稱或位置可能會有所不同。有時你沒有套接字,但你有一個連接埠。
查看您的 PHP FPM 如何提供其服務
netstat -nlp | grep php
結果可以是連接埠或 unix 套接字,或者您可以有多個結果(例如,不同 PHP 版本的結果不同)。
結果範例
unix 2 [ ACC ] STREAM HÖRT 34042019 19073/php-fpm.conf) /run/php/php5.6-fpm.sock
相應地更新你的 Nginx
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
並重新載入您的網頁伺服器
service nginx reload