1. 通过服务启动
1. 安装node-red
1 | npm install -g --unsafe-perm node-red |
2. node-red.service
1 | [Unit] |
1 | cp node-red.service /etc/systemd/system |
3. 设置服务
重新加载系统守护进程:sudo systemctl daemon-reload
启动 node-red 服务: 运行以下命令启动服务:sudo systemctl start node-red
设置开机自启: 如果你希望在系统启动时自动启动 node-red 服务,可以使用以下命令:sudo systemctl enable node-red
查看服务状态: 你可以通过以下命令检查服务的状态:sudo systemctl status node-red
2. Other Linux, OSX 其他 Linux、OSX
下面的指南列出了我们认为对大多数用户来说最直接的方法。对于 Windows,PM2 不会作为服务自动运行 - 您可能更喜欢下面的 NSSM 选项。
0. 使用 PM2
PM2 是 Node.js 的流程管理器。它使在启动时运行应用程序变得容易,并确保它们在必要时重新启动。
1. 安装 PM2
1 | sudo npm install -g pm2 |
注意 :如果在 Linux 或 OS X 上以非 root 用户身份运行,则需要 sudo
。如果在 Windows 上运行,则需要以管理员身份在命令 shell 中运行,而不使用 sudo
命令。
如果在 Windows 上运行,您还应该确保 tail.exe
在您的路径上,如此处所述。
2. 确定 node-red
命令的确切位置
如果您已经完成了 node-red 的全局安装,那么在 Linux/OS X 上,node-red
命令可能是:/usr/bin/node-red
或 /usr/local/bin/node-red
。命令 which node-red
可用于确认位置。
如果您已完成本地安装,它将是 node_modules/node-red/bin/node-red
相对于您运行 npm install
的位置。
3. PM2 运行 Node-RED
以下命令指示 PM2 运行 Node-RED,假设 /usr/bin/node-red
作为 node-red
命令的位置。
The --
argument must appear before any arguments you want to pass to node-red.--
参数必须出现在要传递给 node-red 的任何参数之前。
1 | pm2 start /usr/bin/node-red -- -v |
_注意_:如果您在 Raspberry Pi 或 BeagleBone 等设备上运行 black,则必须传递一个额外的参数:
1 | pm2 start /usr/bin/node-red --node-args="--max-old-space-size=128" -- -v |
_注意_:如果要以 root 用户身份运行,则必须使用 ‘–userDir’ 选项来指定 Node-RED 应存储数据的位置。
这将在后台启动 Node-RED。您可以使用以下命令查看有关进程的信息并访问日志输出:
1 | pm2 info node-red |
有关在 PM2 下管理进程的更多信息,请点击此处。
4. PM2 在启动时运行
PM2 能够生成和配置适合其运行平台的启动脚本。
运行这些命令并按照它提供的说明进行操作:
1 | pm2 save |
对于使用 systemd 的较新 Linux 系统,请使用
1 | pm2 startup systemd |
_临时说明:_GitHub 上的 PM2 上有一个未解决的问题,其中突出了最近引入的问题。 Linux 用户需要手动编辑生成的 /etc/init.d/pm2-init.sh 文件并将 指向正确的目录,如下所示:
1 | export PM2_HOME="/root/.pm2" |
5. Reboot 5. 重新启动
最后,重新启动并检查一切按预期启动。
[PM2] Init System found: systemd Platform systemd Template
1 | [Unit] |
文件位置:/etc/systemd/system/pm2-username.service
systemctl enable pm2-username
会创建symlink /etc/systemd/system/multi-user.target.wants/pm2-username.service
→ /etc/systemd/system/pm2-username
.
通过以下方式在重启时冻结进程列表:
1 | pm2 save |
移除初始化脚本:
1 | pm2 unstartup systemd |