如何使用 nodejs 启动服务器?

Posted

技术标签:

【中文标题】如何使用 nodejs 启动服务器?【英文标题】:How do I start a server using nodejs? 【发布时间】:2020-12-28 03:06:14 【问题描述】:

我开始学习nodejs并在创建服务器的课程中停下来,这里是这个脚本的代码:

var http = require('http'); // Import Node.js core module

var server = http.createServer(function (req, res)    //create web server
    if (req.url == '/')  //check the URL of the current request
        
        // set response header
        res.writeHead(200,  'Content-Type': 'text/html' ); 
        
        // set response content    
        res.write('<html><body><p>This is home Page.</p></body></html>');
        res.end();
    
    
    else if (req.url == "/student") 
        
        res.writeHead(200,  'Content-Type': 'text/html' );
        res.write('<html><body><p>This is student Page.</p></body></html>');
        res.end();
    
    
    else if (req.url == "/admin") 
        
        res.writeHead(200,  'Content-Type': 'text/html' );
        res.write('<html><body><p>This is admin Page.</p></body></html>');
        res.end();
    
    
    else
        res.end('Invalid Request!');

);

server.listen(5000); //6 - listen for any incoming requests

console.log('Node.js web server at port 5000 is running..')

我在远程机器(谷歌云虚拟机)上进行实验,使用节点运行脚本(我在控制台中看到服务器正在运行的消息)但是如果我通过浏览器访问 IP 地址(例如@ 987654321@) 我没有看到结果,我做错了什么?没有找到任何额外的信息,在课程中到处都是通过localhost:5000/访问...

【问题讨论】:

尝试收听0.0.0.0。将您的监听代码更改为 server.listen('0.0.0.0', 5000); 试过了,结果“无法访问网站” 您的虚拟机 VPC 是否配置为允许来自该 ip 的请求到端口? 我没有额外配置任何东西 【参考方案1】:
res.write('<html><body><p>This is admin Page.</p></body></html>');
res.end();

您还可以执行以下操作:

res.end('<html><body><p>This is admin Page.</p></body></html>');

【讨论】:

感谢您的建议,但这并没有解决我的问题 @nikobazylev 如果没有这些 if 语句,页面是否可以完美显示? 没有“if” - 它也不起作用,在我看来这不是错误 @nikobazylev 你的 ip 正确吗?您是否尝试导航到“localhost:5000”? 无法访问localhost,因为电脑是远程的,IP是举例,但我输入的地址正确【参考方案2】:

请检查您是否能够从您的笔记本电脑终端远程登录远程服务器 IP 的 5000 端口。可能是防火墙阻止了外部访问的端口。如果你想在服务器端检查这个,你可以登录到谷歌机器并从服务器的终端尝试 curl http://localhost:5000 ,如果你看到响应,那么它应该是防火墙。

【讨论】:

TELNET 说:“连接到 IP.IP.IP.IP ... 无法在端口 5000 上打开到该节点的连接:连接失败”。在服务器上添加了对防火墙中端口 5000 的权限,但仍然是同样的错误 您是否还使用命令 curl localhost:5000 从远程服务器终端进行了检查?你能在这里发布命令的结果吗? 当通过“curl localhost:5000”向服务器请求时,响应带有页面内容——也就是正确的:“

这是主页。

"
所以很明显问题是因为您无法使用 IP 访问端口 5000 上的 GCP 服务器。这可能主要是由于防火墙问题。您必须检查 GCP 文档以允许您正在使用的 IP 上的端口 5000,这可以解决您的问题。或者,如果您想通过浏览器进行测试,请在 GCP 服务器上安装 chrome 或 firefox,并使用 xterm 在远程服务器上打开浏览器(如果服务器是 linux),它应该可以使用 localhost:5000 在该浏览器上运行

以上是关于如何使用 nodejs 启动服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cPanel 重启 NodeJS

如何在远程服务器上启动 NodeJS 进程?

如何将环境变量传递给由 systemd 启动的服务

如何在 Java 中使用 nodeJs 停止 Appium 服务器

如何自动启动节点服务?

我如何从nodejs重新启动linux