pm2 设置开机自动启动已启动的服务

sudo pm2 start xxxx  // 启动服务

sudo pm2 save // 保存服务

sudo pm2 startup // 把已启动服务加到systemd中

sudo systemctl reboot // 重启,发现之前的服务都已经启动

sudo pm2 unstartup systemd // 删除自动启动服务

如果不生效:

  1. 请检查是否是以sudo执行,或者是用su用户操作
  2. pm2 save 之后的文件是否有内容
  3. 应用依赖的其它进程是否应启动完成,例如数据库 

在执行

pm2 unstartup systemd

之前,即使已经pm2 delete app,重启后依然会启动服务。

 

注:自动启动适用于稳定代码版本,如果代码发生变动,需要重新save、startup,否则pm2启动可能报错:

path.js:1144
cwd = process.cwd();
^
Error: ENOENT: no such file or directory, uv_cwd
at Error (native)
at Object.resolve (path.js:1144:25)
at Function.Module._resolveLookupPaths (module.js:361:17)
at Function.Module._resolveFilename (module.js:431:31)
at Function.Module._load (module.js:388:25)
at Module.require (module.js:468:17)
at require (internal/module.js:20:19)
at Object. (/usr/lib/node_modules/pm2/lib/ProcessContainer.js:12:15)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)

 

<think>好的,我现在需要帮助用户了解如何配置Node-RED的开机启动。首先,我得回忆一下用户提供的引用内容,里面有关于使用systemctl、pm2以及任务计划程序的方法。用户可能使用的是Linux系统,比如CentOS,或者是Windows,所以得涵盖不同系统的方法。 首先,用户的问题集中在开机启动,所以我要分步骤说明不同的方法。根据引用内容,Linux下主要有两种方式:systemctl服务pm2管理。而Windows则可以用任务计划程序或者pm2的Windows版本。 需要先整理Linux下的systemctl方法。根据引用[1],用户需要创建服务文件,然后启用和启动服务。步骤应该是创建node-red.service文件,放在正确的位置,然后使用systemctl命令启用和启动。这里需要注意路径是否正确,以及用户权限的问题,比如User字段的设置是否正确。 然后是pm2的方法,引用[2][5]提到在CentOS中使用pm2设置开机启动。这里步骤应该是先安装pm2,然后用pm2启动node-red,保存pm2的状态,最后生成启动脚本。需要确保pm2启动脚本正确安装,并且node-red的启动命令正确无误。这里可能还需要处理全局路径的问题,比如pm2是否在系统路径中。 对于Windows用户,引用[4]提到了两种方法:pm2-windows-startup和任务计划程序。pm2的方法需要安装特定包,然后设置保存,而任务计划程序则需要手动创建任务。这部分需要详细说明步骤,特别是路径的查找,比如node-red.cmd的位置。 另外,用户可能还需要启用登录功能,如引用[3]提到的修改settings.js文件中的adminAuth部分。这虽然不是直接的开机启动步骤,但可能是配置的一部分,需要提及。 需要注意每个步骤的注意事项,比如权限问题,路径是否正确,是否需要sudo,以及如何验证服务是否成功。例如,在Linux中使用systemctl status命令检查服务状态,或者用pm2 list查看进程是否运行。 还要考虑不同系统版本可能带来的差异,比如CentOS7和其他Linux发行版的区别,确保命令的兼容性。同时,用户可能对命令行操作不熟悉,所以步骤要尽量详细,避免遗漏关键命令。 最后,生成相关问题,帮助用户进一步了解优化或故障排除,比如如何检查服务状态,如何取消自启动等。需要确保问题相关且有用,覆盖用户可能遇到的后续疑问。</think>### Node-RED开机启动配置方法 #### 方法一:Linux系统(CentOS/Ubuntu等)使用systemctl服务 1. **创建服务文件** 新建文件`/etc/systemd/system/node-red.service`,内容如下: ```bash [Unit] Description=Node-RED After=syslog.target network.target [Service] ExecStart=/usr/bin/node-red-pi --max-old-space-size=128 Restart=on-failure User=your_username # 替换为实际用户名 Group=your_groupname [Install] WantedBy=multi-user.target ``` 2. **启用并启动服务** ```bash sudo systemctl enable node-red.service # 设置开机自启[^1] sudo systemctl start node-red.service # 立即启动服务 ``` #### 方法二:使用PM2进程管理(跨平台) 1. **安装PM2** ```bash npm install -g pm2 ``` 2. **通过PM2启动Node-RED** ```bash pm2 start `which node-red` --name "node-red" # 启动服务[^5] pm2 save # 保存当前进程状态 ``` 3. **设置PM2开机自启** ```bash pm2 startup # 生成自启动脚本[^2] # 根据提示执行生成的命令(如复制粘贴输出的脚本) ``` #### 方法三:Windows系统 1. **通过PM2实现** ```cmd npm install -g pm2-windows-startup pm2-startup install pm2 start "%APPDATA%\npm\node-red.cmd" --name "node-red" pm2 save ``` 2. **通过任务计划程序** - 创建新任务,触发器设置为“登录时” - 操作指向Node-RED启动文件(如`C:\Users\用户名\AppData\Roaming\npm\node-red.cmd`)[^4] #### 验证配置 - Linux系统:`systemctl status node-red.service` - PM2管理:`pm2 list` 查看进程状态 - 访问 `http://localhost:1880` 确认服务运行 #### 附加配置(可选) - **启用登录认证**:修改`~/.node-red/settings.js`中`adminAuth`字段[^3] - **自定义端口**:在启动命令中添加`-p 自定义端口号` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值