【问题标题】:Issue for deploying NodeJS on a virtual server machine在虚拟服务器上部署 NodeJS 的问题
【发布时间】:2024-01-24 10:31:01
【问题描述】:

我有一个 NodeJs 应用程序,它在我的本地机器上运行良好。

现在,我想将它部署在具有给定 IP 和给定 http 地址的虚拟机上。

假设我的情况是服务器的ip和http地址分别是134.00.00.00http://server-virtualmachine.is.fr

我能够通过 ssh 连接到该服务器并将我的 Node JS 应用程序发送到 /var/www/

服务器的主文件是app.js,所以我执行了以下命令行来运行服务器。

node app.js

输出是:

App listening on port 3030 with adress 134.00.00.00

我没有错误。但是,通过直接在我的浏览器上检查http://134.00.00.00:3030http://server-virtualmachine.is.fr:3030,连接没有建立,我的浏览器最终显示此消息:

134.00.00.00 took too many times to answer

如果我要去地址而不写端口(@98​​7654324@),我会收到以下消息:

Not Found
The requested URL / was not found on this server.

然后,为了查看问题出在哪里,我尝试设置一个 hello world 示例文件。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3030, '134.00.00.00');
console.log('Server running at 134.00.00.00:3030');

出现同样的问题。但是,我打开了一个新选项卡并打开了一个新的 SSH 连接并执行了以下命令行:

curl http://134.00.00.00:3030

令我惊讶的是,我的终端上有"Hello world"

我不是很了解服务器,我试图自己理解,但现在我不明白这个问题以及如何解决它。

我想让我的 NodeJs 应用在虚拟机上运行,​​而不是在本地机器上运行。

有什么见解吗?

提前感谢您的帮助。

【问题讨论】:

  • 3030端口开放了吗?
  • 这应该是因为一个旧的 Node Js - Angular JS 项目之前在这个虚拟机上使用这个端口工作。如何检查它是否打开?否则有没有办法查看哪个端口是开放的?谢谢
  • 您可以在防火墙设置中查看。或者使用nmap 命令
  • 谢谢!我可以检查,它很接近。我已经打开它,现在一切正常!谢谢!

标签: node.js ssh deployment server


【解决方案1】:

感谢 Ebrahim Pasbani,我可以看到我的端口 3030 没有打开。为了检查,我使用了以下命令行:

nmap ip 

更具体地说是nmap -p3030 ip

我打开了它,现在它可以工作了。

【讨论】: