Windows:自动启动PM2和节点应用程序

Pab*_*oDK 11 windows restart node.js pm2

在Windows AWS服务器上,我有一个NODE应用程序,我正在使用PM2来启动应用程序

我试过NPM:"pm2-windows-startup"和"pm2-windows-service"

但是在我重新启动AWS实例并运行之后

PM2 ls
Run Code Online (Sandbox Code Playgroud)

列表中没有节点应用程序显示...

我按照指示......

  1. 安装了NPM(重启后的PM2自动启动)
  2. PM2启动myApp.js --name mySuperApp
  3. PM2保存
  4. 重启
  5. PM2 ls - >没有正在运行的节点应用程序?:-(

PM2原木不包含任何东西......

我没有明确添加任何ENV变量(当我尝试PM2无法启动时 - 所以我创建了一个新的AWS windows实例并从头再次安装了所有东西......)

PM2位于默认位置(我没有更改任何路径)

C:\Users\Administrator\.pm2
Run Code Online (Sandbox Code Playgroud)

我的PM2文件包含:

2017-03-13 07:37:48:======================================= ======================================== 2017-03-13 07:37:48 :---新的PM2守护进程开始------------------------------------------ ----------

2017-03-13 07:37:48:时间:2017年3月13日星期一07:37:48 GMT + 0000(世界协调时间)2017-03-13 07:37:48:PM2版本:2.4.2 2017-03 -13 07:37:48:Node.js版本:6.10.0 2017-03-13 07:37:48:当前arch:x64 2017-03-13 07:37:48:PM2主页:C:\ Users\Administrator.pm2 2017-03-13 07:37:48:PM2 PID文件:C:\ Users\Administrator.pm2\pm2.pid 2017-03-13 07:37:48:RPC套接字文件:\.\ pipe\rpc.sock 2017-03-13 07:37:48:BUS套接字文件:\.\ pipe\pub.sock 2017-03-13 07:37:48:应用程序日志路径:C:\ Users\Administrator.pm2 \日志2017-03-13 07:37:48:进程转储文件:C:\ Users\Administrator.pm2\dump.pm2 2017-03-13 07:37:48:并发行动:2 2017-03-13 07: 37:48:SIGTERM超时:1600 2017-03-13 07:37:48:=============================== ================================================

2017-03-13 07:37:48:在-fork模式下启动执行顺序 - 对于app name:mySuperApp id:0 2017-03-13 07:37:48:应用程序名称:mySuperApp id:0 online 2017-03- 13 07:40:45:=========================================== ====================================

2017-03-13 07:40:45:---新的PM2守护进程启动-------------------------------- -------------------- 2017-03-13 07:40:45:时间:2017年3月13日星期一07:40:45 GMT + 0000(世界协调时间) 2017-03-13 07:40:45:PM2版本:2.4.2 2017-03-13 07:40:45:Node.js版本:6.10.0 2017-03-13 07:40:45:当前拱门: x64 2017-03-13 07:40:45:PM2主页:C:\ Users\Administrator.pm2 2017-03-13 07:40:45:PM2 PID文件:C:\ Users\Administrator.pm2\pm2.pid 2017-03-13 07:40:45:RPC套接字文件:\.\ pipe\rpc.sock 2017-03-13 07:40:45:BUS套接字文件:\.\ pipe\pub.sock 2017-03- 13 07:40:45:应用程序日志路径:C:\ Users\Administrator.pm2\logs 2017-03-13 07:40:45:进程转储文件:C:\ Users\Administrator.pm2\dump.pm2 2017- 03-13 07:40:45:并发行动:2 2017-03-13 07:40:45:SIGTERM超时:1600 2017-03-13 07:40:45:=========== ================================================== ==================

我的PM2 DUMB文件包含:

[{"exec_mode":"fork_mode","watch":false,"treekill":true,"autorestart":true,"automation":true,"pmx":true,"vizion":true,"name": "mySuperApp","node_args":[],"pm_exec_path":"c:\ mypath\mySuperApp\server.js","env":{"windir":"C:\ Windows","USERPROFILE":"C :\ Users\Administrator","USERNAME":"Administrator","USERDOMAIN_ROAMINGPROFILE":"EC2AMAZ-REBQJDK","USERDOMAIN":"EC2AMAZ-REBQJDK","TMP":"C:\ Users\ADMINI~1\AppData\Local\Temp\2","TEMP":"C:\ Users\ADMINI~1\AppData\Local\Temp\2","SystemRoot":"C:\ Windows","SystemDrive":"C:" ,"SESSIONNAME":"RDP-Tcp#1","PUBLIC":"C:\ Users\Public","PSModulePath":"C:\ Program Files\WindowsPowerShell\Modules; C:\ Windows\system32\WindowsPowerShell\v1.0\Modules; C:\ Program Files(x86)\ AWS Tools\PowerShell \","PROMPT":"$ P $ G","ProgramW6432":"C:\ Program Files","ProgramFiles(x86) ":"C:\ Program Files(x86)","ProgramFiles":"C:\ Program Files","ProgramData":"C:\ ProgramData","PROCESSOR_REVISION":"3f02","PROCESSOR_LEVEL":"6 ","PROCE SSOR_IDENTIFIER":"Intel64 Family 6 Model 63 Stepping 2,GenuineIntel","PROCESSOR_ARCHITECTURE":"AMD64","PM2_USAGE":"CLI","PM2_INTERACTOR_PROCESSING":"true","PATHEXT":".com; .EXE; .BAT; .CMD; .VBS; .VBE; .JSE; .WSF; .WSH; .MSC","Path":"C:\ Windows\system32; C:\ Windows; C:\ Windows\System32\Wbem ; C:\ Windows\System32\WindowsPowerShell\v1.0 \; C:\ Program Files\Amazon\cfn-bootstrap \; C:\ Program Files \nodejs \; C:\ Users\Administrator\AppData\Local\Microsoft\WindowsApps; C:\ Users\Administrator\AppData\Roaming \npm","OS":"Windows_NT","NUMBER_OF_PROCESSORS":"1","LOGONSERVER":"\\ EC2AMAZ-REBQJDK","LOCALAPPDATA":"C :\ Users\Administrator\AppData\Local","HOMEPATH":"\ Users\Administrator","HOMEDRIVE":"C:","ComSpec":"C:\ Windows\system32\cmd.exe","COMPUTERNAME ":"EC2AMAZ-REBQJDK","CommonProgramW6432":"C:\ Program Files\Common Files","CommonProgramFiles(x86)":"C:\ Program Files(x86)\ Common Files","CommonProgramFiles":"C :\ Program Files\Common Files","CLIENTNAME":"THESILVERFOX","APPDATA":"C:\ U sers\Administrator\AppData\Roaming","ALLUSERSPROFILE":"C:\ ProgramData","PM2_HOME":"C:\ Users\Administrator\.pm2","mySuperApp":{}},"pm_cwd":"c :\ mypath\mySuperApp","exec_interpreter":"node","pm_out_log_path":"C:\ Users\Administrator\.pm2\logs\mySuperApp-out-0.log","pm_err_log_path":"C:\ Users\Administrator\.pm2\logs\mySuperApp-error-0.log","pm_pid_path":"C:\ Users\Administrator\.pm2\pids\mySuperApp-0.pid","km_link":false,"NODE_APP_INSTANCE" :0,"vizion_running":false,"windir":"C:\ Windows","USERPROFILE":"C:\ Users\Administrator","USERNAME":"Administrator","USERDOMAIN_ROAMINGPROFILE":"EC2AMAZ-REBQJDK" ,"USERDOMAIN":"EC2AMAZ-REBQJDK","TMP":"C:\ Users\ADMINI~1\AppData\Local\Temp\2","TEMP":"C:\ Users\ADMINI~1\AppData\Local\Temp\2","SystemRoot":"C:\ Windows","SystemDrive":"C:","SESSIONNAME":"RDP-Tcp#1","PUBLIC":"C:\ Users\Public ","PSModulePath":"C:\ Program Files\WindowsPowerShell\Modules; C:\ Windows\system32\WindowsPowerShell\v1.0\Modules; C:\ Program Files(x86))\ AWS Tools\PowerShell \","PROMPT":"$ P $ G","ProgramW6432":"C:\ Program Files","ProgramFiles(x86)":"C:\ Program Files(x86)", "ProgramFiles":"C:\ Program Files","ProgramData":"C:\ ProgramData","PROCESSOR_REVISION":"3f02","PROCESSOR_LEVEL":"6","PROCESSOR_IDENTIFIER":"Intel64 Family 6 Model 63 Stepping 2,GenuineIntel","PROCESSOR_ARCHITECTURE":"AMD64","PM2_USAGE":"CLI","PM2_INTERACTOR_PROCESSING":"true","PATHEXT":".COM; .EXE; .BAT; .CMD; .VBS;. VBE; .JSE; .WSF; .WSH; .MSC","Path":"C:\ Windows\system32; C:\ Windows; C:\ Windows\System32\Wbem; C:\ Windows\System32\WindowsPowerShell\v1.0 \; C:\ Program Files\Amazon\cfn-bootstrap \; C:\ Program Files \nodejs \; C:\ Users\Administrator\AppData\Local\Microsoft\WindowsApps; C:\ Users\Administrator\AppData \漫游\npm","操作系统":"Windows_NT","NUMBER_OF_PROCESSORS":"1","LOGONSERVER":"\\ EC2AMAZ-REBQJDK","LOCALAPPDATA":"C:\ Users\Administrator\AppData\Local" ,"HOMEPATH":"\ Users\Administrator","HOMEDRIVE":"C:","ComSpec":"C:\ Windows\system32\cmd.exe"," COMPUTERNAME":"EC2AMAZ-REBQJDK","CommonProgramW6432":"C:\ Program Files\Common Files","CommonProgramFiles(x86)":"C:\ Program Files(x86)\ Common Files","CommonProgramFiles":" C:\ Program Files\Common Files","CLIENTNAME":"THESILVERFOX","APPDATA":"C:\ Users\Administrator\AppData\Roaming","ALLUSERSPROFILE":"C:\ ProgramData","PM2_HOME": "C:\ Users\Administrator\.pm2","status":"online","pm_uptime":1489390668484,"axm_actions":[],"axm_monitor":{"循环延迟":{"警告":{} ,"agg_type":"avg","value":"36.91ms"}},"axm_options":{"default_actions":true,"transactions":false,"http":false,"http_latency":200," http_code":500,"ignore_routes":[],"profiling":true,"errors":true,"alert_enabled":true,"custom_probes":true,"network":false,"ports":false,"ignoreFilter ":{"method":["OPTIONS"],"url":[]},"excludedHooks":[],"module_conf":{},"module_name":"mySuperApp","module_version":"2.4. 2","pmx_version":"1.0.3","错误":true},"axm_dynamic":{},"cre ated_at":1489390668484,"restart_time":0,"unstable_restarts":0,"版本控制":null,"node_version":"6.10.0"}]

Pab*_*oDK 26

我不知道为什么 - 但经过几次尝试后,这个问题得以实现(在全新安装的AWS Windows 2016 BASE实例上)

  1. npm install pm2 -g
  2. npm install pm2-windows-startup -g
  3. pm2-启动安装
  4. pm2启动myApp.js --name mySuperApp
  5. pm2保存
  6. 重启
  7. pm2 ls

  • 仅当我登录Windows服务器时,它才对我有用。如果我没有登录服务器,则pm2无法启动。 (3认同)

tom*_*953 12

更新 06/2021

我发现本教程非常有用:https : //blog.cloudboost.io/nodejs-pm2-startup-on-windows-db0906328d75

第一种使用“nssm”和 .bat 文件的方法对我不起作用,所以我遵循了方法 2:“解决方案 2:使用 pm2-windows-service”

然而,正如其他答案中提到的,pm2-windows-service有一个错误, 这个 fork 解决了https : //www.npmjs.com/package/@innomizetech/pm2-windows-service

所以代替旧包(pm2-windows-service):使用新包:

npm install -g @innomizetech/pm2-windows-service

这里是本教程的简短摘要:

配置pm2

  1. npm i -g pm2
  2. 键入pm2以初始化并创建.pm2文件夹
  3. 从复制C:\Users\USER\.pm2C:\etc\.pm2
  4. 设置一个新的系统变量(不是用户级别)名称:PM2_HOME值:c:\etc\.pm2

使用 pm2 运行您的应用

  1. 运行你的 pm2 应用程序。即:pm2 start app.js --name=MY_API
  2. pm2 save 创建当前正在运行的应用程序的转储。

测试应用

  1. 要测试一切是否正常,请尝试:pm2 kill然后pm2 resurrect(应用程序应该正在运行,请检查pm2 status

启动时运行

现在我们需要在启动时执行 resurrect 命令,所以:

  1. npm install -g @innomizetech/pm2-windows-service
  2. pm2-service-install -n PM2 --unattended

就是这样。

  • 在“pm2-service-install -n PM2 --unattended”之后,我在服务列表中没有看到 PM2 服务。还有其他人有这个问题吗? (2认同)

M.A*_*M.A 8

最简单的方法而且效果很好希望对一些人有帮助

  • 我在同一文件夹中创建了一个批处理文件 *.bat
  • %windir%\system32\CMD.exe /k "start pm2 start myApp.js --name mySuperApp"
  • 在启动时创建的 Windows“任务计划程序”效果很好......


mcd*_*ado 7

pm2-windows-startup如果您对它在登录时启动的事实感到满意,那么效果很好。如果您在服务器上重新启动(例如 Windows 更新),那么您就不走运了。

pm2-windows-service确实对我有用,使用@innomizetechfork,但我遇到了一些问题,可能是由于用户或其设置,或其他原因。基本上该服务会启动旧版本的已保存进程列表,即使我尝试过pm2 delete all, pm2 start ecosystem.config.js, pm2 save

我求助于一个非常简单的自制解决方案:

  1. 创建一个文件pm2-resurrect.shC:\,其中包含一行pm2 resurrect
  2. 在Task Scheduler中,添加一个开机时运行的新任务,并选择无论用户是否登录都运行。此时您需要输入用户密码,该密码已保存以供后续运行使用。
  3. 设置任务命令以执行文件C:\pm2-resurrect.sh

就我而言,我有 Windows 版 Git,它带有 bash,它打开文件并执行它。我没有测试它,但我想你可以有一个.cmd内容相同的文件。

  • 这个解决方案是救世主。它就像一个魅力。另一个提示是将环境变量“PM2_HOME”设置为“c:\users\<user>\.pm2”或类似的值。这将帮助“PM2 复活”从该位置获取转储文件。还要重新启动计算机才能使该方案生效,但如果无法重新启动,请手动运行创建的计划任务。 (2认同)

小智 6

我尝试了以上所有方法,但都没有运气。什么对我有用:

  1. 创建一个bat文件pm2 resurrect命令
  2. 创建该文件的快捷方式
  3. 将该快捷方式粘贴到启动文件夹上(win+R,shell:startup)