0

我在我的 Windows 机器上运行了一些 node.js 测试,一切运行良好。现在我在我的 debian 远程机器上安装了节点,并尝试运行一个简单的 http 服务器:

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

我使用 SSH 执行:node server.js现在,当我访问我的服务器 ip http://xxx.xxx.22.127:8888时,服务器超时。

我究竟做错了什么?我用一些更简单的脚本进行了测试,node.js 似乎安装正确。可能是防火墙问题,还是我应该添加主机 IP 或 sommit?

附带问题:当我node server.js在 putty 中运行时,我无法再输入,如何返回命令行?:)

编辑:我的 iptables 信息

Chain INPUT (policy ACCEPT)
target        prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
ACCEPT        tcp  --  anywhere             anywhere            tcp dpt:5900
ACCEPT        tcp  --  anywhere             anywhere            tcp dpt:8888

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
4

2 回答 2

2

可能有软件防火墙(iptables例如)或硬件防火墙阻止8888接收请求。解决此问题的唯一方法是深入研究您的服务器配置/网络架构以追踪问题。例如,您可以使用iptables -Liptables 查看当前执行的规则。

也可能有另一个应用程序已经在监听8888,但我相信这会引发错误而不是像这样失败,所以我怀疑这是问题所在。检查这一点的一种方法是通过netstat -a.

不用说,我是说您拥有的代码应该可以正常工作,这是您的服务器设置问题导致的。

侧面回答:使用nohup&喜欢这样;nohup node server.js &,尽管您应该考虑安装一个模块,例如forever,然后使用forever start server.jsforever如果它崩溃了,它还有一个额外的好处是自动重启你的节点进程。

于 2012-05-17T13:30:13.947 回答
0

我究竟做错了什么?我用一些更简单的脚本进行了测试,node.js 似乎安装正确。可能是防火墙问题,还是我应该添加主机 IP 或 sommit?

我认为脚本本身没有任何问题。尝试使用telnet.

附带问题:当我在 putty 中运行 node server.js 时,我无法再输入,如何返回命令行?:)

node server.js &

(另见man nohup

于 2012-05-17T13:32:02.523 回答