本文介绍了如何在一台机器上配置多个端口,并利用Node-RED在不同端口下创建独立的工作流实例以及实现其离线部署的方法。
**NodeRed一机多端口实例创建与无网部署**
NodeRed是一款基于Node.js的可视化编程工具,用于快速构建物联网(IoT)应用和流程。它通过简单的“节点”拖拽和连接方式,使得非程序员也能轻松实现复杂逻辑。本教程将详细介绍如何在一台机器上创建多个NodeRed实例,并进行无网络环境的部署。
### 一、Node.js与npm安装
我们需要在服务器上安装Node.js。Node.js是NodeRed运行的基础环境,而npm(Node Package Manager)则是Node.js的包管理器,用于安装和管理Node.js模块。
1. 访问官网下载适合操作系统的安装包,或通过包管理器(如Ubuntu的`apt-get`,CentOS的`yum`)进行安装。
2. 安装完成后,确认Node.js和npm已安装:
```
node -v
npm -v
```
### 二、NodeRed安装
1. 使用npm全局安装NodeRed:
```
npm install -g --unsafe-perm node-red
```
`--unsafe-perm`参数用于解决权限问题。
2. 初始化并启动NodeRed服务:
```
node-red-start
```
默认情况下,NodeRed会监听1883端口,并在http://localhost:1880/ui启动Web界面。
### 三、一机多端口实例创建
创建多个NodeRed实例,需要为每个实例指定不同的工作目录和端口号:
1. 创建新工作目录:
```
mkdir pathtoinstance1
mkdir pathtoinstance2
```
2. 在每个工作目录中初始化NodeRed:
```
cd pathtoinstance1
npm init -y
npm install --save node-red
```
重复此步骤在`pathtoinstance2`。
3. 修改NodeRed配置文件:
在每个实例的工作目录下,找到`settings.js`文件(如果没有,可以运行`npm init`生成),修改`httpAdminRoot`和`httpNodeRoot`以及端口号`port`。例如:
```javascript
httpAdminRoot: admin1,
httpNodeRoot: api1,
port: 1884,
```
对于第二个实例分别改为 `admin2`, `api2`, 和 `1885`.
4. 启动每个实例:
```
node-red-start
```
每次启动时,确保指定工作目录:
```
node-red-start -c pathtoinstance1
node-red-start -c pathtoinstance2
```
现在,你可以通过`http://localhost/admin1`和`http://localhost/admin2`访问两个实例的管理界面, 而 `http://localhost/api1` 和 `http://localhost/api2` 用于API交互。
### 四、无网部署
在无网络环境下部署NodeRed,需要提前下载所有依赖到本地:
1. 在有网络的环境中,进入NodeRed工作目录:
```
cd pathtoinstance
```
2. 使用`npx`下载NodeRed及其所有依赖到本地:
```
npx npm-pack-all
```
这将生成一个包含所有依赖的.tgz文件。
3. 将这个.tgz文件传输到无网络的机器上,然后解压:
```
tar -xzf package.tgz
```
4. 在无网机器上启动NodeRed:
```
node-red-start
```
这样,你就在无网络环境中成功部署了NodeRed实例。
### 注意事项
- 确保每个实例的端口号不冲突,避免服务冲突。
- 无网部署时确保所有依赖已经下载完整,否则NodeRed可能无法正常启动。
- 如果需要更新或添加新的节点,在网络环境操作完成后复制到无网环境。
- 配置文件`settings.js`可以根据需求进行自定义,例如设置数据库、日志级别等。
通过以上步骤, 你可以在一台机器上高效地管理和运行多个独立的NodeRed实例,并在无网络环境中稳定运行。这对于开发、测试或生产环境都是十分有用的。