【问题标题】:PM2 can't reach port:80 only after autostart on server reboot仅在服务器重新启动时自动启动后 PM2 无法到达端口:80
【发布时间】:2021-09-12 13:31:47
【问题描述】:

我有一个 node.js express 应用程序在 Ubuntu 21.04 服务器上运行。 我使用非 root 用户使用 pm2 运行该应用程序,该应用程序侦听端口 80 和 443,我遇到错误 Error: bind EACCES null:80。 正如pm2 documentation 中提到的,我执行了端口 80 和 443 的所有指令,它就像一个魅力。 我还运行了pm2 savepm2 startup systemd 让应用程序在服务器重启时自动启动

但是当服务器重启时: pm2 list 显示 myApp 处于在线状态,但我再次遇到错误:Error: bind EACCES null:80 并且应用程序无法运行。

然后如果我再次pm2 killpm2 start myApp,那么它工作得很好......

你知道为什么在服务器重新启动时 pm2 启动不好,但如果我手动启动它就可以了吗? 谢谢

【问题讨论】:

    标签: node.js express pm2


    【解决方案1】:

    我在this post from the pm2 team on github找到了解决方案,这是因为listening on port 80时的authbind。

    编辑pm2 startup procedure创建的配置文件(文件应该在/etc/systemd/system/pm2-<your-user>.service,并在三个命令ExecStart、ExecReload和ExecStop的开头添加/usr/bin/authbind --deep ,留下命令的其余部分。例如在我的配置文件中:

    ExecStart=/usr/bin/authbind --deep /usr/lib/node_modules/pm2/bin/pm2 resurrect
    ExecReload=/usr/bin/authbind --deep /usr/lib/node_modules/pm2/bin/pm2 reload all
    ExecStop=/usr/bin/authbind --deep /usr/lib/node_modules/pm2/bin/pm2 kill
    

    然后应用程序在服务器重新启动后以非 root 用户自动重新启动!

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2020-10-04
      • 1970-01-01
      • 2018-04-13
      • 2011-04-21
      • 2022-06-30
      • 2013-05-31
      • 1970-01-01
      相关资源
      最近更新 更多