0%

node-red使用

1. 通过服务启动

1. 安装node-red

1
npm install -g --unsafe-perm node-red

2. node-red.service

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=node-red server
After=network.target

[Service]
Type=simple
ExecStart=/node-red
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target
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
2
pm2 info node-red
pm2 logs node-red

有关在 PM2 下管理进程的更多信息,请点击此处

4. PM2 在启动时运行

PM2 能够生成和配置适合其运行平台的启动脚本。

运行这些命令并按照它提供的说明进行操作:

1
2
pm2 save
pm2 startup

对于使用 systemd 的较新 Linux 系统,请使用

1
pm2 startup systemd

_临时说明:_GitHub 上的 PM2 上有一个未解决的问题,其中突出了最近引入的问题。 Linux 用户需要手动编辑生成的 /etc/init.d/pm2-init.sh 文件并将 指向正确的目录,如下所示:

1
2
# export PM2_HOME="/root/.pm2"
export PM2_HOME="/home/{youruser}/.pm2"

5. Reboot 5. 重新启动

最后,重新启动并检查一切按预期启动。

[PM2] Init System found: systemd Platform systemd Template

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=zauther
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/linuxbrew/.linuxbrew/opt/node@20/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/linuxbrew/.linuxbrew/Cellar/node@20/20.17.0/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/username/.pm2
PIDFile=/home/username/.pm2/pm2.pid
Restart=on-failure

ExecStart=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

文件位置:
/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