node.js - 通过端口 80 上的 PM2 运行 Node 应用程序

标签 node.js web-services amazon-ec2 port pm2

我有一个要在端口 80 上运行的 express。 --> app.listen(80);

我正在使用 PM2 来管理应用程序(重启、停止、监控等)。我有一个部署 shell 脚本,其最后一个命令是 PM2 restart index。从控制台输出中,我没有看到任何错误,并且 PM2 报告它已成功完成命令。然而,当我到达 my.ec2.ip.address:80 时,该站点未启动。此外,如果我在我的服务器项目目录中运行 node index.js,我会得到一个 Error: listen EACCES 0.0.0.0:80。这对我来说很有意义,因为端口 80 低于 1024,因此是特权端口。 sudo node index.js 将允许启动工作。

我是 unix、服务器、权限和部署的新手,因此除了解决方案之外,我将不胜感激对导致我的问题的基本概念的解释。例如.. 以 super 用户身份简单地运行我的 Node 应用程序是不是很糟糕?运行 PM2(因此可能以 .. 身份运行 Node ?)root/super-user 是好习惯吗?命令 sudo PM2 restart index 导致 sudo: pm2: command not found。为什么在运行 sudo PM2 时找不到 PM2.. 如果 PM2 在我的路径中?

最终,当使用 PM2 时,如何确保我的服务器在端口 80 上运行?没有找到。

最佳答案

不要使用端口 80,在其他端口(如 8080)上运行并使用此命令将 80 重定向到该端口

  sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

关于node.js - 通过端口 80 上的 PM2 运行 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44911171/

相关文章:

web-services - RPC 伪装成 REST 是个坏主意吗?

web-services - 如何在SoapUI中设置x-www-form-urlencoded?

python - 使用 Amazon EC2 自动缩放 Python Celery

amazon-web-services - 有没有办法指定任务放置策略,以便将新任务放置在具有最多可用内存的实例上?

javascript - 使用 npm 在 html 中导入 javascript

node.js - Heroku 应用程序抛出错误 : self signed certificate

javascript - 当使用对象字面语法创建对象时,JavaScript 是否维护对现有变量的引用?

javascript - 如何从在 javascript 中具有相同键的对象创建对象数组

没有 WCF 的 C# SOAP 服务

amazon-web-services - Elasticache 和可用区