我有一个特别过时的 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,现在遇到了相同的 502 错误,尽管 14.04 更新之前运行正常。
这是我今天的错误日志(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