在 Windows AWS 服务器上,我有一个节点应用程序,我正在使用 PM2 启动该应用程序
我已经尝试过 NPM:“pm2-windows-startup”和“pm2-windows-service”
但是在我重新启动我的 AWS 实例并运行之后
PM2 ls
列表中没有显示节点应用程序…
我按照指示…
- 安装了 NPM(所以重启后 PM2 会自动启动)
- PM2 启动 myApp.js –name mySuperApp
- PM2 保存
- 重启
- PM2 ls –> 没有运行节点应用程序? :-(
PM2 日志不包含任何内容…
我没有显式添加任何 ENV 变量(当我尝试 PM2 时无法再启动 - 所以我创建了一个新的 AWS Windows 实例并再次从头开始安装所有东西……)
PM2 位于默认位置(我没有更改任何路径)
C:\Users\Administrator\.pm2
我的 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:当前架构: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 模式下开始执行序列 - 应用程序名称:mySuperApp id:0 2017-03-13 07:37:48:应用程序名称:mySuperApp id:0 在线 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 “, “处理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”, “路径”: “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”:假,“windir”:“C:\Windows”,“USERPROFILE”:“C:\Users\Administrator”,“USERNAME”:“管理员”,“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、正版Intel”、“PROCESSOR_ARCHITECTURE”:“AMD64”、“PM2_USAGE”:“CLI”、“PM2_INTERACTOR_PROCESSING”:“true”、“PATHEXT”:“.COM;.EXE;.BAT;.CMD;.VBS;。 VBE;.JSE;.WSF;.WSH;.MSC”, “路径”: “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”,“状态”:“在线”,“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”, “error”: true }, “axm_dynamic”: {}, “cre ated_at”:1489390668484,“restart_time”:0,“unstable_restarts”:0,“versioning”:null,“node_version”:“6.10.0”}]
原文由 PabloDK 发布,翻译遵循 CC BY-SA 4.0 许可协议
2020 年 2 月 16 日更新:
如果您认为 PM2 无需您登录机器(重启后)即可自动启动对您很重要,请按照我的新说明而不是旧说明进行操作。
新说明(推荐):
先决条件(第 1 部分):
首先,我在所有用户都可以使用的位置安装了
NPM
。根据您的用例,可能没有必要。但是,如果您想更改默认位置NPM
- 您应该先进行(在继续之前)。以下是将其更改为位置的方法(在终端中以管理员身份):C:\NodeJS\npm
:先决条件(第 2 部分):
System environments
(不是用户环境)中添加并设置PM2_HOME
。喜欢:PM2_HOME
=C:\NodeJS\npm
C:\NodeJS\npm
添加到现有的系统 PATH 变量中(然后你确定它会工作 - 有一些问题报告说PM2_HOME
并不总是工作)。先决条件(第 3 部分):
目前在
pm2-windows-service
包使用的模块中有一个错误 - 所以我们也修复这个问题,请按照以下步骤操作:cd
变成:C:\NodeJS\npm\node_modules\pm2-windows-service
ncu inquirer
this only outputs the existing and the newest available version of theinquirer
module we need to update, currently: version:1.1.2
–>7.0.4
.ncu inquirer -u
这将更新您的 packages.json 文件。npm install
这将下载并更新inquirer
模块(请注意,如果您不在packages.json
文件中使用特定版本语法或您已手动更改–> 其他模块也会更新。安装并设置 PM2(作为服务)以在重启后自动启动:
在终端
cd
变成:C:\NodeJS\npm\node_modules\pm2-windows-service
pm2-service-install -n PM2_STARTUP_SCRIPT
(PM2_STARTUP_SCRIPT
将是 Windows 服务的“显示名称”。将其更改为您喜欢的名称并点击ENTER
。)执行环境设置(推荐)?
Yes
设置 PM2_HOME?
No
(不需要 - 你已经设置好了)设置 PM2_SERVICE_SCRIPTS(pm2 的启动脚本列表)?
Yes
设置启动脚本/文件列表(分号分隔的 json 配置文件或 js 文件)
ENTER
(没有输入时 - 默认使用 PM2 的dump.pm2
文件 - 即运行时创建的PM2 -f save
,我稍后会返回并解释)。设置 PM2_SERVICE_PM2_DIR(与服务一起使用的全局 pm2 的位置)?
Yes
指定包含服务要使用的 pm2 版本的目录?
ENTER
PM2 服务已安装并启动。
设置您喜欢 PM2 的应用程序以启动 - 关闭或重新启动后:
pm2 start myApp.js --name mySuperApp
pm2 -f save
pm2 ls
并检查您的应用程序是否已启动并运行了约 5 分钟(不仅是因为您刚刚登录,所以只有几秒钟)。从您的注册表中卸载并清理“pm2-windows-startup”(如果您从我的“旧指令”切换到新指令):
PM2
键,如下图所示:旧指令(不推荐):
我在下面的旧答案仍然有效 - 但除非您登录机器,否则 PM2 不会启动,因为它正在从注册表加载 PM2 并且不会将其作为服务运行。
我不知道为什么 - 但经过几次尝试,这解决了(在新安装的 AWS Windows 2016 BASE 实例上)