GCP计算引擎-无法在端口80上侦听?

时间:2018-12-04 05:40:03

标签: node.js google-cloud-platform google-compute-engine

我创建了一个具有以下网络标记和防火墙规则的计算引擎: enter image description here

enter image description here 因此,如果我理解正确,可以允许机器在端口80上监听。 我安装了node并创建了一个非常简单的http服务器,以查看是否可以通过http到达该框。在云控制台上通过ssh登录。当我尝试启动它(例如npm start来运行服务器)时,它说:

Error: listen EACCES: permission denied 0.0.0.0:80

为什么?如何解决?

我在某处读到低端口号通常仅限于root用户,因此我尝试sudo指出sudo: npm: command未找到,并且与sudo节点类似。

为什么在创建服务器using scripts like these时,为什么说它们是以root身份执行的?这是怎么发生的?当我启动计算机并以自己的身份登录时,为什么不以root用户身份执行?是的,我对linux perms的理解是非常新手。

谢谢...

1 个答案:

答案 0 :(得分:3)

为了使用低于1024的TCP端口,您的节点服务器必须以root特权运行。 TCP端口1024及更高端口不需要特权。

登录到Google Cloud Compute Engine实例时,您以normal用户身份登录。您没有root特权。要授予命令root特权,请在其前面加上sudo。例如:sudo mkdir /directoryname

建议使用根特权运行节点服务器。这在您的系统中可能会造成严重的安全漏洞。在决定之前,请先在Internet上搜索此主题。

您的选择是:

  1. 选择1023以上的端口。公用端口号:8000、8080、5000。
  2. 以root特权启动节点服务器:sudo node hello.js

关于找不到npm。您将需要修改环境的PATH变量,以包括为用户root安装节点工具集的位置。