【发布时间】:2016-05-27 17:25:10
【问题描述】:
我一直在尝试让 php 脚本在我的 Ubuntu 12.04/nginx 服务器上运行。我知道 12.04 已经过时了,但我被困在那里了。
我已经看到 nginx/sites-available 文件有大量不同的配置。我已经尝试了很多。我还尝试将 php 切换为监听不同的端口(我随机选择了 8889 和 9001),我在该文件和 etc/php5/fpm/pool.d/www.conf 中都设置了。
我想指出,当我 apt-get install php5-fpm 时,我注意到这个警告: update-rc.d:警告:php5-fpm 停止运行级别参数(0 1 6)不匹配 LSB 默认停止值(无)
但是,它似乎并不表明 fpm 已经失败并且还有更多(安装输出中该行下方的非警告/错误输出)。
我还想提一下,这个服务器还在另一个虚拟主机上运行 python django 环境,它也监听端口 9000,但我认为这没关系,因为它们都是 nginx 进程?而且,就像我提到的,我尝试更改 php 的端口,但并没有解决问题。
我试图运行的脚本唯一要做的就是打印 hello world,所以那里应该没有问题。
这是我的 nginx/sites-available/myvirtualhost 配置文件(你可以看到我的许多不同的 php 配置被注释掉了 - 最上面的一个来自我的 sites-available/default 文件(在那里注释掉并且默认在站点中没有链接-启用):
server {
listen 80;
listen [::]:80;
#
server_name mag.somedomain.com;
#
root /var/www/mag.somedomain.com/public_html;
index index.html;
#
location / {
try_files $uri $uri/ =404;
}
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
#}
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi_params;
#}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/mag.somedomain.com/public_html/$fastcgi_script_name;
}
}
当我查看 nginx/error.log 时(当端口设置为 9000 时):
2016/05/27 17:16:14 [error] 10689#0: *150 upstream sent unsupported FastCGI protocol version: 72 while reading response header from upstream, client: 99.3.19.77, server: mag.somedomain.com, request: "GET /version.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "mag.somedomain.com"
如果我更改端口,我会得到一个空白网页(而不是 502),并且错误日志中没有任何内容。
当我使用 netstat 查看我收到的内容时(还有一些其他端口也被监听):
tcp 0 0 127.0.0.1:8801 0.0.0.0:* LISTEN 26768/python
tcp 0 0 127.0.0.1:8802 0.0.0.0:* LISTEN 8444/python
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10686/nginx -g daem
有人知道我需要做什么吗?我已经在这个问题上打了好几个小时了。
【问题讨论】:
-
如果我没有误解,您的 nginx 正在侦听该端口?您的 php-fpm 配置对您尝试代理的池有什么说明?你确定它 100% 在监听 9000 端口吗?
sudo lsof -i :9000,如果没有说php-fpm,那么你就是从 nginx 代理到 nginx。
标签: php nginx ubuntu-12.04