【问题标题】:Keeping node.js express running after logoff注销后保持 node.js express 运行
【发布时间】:2021-07-06 00:46:57
【问题描述】:

我已经设置了一个以 pm2 开头的 node.js 应用程序,一切正常

我也尝试过添加监视和保存选项(请参阅下面有关 Windows 服务的更多信息)

pm2 start app.js --watch
pm2 save

但最终在我从 Windows 注销 RDP 后应用程序不再运行。

pm2 report的相关输出下方

==
PM2        | 2021-04-10T11:26:39: PM2 log: --- New PM2 Daemon started ----------------------------------------------------
PM2        | 2021-04-10T11:26:39: PM2 log: Time                 : Sat Apr 10 2021 11:26:39 GMT+0200 (Central European Summer Time)
PM2        | 2021-04-10T11:26:39: PM2 log: PM2 version          : 4.5.6
PM2        | 2021-04-10T11:26:39: PM2 log: Node.js version      : 14.16.1
PM2        | 2021-04-10T11:26:39: PM2 log: Current arch         : x64
PM2        | 2021-04-10T11:26:39: PM2 log: PM2 home             : V:\.pm2
PM2        | 2021-04-10T11:26:39: PM2 log: PM2 PID file         : V:\.pm2\pm2.pid
PM2        | 2021-04-10T11:26:39: PM2 log: RPC socket file      : \\.\pipe\rpc.sock
PM2        | 2021-04-10T11:26:39: PM2 log: BUS socket file      : \\.\pipe\pub.sock
PM2        | 2021-04-10T11:26:39: PM2 log: Application log path : V:\.pm2\logs
PM2        | 2021-04-10T11:26:39: PM2 log: Worker Interval      : 30000
PM2        | 2021-04-10T11:26:39: PM2 log: Process dump file    : V:\.pm2\dump.pm2
PM2        | 2021-04-10T11:26:39: PM2 log: Concurrent actions   : 2
PM2        | 2021-04-10T11:26:39: PM2 log: SIGTERM timeout      : 1600
PM2        | 2021-04-10T11:26:39: PM2 log: ===============================================================================


Please copy/paste the above report in your issue on https://github.com/Unitech/pm2/issues

我想知道 pm2 主路径是否可能是根本原因,因为它是一个用户共享,但我找到了如何通过 PM2_HOME env var 在 Windows 上更改它,它也没有解决问题.

我已经搜索了 github 问题,那里似乎已经有类似的未解决问题,例如 this one:

如果我直接进入服务器启动 pm2 并注销用户,也会发生同样的情况 进程将消失。有没有办法在全球寡妇上启动 pm2 所以当用户注销时它不会退出?或者我正在做某事 错了吗?

我也想了解是否可以选择保留应用 从 Windows 服务中注销用户后运行

这里有人有解决办法吗?

我还尝试使用 admin cmd 设置 pm2-windows-service,如 readme here 中所述。

我已经在 express 应用中为 SIGTERM 添加了一个处理程序:

app.listen(HTTP_PORT, () => {
    console.log("Server is listening on port " + HTTP_PORT);
});

process.on('SIGINT', function() {
    console.log('Do not shut down the app on user log-off');
    //server.close();
  });

【问题讨论】:

    标签: node.js express pm2 windows-server-2016


    【解决方案1】:

    PM2 主路径和应用路径中有一个 strane final 空格 当我尝试在资源管理器中重命名该文件夹时,该文件夹被锁定(多次重新启动后仍然“锁定”......最终使用this special syntax删除)。 换了下划线的空格,我重启了虚拟机,发出了

    pm2 reloadLogs
    pm2 report
    

    最后我通过 pm2 重新启动并再次保存了应用程序。

    pm2 save 之前,请注意在您的admin cmd 提示符中从pm2-service-install 输出的注释非常重要。

    PM2_HOME 值(此路径应该可供服务用户访问,并且 不应包含任何“用户上下文”变量 [例如%APPDATA%]): F:\Appl\pm2

    pm2-service-install 之后,您仍然需要手动第一次启动服务。进一步设置“以本地系统帐户登录”和标记允许服务与桌面交互”。

    退出并再次重新启动虚拟机以仔细检查:pm2 应用程序现在运行良好(不过我必须使用 admin cmd 和 pm2)。

    如果您部署需要新环境变量的更新,请使用

    刷新变量
    pm2 restart 0 --update-env
    pm2 save
    

    不要忘记在--update-env 后面加上save

    检查您的应用程序(例如 id 0)

    pm2 env 0
    

    在这种情况下,请记住,您可以通过重新启动 PM2 服务(或者,当然,重新启动机器)来进行快速检查/测试。

    【讨论】:

      猜你喜欢
      • 2014-06-03
      • 2012-02-11
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多