Node Red 在windows中开发的节点在linux设备中安装

本文详细介绍了一种利用Node-RED的HTTP节点实现从Windows端向Linux设备远程上传并安装自定义节点的方法,解决了运维人员操作复杂的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客迁移

不恰饭的小站

1 问题 在Node Red开发过程中会有自定义节点的开发,

相关开发的规范可见官方文档
https://nodered.org/docs/creating-nodes/

在完成节点开发后,代码目录大体如下

为了将节点安装到Linux设备中,通常通过FTP TFTP SFTP
等协议将升级包放入到设备中,在设备中执行命令行。这种方式对于开发人员来讲没有什么难度,但对运维人员操作较困难,因此需要找到一种对运维人员友好的方式进行设备升级,这是这篇文档要解决的。

2 解决思路 设备中装有NodeRed,可利用NodeRed

的Http节点建立服务器,客户端(Windows)将文件上传到设备中,设备接收完文件后,利用Function、exec节点调用sh脚本,实现设备节点升级

3 实施 ## 3.1 window 端 ### 3.1.1 使用NodeJs编写Http上传文件程序 核心代码如下:

引用自
https://www.cnblogs.com/motadou/p/3790018.html

    var boundary = "NODEJSPOSTFILE-" + (Math.random() * 9017189554344922).toString(36);

    var sHeader = "--" + boundary + "\r\n";
    sHeader += "Content-Disposition: form-data; name=\"fileName\"; filename=\"" + sFileName + "\"\r\n";
    sHeader += "Content-Type: application/octet-stream\r\n\r\n";

    var sEndData = "\r\n--" + boundary + "--\r\n\r\n";

    var options = {
        hostname: hostIP,
        port: 1880,
        path: '/files',
        method: 'POST',
        headers: {
        }
    };

    var httpreq = http.request(options, function (httpres) {
        httpres.on('data', function (dataResponse) {
            if (dataResponse == "okay") {
                console.log("上传成功: " + dataResponse + ",请等待系统重启,重新加载节点");
            }
            else {
                console.log("上传失败: " + dataResponse);
            }

            process.stdin.resume();
        });
    });

    httpreq.setHeader('Content-Type', 'multipart/form-data; boundary=' + boundary + '');
    httpreq.setHeader('Content-Length', Buffer.byteLength(sHeader) + data.length + Buffer.byteLength(sEndData));

    httpreq.on('error', function (e) {
        console.log('错误problem with request: ' + e.message);
        callback(e);
        return;
    });

    httpreq.write(sHeader);
    httpreq.write(data);
    httpreq.write(sEndData);
    httpreq.end(); }

```在完成程序后,调用Js即可完成文件上传。

 ### 3.1.2 js打包成应用程序exe  但没有安装Node环境时,无法使用,对此,在网上找到了Js打包程序,分别测试了 《Bat
To Exe Converter》(Win10报毒)、PKG(最终使用)、NEXE(报nexe vcbuild.bat nosign
release x64 exited with code错误,Node版本不支持)等等,最后选择了PKG
 1. PKG 安装(网上有大量文档)
 

> https://github.com/vercel/pkg

 2. PKG 环境下载 在PKG打包过程中,需要下载fetched-v10.17.0-win-x64等文件,目录位置在C:\Users\XXXX\.pkg-cache\v2.6,如果通过应用程序自身下载,则会因网络位置断掉,此时使用手动方式安装,[https://github.com/vercel/pkg-fetch/releases](https://github.com/vercel/pkg-fetch/releases),找到对应的uploaded-v2.6-node-v10.17.0-win-x64,下载到C:\Users\XXXX\.pkg-cache\v2.6目录中,修改名称则可使用
 3.  打包 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623111443917.png)
 4.  最终可执行程序 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623111515416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)
在得到打包程序后,Windows端工作基本结束。    ## 3.2 设备端  设备端工作较为轻松,以配置NodeRed为主  ###
3.2.1 Window向linux设备上传升级包(Http)  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623112008955.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)
 
 1. 编辑Http in节点 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623112119684.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)
 2.  编辑Function函数,这里有一个小坑,在Function中无法使用require,需要在setting.js中配置,并使用global.get方法![在这里插入图片描述](https://img-blog.csdnimg.cn/2020062311230781.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623112143604.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)
 3.  编辑exec节点, 在这里,调用了一个脚本,脚本功能是通过 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020062311241630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4bXV5dQ==,size_16,color_FFFFFF,t_70)
### 3.2.2 设备使用脚本对设备进行升级  installpackage.sh脚本比较简单如下所示。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200623112631711.png)

这样,完成了windows中开发的节点在linux设备中的安装
### 安装与配置 MySQL #### 准备工作 为了在 Hadoop 的 node1 节点上成功安装并配置 MySQL,需先确认该节点的操作系统环境已准备好。通常情况下,在 Linux 发行版中操作更为常见。 #### 下载与安装 MySQL 可以通过包管理器来简化这一过程: 对于基于 Red Hat 的发行版(如 CentOS),命令如下: ```bash sudo yum install mysql-server ``` 对于 Debian 或 Ubuntu 系统,则应使用 apt-get 命令: ```bash sudo apt-get update && sudo apt-get install mysql-server ``` 完成上述命令后,MySQL 将被自动下载并安装到系统当中[^1]。 #### 初始化数据库服务 一旦安装完毕,初始化 MySQL 数据库非常重要。这一步骤会设置 root 用户密码和其他安全选项。 ```bash sudo /usr/bin/mysql_secure_installation ``` 此脚本引导用户通过一系列提示来增强 MySQL 的安全性,包括移除匿名账户、禁用远程 root 登录等措施。 #### 配置 MySQL 作为Hadoop组件的支持数据库 当 MySQL 成功运行之后,如果打算将其用于支持 Hive 或者其他 Hadoop 生态系统的工具时,还需要进一步调整其参数以适应大数据处理的需求。例如增加最大连接数 `max_connections` 和优化查询缓存机制等[^3]。 #### 修改防火墙规则允许外部访问(可选) 为了让其他机器能够访问这个 MySQL 实例,可能需要开放特定端口,默认是 3306。具体方法取决于使用的防火墙软件;如果是 firewalld 可以这样做: ```bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` #### 测试 MySQL 连接性 最后验证新安装的服务是否可以从网络上的其它主机正确访问是非常重要的。可以利用简单的客户端测试或者编写一个小的应用程序来进行这项检查[^2]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值