Node-Red的部署與啟動實現(xiàn)
一、Node-RED 運行機制
Node-RED 的架構基于 Node.js 的事件驅動模型,核心由?運行時(Runtime)?、編輯器(Editor)和節(jié)點(Nodes)三部分組成,三者協(xié)同實現(xiàn)可視化流程編程與執(zhí)行。?
運行時(
Runtime):流程執(zhí)行的 “大腦”??核心功能?:負責加載節(jié)點、解析流程配置、管理節(jié)點間消息傳遞、處理事件觸發(fā),是流程運行的核心引擎。?
?技術細節(jié)?:?
- 基于 Node.js 的EventEmitter模塊實現(xiàn)事件監(jiān)聽與觸發(fā),確保消息處理的高效性與非阻塞性。?
- 采用 “流(
Flow)” 作為流程的基本單位,每個流由多個節(jié)點和連接構成,運行時通過解析 JSON 格式的流配置文件,將節(jié)點實例化并建立消息路由。? - 支持多流并行運行,不同流之間可通過 “鏈接節(jié)點(
Link Node)” 或全局上下文(Context)實現(xiàn)數據交互。?
?消息模型?:?
- 節(jié)點間傳遞的消息為
msg對象,默認包含msg.payload(消息內容)和msg.topic(消息主題),用戶可自定義添加其他屬性(如msg.timestamp、msg.source)。? - 消息傳遞支持 “一對一”“一對多”“多對一” 模式,例如一個 “注入節(jié)點” 可同時向多個 “函數節(jié)點” 發(fā)送消息。?
- 節(jié)點間傳遞的消息為
編輯器(
Editor):可視化開發(fā)的 “畫布”??核心功能?:提供基于瀏覽器的可視化界面,支持節(jié)點拖拽、連接配置、流程保存與部署,是用戶與 Node-RED 交互的主要入口。?
?技術細節(jié)?:?
- 編輯器與運行時通過
WebSocket協(xié)議實時通信,實現(xiàn) “部署即生效”:用戶點擊 “部署” 后,編輯器將流程配置 JSON 發(fā)送至運行時,運行時即時更新并執(zhí)行流程,無需重啟服務。? - 支持 “工作區(qū)(
Workspace)” 分區(qū),可通過標簽頁切換不同流程,方便大型項目的模塊化管理。?
- 編輯器與運行時通過
節(jié)點(
Nodes):流程功能的 “積木”??核心定位?:節(jié)點是封裝特定功能的代碼模塊,是流程的基本功能單元,用戶通過組合節(jié)點實現(xiàn)業(yè)務邏輯。?
?結構組成?:每個節(jié)點包含
html(編輯器配置界面)、js(運行時邏輯)和package.json(元數據)三部分:?html文件:定義節(jié)點在編輯器中的外觀(圖標、顏色)、配置項(如 API 密鑰、端口號),通過RED.nodes.registerType注冊節(jié)點類型。?js文件:實現(xiàn)節(jié)點的運行時邏輯,包括on("input")(接收輸入消息觸發(fā))、send()(發(fā)送輸出消息)等核心方法。?package.json:聲明節(jié)點名稱、版本、依賴(如mqtt庫)、兼容的 Node-RED 版本等信息。
二、安裝Node-Red
2.1 安裝NVM
這里以Linux系統(tǒng)為例,推薦使用NVM安裝NodeJS,方便后續(xù)管理
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)" source ~/.nvm/nvm.sh
2.2 安裝NodeJS
nvm install v22.16.0
2.3 安裝Node-Red
npm install -g --unsafe-perm node-red
2.4 Node-Red的自啟動
npm install -g pm2 pm2 start node-red --node-args="--max-old-space-size=1024" #根據實際內存自行調整 pm2 save pm2 startup
三、Node-Red的啟動參數
3.1 啟動命令
node-red [-v] [-?] [--settings settings.js] [--userDir DIR]
[--port PORT] [--title TITLE] [--safe] [flows.json|projectName]
[-D X=Y|@file]
3.2 參數說明
-p, --port PORT:設置運行時監(jiān)聽的 TCP 端口。默認值:1880--safe:啟動 Node-RED 但不啟動流程。當部署更改時,流程才會啟動-s, --settings FILE:設置要使用的配置文件。默認:settings.js在userDir中--title TITLE:設置進程窗口標題-u, --userDir DIR:設置要使用的用戶目錄。默認:~/.node-red-v:啟用詳細輸出-D X=Y|@file:覆蓋單個設置flows.json|projectName:如果項目功能未啟用,這將設置您要與之工作的流程文件。如果項目功能已啟用,這將確定應啟動哪個項目。-?, --help:顯示命令行使用幫助并退出
3.3 參數示例
3.3.1 啟用詳細輸出
?參數作用?:啟動 Node-RED 時輸出詳細日志(如模塊加載、配置讀取等過程),用于調試問題。
?命令示例?:
node-red -v
?場景說明?:當 Node-RED 啟動失敗(如插件報錯、端口占用)時,通過
-v查看詳細日志,快速定位問題原因(例如 “某個節(jié)點模塊缺失”“配置文件語法錯誤”)。
3.3.2 顯示幫助信息
?參數作用?:輸出所有命令行參數的用法說明,無需啟動 Node-RED,僅用于查詢參數。
?命令示例?(兩種寫法均可):
# 寫法1:短參數 -? node-red -? # 寫法2:長參數 --help node-red --help
?場景說明?:忘記某個參數的作用時,直接執(zhí)行該命令快速查閱,例如 “想不起用戶目錄參數是
--userDir還是--user” 時,通過--help確認。
3.3 指定配置文件 {#boot-custom-settings}
?參數作用?:不使用默認的
settings.js(默認在用戶目錄下),而是指定自定義的配置文件(如自定義節(jié)點路徑、認證規(guī)則)。?命令示例?:
# 假設自定義配置文件存放在 /home/user/custom-node-red/settings-prod.js node-red --settings /home/user/custom-node-red/settings-prod.js
?場景說明?:多環(huán)境部署時使用(如開發(fā)環(huán)境、生產環(huán)境),生產環(huán)境的
settings-prod.js可能關閉調試日志、啟用 HTTPS,通過該參數快速切換配置。
3.4 指定用戶目錄
?參數作用?:自定義 Node-RED 的用戶目錄(默認是
~/.node-red,存放流程文件、插件、配置),實現(xiàn)多用戶 / 多實例隔離。?命令示例?:
# 為“設備監(jiān)控”場景創(chuàng)建獨立用戶目錄 /opt/node-red/device-monitor node-red --userDir /opt/node-red/device-monitor
?場景說明?:同一臺服務器需要運行多個 Node-RED 實例(如 “設備監(jiān)控” 和 “數據采集”),通過
--userDir隔離各自的流程和插件,避免沖突。
3.5 指定監(jiān)聽端口
?參數作用?:設置 Node-RED 后臺服務的 TCP 監(jiān)聽端口(默認是
1880),解決端口占用問題或實現(xiàn)多實例端口區(qū)分。?命令示例?(兩種寫法均可):
# 寫法1:短參數 -p,指定端口為 1881 node-red -p 1881 # 寫法2:長參數 --port,指定端口為 1882(用于生產環(huán)境實例) node-red --port 1882
?場景說明?:默認端口 1880 已被其他服務占用,或需要運行兩個 Node-RED 實例(分別用 1881 和 1882 端口)時,用該參數指定端口。
3.6 設置進程窗口標題
?參數作用?:自定義 Node-RED 運行時的進程窗口標題(僅在終端 / 命令行窗口中顯示),便于識別多實例進程。
?命令示例?:
# 為“車間溫濕度監(jiān)控”實例設置窗口標題 node-red --title "Node-RED - 車間溫濕度監(jiān)控" --port 1883
?場景說明?:在終端中同時運行多個 Node-RED 實例時,默認窗口標題都是 “node-red”,通過
--title自定義標題(如 “車間溫濕度監(jiān)控”“設備故障報警”),可快速區(qū)分不同實例。
3.7 安全模式啟動
?參數作用?:啟動 Node-RED 但不自動運行已部署的流程,僅加載編輯器;需手動在編輯器中點擊 “部署”,流程才會啟動。
?命令示例?:
# 安全模式啟動,避免流程啟動時因錯誤導致崩潰 node-red --safe --port 1880
?場景說明?:流程中存在錯誤(如 “MQTT 服務器地址寫錯”“函數節(jié)點語法錯誤”),直接啟動可能導致 Node-RED 崩潰;用
--safe啟動后,先在編輯器中修復錯誤,再部署運行流程,避免啟動失敗。
3.8 指定流程文件或項目名
該參數分兩種場景(取決于是否啟用 “項目功能”),示例分別如下:
場景 1:未啟用項目功能(指定流程文件)
?參數作用?:不使用默認的 flows_<主機名>.json(用戶目錄下),而是指定自定義的流程文件(如備份的舊流程、特定場景的流程)。
?命令示例?:
# 加載備份的流程文件 /home/user/backups/node-red/flows-20240501.json node-red /home/user/backups/node-red/flows-20240501.json
?場景說明?:需要恢復歷史備份的流程,或切換到另一個場景的流程(如 “工作日流程” 和 “節(jié)假日流程”),直接指定流程文件路徑即可加載。
場景 2:已啟用項目功能(指定項目名)
?參數作用?:Node-RED 啟用 “項目功能” 后(需在編輯器中配置),通過項目名指定啟動哪個項目(每個項目包含獨立的流程、配置)。
?命令示例?:
# 啟動名為“智慧家居控制”的項目 node-red 智慧家居控制
?場景說明?:啟用項目功能后,多個項目的文件被統(tǒng)一管理(如
Git版本控制),通過項目名快速啟動目標項目,無需手動指定流程文件路徑。
3.9 覆蓋單個配置
?參數作用?:臨時覆蓋 settings.js中的某個配置(無需修改配置文件),支持 “單鍵值覆蓋” 或 “通過文件批量覆蓋”。
?命令示例?(兩種用法):
- ?單鍵值覆蓋?(如臨時關閉編輯器訪問限制):
# 覆蓋 "editorTheme.disableEdit" 配置,允許編輯(默認可能為 false) node-red -D editorTheme.disableEdit=true --port 1880
- ?文件批量覆蓋?(如通過 override.conf批量修改配置):
# 先創(chuàng)建 override.conf 文件,內容為: # editorTheme.title=臨時測試環(huán)境 # httpNode.auth.user=test # 再通過 -D @file 加載該文件 node-red -D @/home/user/node-red-override.conf
?場景說明?:臨時測試配置(如 “臨時允許匿名訪問編輯器”“臨時修改 HTTP 節(jié)點的認證用戶”),無需修改
settings.js,測試完成后直接刪除參數即可恢復默認配置。
四、版本升級
sudo npm install -g --unsafe-perm node-red
到此這篇關于Node-Red的部署與啟動實現(xiàn)的文章就介紹到這了,更多相關Node-Red 部署與啟動內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nodejs環(huán)境實現(xiàn)socket通信過程解析
這篇文章主要介紹了Nodejs環(huán)境實現(xiàn)socket通信過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07
nodejs 整合kindEditor實現(xiàn)圖片上傳
這篇文章主要介紹了nodejs 整合kindEditor實現(xiàn)圖片上傳,需要的朋友可以參考下2015-02-02
node.js基于express使用websocket的方法
這篇文章主要介紹了node.js基于express使用websocket的方法,結合實例形式分析了node.js基于express調用websocket相關設置與使用操作技巧,需要的朋友可以參考下2017-11-11

