在Windows AWS服务器上,我有一个NODE应用程序,我使用PM2启动该应用程序
我试过国家预防机制:"pm2-窗口启动"和"pm2-窗口服务"
但在我重新启动AWS示例并运行
PM2 ls
列表中未显示节点应用程序...
- 我按照指示行事**
1.已安装NPM(因此PM2在重启后自动启动)
- PM2启动myApp.js--名称为mySuperApp
- PM2保存
1.重启 - PM2 ls--〉没有正在运行的节点应用程序?:-(
- PM2日志不包含任何内容...**
我还没有添加任何ENV变量显式(当我尝试PM2无法启动任何更多-所以我创建了一个新的AWS Windows示例,并安装每一件事从头开始再次...)
PM2位于默认位置(我没有更改任何路径)
C:\Users\Administrator\.pm2
- 我的PM2文件包含:**
2017年3月13日07时37分48秒:========================================================================= 2017年3月13日07时37分48秒:- --新的PM2后台程序已启动------------------------------------------------------
2017年3月13日07时37分48秒:时间:2017年3月13日星期一07:37:48 GMT +0000(协调世界时)2017年3月13日07:37:48:PM2版本:2.4.2 2017年3月13日07:37:48:Node.js版本:6.10.0 2017年3月13日07:37:48:当前拱形:x64 2017年3月13日07:37:48:网站首页:C:\用户\管理员. pm2 2017 - 03 - 13 07:37:48:PM2 PID文件:C:\用户\管理员. pm2\pm2.pid 2017 - 03 - 13 07:37:48:RPC套接字文件:.\管道\rpc.袜子2017 - 03 - 13 07:37:48:总线套接字文件:.\管道\出版袜子2017 - 03 - 13 07:37:48:应用程序日志路径:C:\用户\管理员. pm2\logs 2017 - 03 - 13 07:37:48:进程转储文件:C:\用户\管理员. pm2\转储. pm2 2017 - 03 - 13 07:37:48:并发操作:2 2017年3月13日07时37分48秒:SIGTERM超时:16时2017年3月13日07时37分48秒:===============================================================================
2017年3月13日07时37分48秒:在分叉模式下启动执行序列-应用程序名称:mySuperApp ID:0 2017 - 03 - 13 07:37:48:应用名称:我的超级应用编号:0上线2017 - 03 - 13 07:40:45:===============================================================================
2017年3月13日07时40分45秒:- --新的PM2守护程序启动--------------------------------------------------2017 - 03 - 13 07:40:45:时间:2017年3月13日星期一07:40:45 GMT +0000(协调世界时)2017年3月13日07:40:45:PM2版本:2.4.2 2017年3月13日07:40:45:Node.js版本:6.10.0 2017年3月13日07:40:45:当前拱形:x64 2017年3月13日07:40:45:网站首页:C:\用户\管理员. pm2 2017 - 03 - 13 07:40:45:PM2 PID文件:C:\用户\管理员. pm2\pm2.pid 2017 - 03 - 13 07:40:45:RPC套接字文件:.\管道\rpc.袜子2017 - 03 - 13 07:40:45:总线套接字文件:.\管道\出版袜子2017 - 03 - 13 07:40:45:应用程序日志路径:C:\用户\管理员. pm2\logs 2017 - 03 - 13 07:40:45:进程转储文件:C:\用户\管理员. pm2\转储. pm2 2017 - 03 - 13 07:40:45:并发操作:2 2017年3月13日07时40分45秒:SIGTERM超时:16时2017年3月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", "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\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:\Users\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\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:\Users\Administrator\AppData\Roaming", "ALLUSERSPROFILE": "C:\ProgramData", "PM2_HOME": "C:\Users\Administrator.pm2", "status": "online", "pm_uptime": 1489390668484, "axm_actions": [], "axm_monitor": { "Loop delay": { "alert": {}, "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", "error": true }, "axm_dynamic": {}, "created_at": 1489390668484, "restart_time": 0, "unstable_restarts": 0, "versioning": null, "node_version": "6.10.0" } ]
6条答案
按热度按时间z18hc3ub1#
如果PM2自动启动对您来说很重要,而无需您登录到机器(重新启动后),请按照我的新说明集,而不是旧的。
首先,我已经将
NPM
安装在了一个所有用户都可以使用的位置。根据您的使用情况,这可能是不必要的。但是如果您想更改NPM
的默认位置-您应该先这样做(在继续之前)。下面是您如何将其更改为该位置(在终端中作为管理员):C:\NodeJS\npm
:1.在
System environments
(非用户环境)中添加和设置PM2_HOME
。PM2_HOME
=C:\NodeJS\npm
1.将
C:\NodeJS\npm
添加到现有的系统PATH变量中(然后您可以确定它将工作-有一些问题报告PM2_HOME
并不总是工作)。1.关闭所有终端,然后以管理员身份再次打开。您的终端窗口现在将知道您的环境更改。
目前在包
pm2-windows-service
使用的模块中有一个bug-所以我们也可以修复这个bug,请按照以下步骤操作:1.在端子
cd
中输入:x1米11米1xncu inquirer
这只输出我们需要更新的inquirer
模块的现有版本和最新可用版本,当前:版本号:1.1.2
--〉7.0.4
。ncu inquirer -u
这将更新您的packages.json文件。npm install
这将下载并更新inquirer
模块(请注意,如果您没有在packages.json
文件中使用特定的版本语法,或者您已经手动进行了更改--〉其他模块也将被更新。1.在端子
cd
中输入:C:\NodeJS\npm\node_modules\pm2-windows-service
pm2-service-install -n PM2_STARTUP_SCRIPT
(PM2_STARTUP_SCRIPT
将是Windows服务的"显示名称"。将其更改为您喜欢的名称,然后单击ENTER
。)1.执行环境设置(推荐)?
Yes
1.设置PM2_HOME?
No
(不需要-您已经设置了)1.设置PM2_SERVICE_SCRIPTS(pm2的启动脚本列表)?
Yes
1.设置启动脚本/文件列表(分号分隔的json配置文件或js文件)
ENTER
(当什么都不输入时-默认使用PM2的dump.pm2
文件-这是在运行PM2 -f save
时创建的,稍后我将返回并解释)。1.设置PM2_SERVICE_PM2_DIR(要与服务一起使用的全局pm2的位置)?
Yes
1.指定包含服务要使用的pm2版本的目录?
ENTER
1.在Windows中打开"服务",然后将服务更改为以管理员(或您的首选角色)身份运行。
pm2 start myApp.js --name mySuperApp
pm2 -f save
1.重新启动或如果你使用AWS(或任何其他云提供商)。重新启动你的示例-等待5分钟,然后登录到机器并执行
pm2 ls
,检查你的应用程序是否已经启动并运行了~5分钟(而不仅仅是几秒钟,因为你刚刚登录)。1.从注册表中删除
PM2
项,如下图所示:我不知道为什么-但经过几次尝试,这工作(在一个新安装的AWS Windows 2016 BASE示例)
1.重新启动
eeq64g8w2#
2022年6月8日更新
我发现
npm i -g pm2
是全局安装每个用户。这意味着,如果另一个用户登录到服务器,他将不会安装pm2-因为
-g
并不像我们希望的那样是完全全局的。所以对于那些希望它完全全球化的人来说,解决方案是:
配置pm2
1.创建文件夹
c:\etc
1.安装pm2在这个文件夹
cd c:\etc
npm i pm2
1.将
C:\etc\node_modules\.bin
添加到系统变量PATH
1.键入
pm2
以初始化并创建.pm2
文件夹1.将其从
C:\Users\USER\.pm2
复制到C:\etc\.pm2
1.设置新的系统变量(非用户级别)名称:
PM2_HOME
值:c:\etc\.pm2
配置pm2
1.'npm i -g pm2' 2.键入'pm2'以初始化并创建'.pm2'文件夹3.将其从'C:\Users\USER.pm2'复制到'C:\etc.pm2' 3.设置新的系统变量(非用户级)名称:'PM2_HOME'值:'c:\等\平方分'
使用pm2运行应用程序
1.运行您的pm2应用程序。即:
pm2 start app.js --name=MY_API
.pm2 save
以创建当前运行的应用程序的转储。测试应用程序
1.要测试是否一切正常,请尝试:
pm2 kill
,然后pm2 resurrect
(应用程序应正在运行,请使用pm2 status
进行检查)启动时运行
现在我们需要在启动时执行resurrect命令,因此:
npm install -g @innomizetech/pm2-windows-service
pm2-service-install -n PM2 --unattended
就是这样。
eivgtgni3#
pm2-windows-startup
可以很好地工作,如果你接受它是在登录时启动的事实。如果你在服务器上重新启动(比如Windows Update),你就不走运了。pm2-windows-service
确实适合我,使用@innomizetech
fork,但我遇到了一些问题,可能是由于用户或它的设置,或其他原因。基本上,服务将启动旧版本的已保存进程列表,即使我尝试了pm2 delete all
,pm2 start ecosystem.config.js
,pm2 save
。我采取了一个非常简单的自制解决方案:
1.在
C:\
中创建一个文件pm2-resurrect.sh
,其中包含单行pm2 resurrect
。1.在任务计划程序中,添加一个在 Boot 时运行的新任务,并选择无论用户是否登录都运行该任务。此时需要键入用户密码,该密码将被保存以供后续运行。
1.设置任务命令以执行文件
C:\pm2-resurrect.sh
。在我的例子中,我有Git for Windows,它自带bash,可以打开文件并执行它,我没有测试它,但我想你可以有一个
.cmd
文件具有相同的内容。nue99wik4#
我尝试了以上所有方法,但都没有成功。对我有效的是:
1.使用
pm2 resurrect
命令创建bat文件1.创建该文件的快捷方式
1.将快捷方式粘贴到启动文件夹(win+R,shell:启动)
bt1cpqcv5#
最简单的方法&效果很好,希望对一些人有帮助
%windir%\system32\CMD.exe /k "start pm2 start myApp.js --name mySuperApp"
vbopmzt16#
参见pm2-安装程序
自述文件也是要弄清楚如何使用它。