【问题标题】:How to properly run NodeJs on Windows Server in production如何在生产环境中在 Windows Server 上正确运行 NodeJs
【发布时间】:2020-07-20 08:07:13
【问题描述】:

我遇到了困难,试图让我的 NodeJS 脚本在 windows server 2012 上运行。或者更准确地说,让它变得健壮。

我已经安装了 PM2,他很棒,还添加了 Windows 启动服务,效果很好,但现在我发现了我无法解决的最大问题。 当 windows server 用户启动 pm2 start 时,直接在服务器上或通过 ssh,注销时,所有 pm2 脚本都消失了。 我试图查看 pm2-windows-service 但这似乎不一致,当我重新启动服务时,它工作正常,但有时我需要手动重新加载或仅重新启动 1 个脚本,然后整个 pm2 脚本列表以某种方式分离或附加给用户,所以当我从服务器注销时,一切都消失了。

我找不到在脚本上设置观察程序/自动重启的解决方案,并使它们作为服务运行,而不管用户是否登录/退出。

windows上运行多个nodejs脚本一定有解决方案?

【问题讨论】:

    标签: node.js windows pm2


    【解决方案1】:

    一旦你启动了你的 NodeJS 进程,你应该运行pm2 save 命令。这样,您声明的脚本就会被保存。

    您的附加/分离问题可能是由于服务环境变量中的相对路径配置造成的。尝试移动到绝对路径。

    注意:PM2 建议使用管理员权限的用户启动命令;否则可能会出现不一致。

    注意 (2):请记住,Windows 上的 PM2 存在一些问题。例如,如果您重新启动服务器,大多数时候进程会从pm2 ls 消失(他们指出 Windows 没有恢复已保存实例的功能)。如果您保存了它们,pm2 resurrect 将恢复它们。

    【讨论】:

    • 我正在做你说的一切。我最大的问题是,当用户退出时,我无法让我的进程继续运行。当用户保持登录状态时一切都很好,但就像最近发生的那样,有人使用远程桌面登录,然后注销了杀死所有 pm2 启动脚本的用户。我找不到防止这种情况发生的方法
    • mmmmm,您的用户是否在使用 Windows -> 注销?这可能对您的问题有意义。我通常只是关闭远程桌面窗口(不关闭会话)。但这就是你有服务的原因。你检查pm2-windows-service上的所有配置了吗?
    • 是的,这正是正在发生的事情,大多数时候我们只是关闭远程桌面,这很好。但是上次有人实际注销了管理员用户。但我也注意到,如果我用 ssh 连接到它,然后执行 pm2 start,然后关闭 ssh,它也会杀死所有服务。我正在研究 pm2-windows-service ,我将不得不对其进行更详细的测试,但看起来这就是我理论上需要的。我很惊讶 NodeJS 没有监控进程的东西,这让我想用 php 重写我的 API。
    • 是的,我也遇到过类似的问题。我们最终在服务器上只有 1 个用户。我在互联网上看过,因为这是我们可能面临的一个有趣的问题。检查这些 GitHub 问题:github.com/jon-hall/pm2-windows-service/issues/25github.com/jon-hall/pm2-windows-service/issues/5
    猜你喜欢
    • 2016-10-22
    • 2022-11-02
    • 2019-11-10
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多