我正在尝试通过预构建的软件包在Debian 7上安装HHVM。我有另一台具有相同配置的服务器并且它正在工作但是在其中一台服务器中HHVM FastCGI拒绝连接
这是/var/log/nginx/error.log
2014/11/25 23:24:10 [error] 422#0: *39 connect() failed (111: Connection refused) while connecting to upstream, client: 213.128.95.22, server: , request: "GET /api/v2/checkaccess HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "77.75.35.140"
我确信HHVM守护程序正在工作并正在监听9000. port。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hhvm 12192 www-data 16u IPv6 792971 0t0 TCP *:9000 (LISTEN)
但我也无法连接telnet
root@server:/home/itusozlukcom# telnet 127.0.0.1 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
我确信代码没有问题,因为相同的代码在另一台服务器上运行,而在此服务器中代码可以通过HHVM CLI运行。
HHVM error.log为空。
可能是什么问题?
答案 0 :(得分:7)
我自己就意识到了这个问题。
HHVM的默认设置没有指定要监听的IP,只是监听ipv6地址。因为我可以用localhost连接但不能用127.0.0.1连接
通过hhvm.server.ip = 127.0.0.1指定IP解决了这个问题。
答案 1 :(得分:4)
当您在同一台服务器上运行Nginx和HHVM时,最好将(为了提高性能)连接到Unix套接字。
要允许套接字连接,请更改/etc/hhvm/server.ini
;hhvm.server.port = 9000
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
我注释掉了服务器端口,因为您可能不希望HHVM再次收听该端口。
在你的Nginx配置中,make fastcgi_pass使用你定义的套接字
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
重启Nginx和HHVM,可选择检查/var/run/hhvm/hhvm.sock是否真的存在,并试一试!