我有一个要在端口 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/