PM2

PM2是一个进程管理工具,通常我们用它来管理node进程。

详细请参考官网文档

pm2-windows-service

pm2-windows-service 是一个NPM包,用它可以轻松地在Windows机器上安装PM2为一个Windows服务。

安装NPM包

1
$ npm i pm2-windows-service -g

安装服务

1
$ pm2-service-install

安装服务后,在服务列表中可以查看到此服务。

在执行pm2 start之后记得保存状态。

1
$ pm2 save

卸载服务

1
$ pm2-service-uninstall

常见问题

  1. 执行pm2-service-install后,在服务列表中可以查看到服务,但服务的状态不是正在运行。

    右键服务列表中的PM2, 查询到Windows服务启动的路径,进入该目录(例如:C:\Users\toplinker\AppData\Roaming\npm\node_modules\pm2-windows-service\src\daemon)。

    在该目录下,有一个日志文件pm2.err.log,此文件详细记录了该windows服务启动失败的原因。可以根据原因逐步排查。

    a) 如果日志中提示 Sorry, this script requires pm2.

    这种情况下大概率是PM2的路径没有正确配置,可手动修改dump.pm2文件中的PM2_SERVICE_PM2_DIR,并删除PM2_SERVICE_SCRIPTS, 例如:

    1
    2
    3
    {
    "PM2_SERVICE_PM2_DIR": "C:\\Users\\toplinker\\AppData\\Roaming\\npm\\node_modules\\pm2"
    }

    dump.pm2文件是在pm2-service-install执行过程中指定的,它的路径取决于你的指定。

  2. 在服务列表中可以查看到服务,服务也是正在运行的状态。但重启电脑后,pm2 list

    中并没有之前启动的进程。

    请确认有正确执行 pm2 save.

    1
    2
    $ pm2 start server.js
    $ pm2 save
  1. 如果之前已经安装了类似包,建议先卸载之前安装的npm包。若卸载后服务列表中仍然存在,可手动删除服务。

    1
    $ sc delete pm2.exe # pm2.exe是服务的名称,可在服务列表右键中查看

Reference