一个无人机平台+算法监督平台的离线部署指南

文档清单

表1 主应用清单

序号 名称 位置 IP 用途

表格内容隐藏
mqtt_for_airport.7z 机场、设备接入
FuyaAirportCenter.7z 机场对接
mongodb-org-server-4.2.3-1.el7.x86_64.rpm 数据库
ufss-enterprise.7z 无人机平台-业务模块
mqtt_ins_1.7z 内部通信
ins.7z Web客户端
nginx-http.7z Web静态容器
ufss-station.7z 无人机平台-算法管理模块
mqtt_uss_1.7z 内部通信
geoserver-2.14.0.7z.001 geoserver-2.14.0.7z.002 geoserver-2.14.0.7z.003 geoserver-2.14.0.7z.004GIS服务
Dependent.tar.gz Maps.tar.gz schedule.tar.gz 航线规划算法
视频web插件_V1.3.2_20190929.7z 视频播放插件

表2 第三方组件清单

序号 名称 位置 IP 用途

表格内容隐藏

表3端口列表

序号 端口 主机 开放策略 功能

表格内容隐藏

注意事项

(1)以下所有指令都以root权限执行;
(2)指令中涉及单引号的,注意务必输入单引号, 不能用双引号替代;
(3)如果某一项指令的结果与预期不符合,请停止指令输入,立即联系厂家;
(4)如果非实机操作,需要用到远程ssh工具, 例如xshell/xftp.
(5)进机房前需要把整个ufss文件夹拷入U盘, 以下操作都以U盘数据为前提

详细安装步骤

文件拷贝(所有主机)

目标主机: 所有
步骤:
首先切换到root账户,然后按顺序执行以下指令:
(1)创建用户:

groupadd russ useradd -g russ russ passwd **** 

输入密码, 例如alkdfjpoaewif123456
这样系统将自动创建/home/russ文件夹
(1)挂载U盘:

modprobe usb-storage fdisk -l 

(注意: 参数是小写的L, 不是数字1)
这一步需要根据显示结果找到U盘对应的卷标, 例如我的U盘空间32G,可以确定就是下图的/dev/sdb4:

如果是其它卷标, 那么以下指令中/dev/sdb4需要被替换为实际卷标

mkdir /mnt/usb mount /dev/sdb4 /mnt/usb 

(2)拷贝文件

mkdir /home/russ/file cp -R /mnt/usb/ufss /home/russ/file chown -R russ:russ /home/russ/file/* cd /home/russ/file/ufss umount /dev/sdb4 

安装基础组件(所有主机)

目标主机: 所有
(1)安装7zip

cd /home/russ/file/ufss tar -zxvf p7zip.tar.gz chmod +x 7z/bin/* mv 7z /usr/local echo -e '\nexport PATH=$PATH:.:/usr/local/7z/bin'>> /etc/profile exportPATH=$PATH:.:/usr/local/7z/bin 7za a 

出现以下结果表示安装成功:

在这里插入图片描述

(2)安装base

cd /home/russ/file/ufss 7za x base.7z cd base rpm -Uvh *.rpm --nodeps --force cd.. cmake --version 

出现以下结果表示安装成功:

在这里插入图片描述

(3)安装gcc-centos

cd /home/russ/file/ufss 7za x gcc-centos.7z cd gcc-centos rpm -Uvh *.rpm --nodeps --force cd.. gcc -v 

出现以下结果表示安装成功:

在这里插入图片描述

(4)安装java

cd /home/russ/file/ufss tar -zxvf jdk-8u241-linux-x64.tar.gz chmod +x jdk1.8.0_241/bin/* chmod +x jdk1.8.0_241/jre/bin/* chmod +x jdk1.8.0_241/lib/jexec mkdir /usr/local/java mv jdk1.8.0_241 /usr/local/java echo -e '\nexport JAVA_HOME=/usr/local/java/jdk1.8.0_241\nexport JRE_HOME=${JAVA_HOME}/jre\nexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib\nexport PATH=$PATH:${JAVA_HOME}/bin'>> /etc/profile source /etc/profile java -version 

出现以下结果表示安装成功:

在这里插入图片描述

(5)安装python

cd /home/russ/file/ufss 7za x python3.7z chmod +x python3/bin/* chmod +x python3/lib/*.a chmod +x python3/lib/python3.7/*.py mv python3 /usr/local/ echo -e '\nexport PATH=/usr/local/python3/bin:$PATH\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64:/usr/local/lib:.:/usr/local/python3/lib\n'>> /etc/profile echo -e '\n/usr/local/python3/lib\n'>> /etc/ld.so.conf source /etc/profile ldconfig python3 -V 

出现以下结果表示安装成功:

在这里插入图片描述

安装机场对接服务(ip:xxx)

目标主机: xxx
步骤:
(1)安装并启动mqtt

cd /home/russ/file/ufss 7za x mqtt_for_airport.7z mv emqx2 /home/russ/emqx2 cd /home/russ/emqx2/bin chmod +x * ./emqx start netstat -anp |grep21883

看到如下图示表示启动成功:

在这里插入图片描述

(2)安装并启动机场对接服务

cd /home/russ/file/ufss 7za x FuyaAirportCenter.7z mv FuyaAirportCenter /home/russ cd /home/russ/FuyaAirportCenter chmod +x airport_center chmod +x *.sh ./start_airport_loop.sh &

启动成功后将会有相应日志输出, 或者直接到log文件夹查看日志

(3)配置开机启动

echo -e '\n\n/home/russ/emqx2/bin/startup.sh'>> /etc/rc.local echo -e '\n/home/russ/FuyaAirportCenter/start_airport_loop.sh &'>> /etc/rc.local chmod +x /etc/rc.local 

(4)开启防火墙

firewall-cmd --permanent --add-port=1883/tcp firewall-cmd --permanent --add-port=8083/tcp firewall-cmd --permanent --add-port=21883/tcp firewall-cmd --permanent --add-port=28083/tcp firewall-cmd --permanent --add-port=12345/tcp 

(5)日志说明
FuyaAirportCenter产生的日志在当前工作目录下log子目录, 每次运行将会产生一个日志文件.

3.4.安装无人机作业平台(ip:yyy)
目标主机: yyy
(1)安装内部通信组件

cd /home/russ/file/ufss 7za x mqtt_ins_1.7z mv emqx /home/russ/emqx cd /home/russ/emqx/bin chmod +x * ./emqx start netstat -anp |grep1883

看到如下图示表示启动成功:

在这里插入图片描述

(2)安装数据库

cd /home/russ/file/ufss rpm -ivh mongodb-org-server-4.2.3-1.el7.x86_64.rpm service mongod start netstat -anp |grep27017

如下图表示启动成功:

在这里插入图片描述

(3)安装无人机作业平台服务

cd /home/russ/file/ufss 7za x ufss-enterprise.7z mv ufss-enterprise /home/russ/ cd /home/russ/ufss-enterprise chmod +x ufss-enterprise.sh ./ufss-enterprise.sh netstat -anp |grep18196

如下图表示启动成功:

在这里插入图片描述

(4)安装客户端容器

cd /home/russ/file/ufss 7za x nginx-http.7z chmod +x nginx-http/sbin/* mv nginx-http /usr/local 

(5)安装客户端静态页面

cd /home/russ/file/ufss 7za x ins.7z mv ins /usr/local/nginx-http/html cd /usr/local/nginx-http chmod +x sbin/* ./sbin/nginx -c ./conf/nginx.conf netstat -anp |grep :80 

如下图表示启动成功:

在这里插入图片描述

(6)配置开机启动

echo -e '\n\n/home/russ/emqx/bin/startup.sh'>> /etc/rc.local echo -e '\nservice mongod start'>> /etc/rc.local echo -e '\n/home/russ/ufss-enterprise/ufss-enterprise.sh'>> /etc/rc.local echo -e '\n/usr/local/nginx-http/startup.sh'>> /etc/rc.local chmod +x /etc/rc.local 

(7)开启防火墙

firewall-cmd --permanent --add-port=1883/tcp firewall-cmd --permanent --add-port=8083/tcp firewall-cmd --permanent --add-port=18196/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=27017/tcp 

(8)日志说明
无人机平台ufss-enterprise产生的日志在当前工作目录下logs子目录, 日志文件名为enterprise.log. 超过24M后自动打包归档.

3.5.安装算法监管平台(ip:zzz)
目标主机: zzz
(1)安装内部通信组件

cd /home/russ/file/ufss 7za x mqtt_uss_1.7z mv emqx /home/russ/emqx cd /home/russ/emqx/bin chmod +x /home/russ/emqx/bin/* ./emqx start netstat -anp |grep1883

看到如下图示表示启动成功:

在这里插入图片描述

(2)安装算法监管平台服务

cd /home/russ/file/ufss 7za x ufss-station.7z mv ufss-station /home/russ/ cd /home/russ/ufss-station chmod +x ufss-station.sh ./ufss-station.sh netstat -anp |grep18190

如下图所示表示启动成功:

在这里插入图片描述

(3)配置开机启动

echo -e '\n\n/home/russ/emqx/bin/startup.sh'>> /etc/rc.local echo -e '\n/home/russ/ufss-station/ufss-station.sh'>> /etc/rc.local chmod +x /etc/rc.local 

(4)开启防火墙

firewall-cmd --permanent --add-port=1883/tcp firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --permanent --add-port=18190/tcp 

(5)日志说明
无人机平台ufss-station产生的日志在当前工作目录下logs子目录, 日志文件名为station.log. 超过24M后自动打包归档.

算法与GIS安装(ip:zzz)

创建用户

groupadd uav
useradd -g uav uav
passwd ****
输入密码,例如asdfafeewaf2018

安装GIS服务平台

目标主机: zzz
步骤:

cd /home/russ/file/ufss 7za x geoserver-2.14.0.7z.001 rm -rf geoserver-2.14.0/bin/guardGis.sh cp guardGis.sh geoserver-2.14.0/bin/ chown -R uav:uav geoserver-2.14.0 chmod +x geoserver-2.14.0/bin/*.sh find -type f|xargschmod644 geoserver-2.14.0 find -type d|xargschmod755 geoserver-2.14.0 mv geoserver-2.14.0 /home/uav cd /home/uav/geoserver-2.14.0/bin/ ./guardGis.sh &netstat -anp |grep8080

如下图所示表示启动成功:

在这里插入图片描述

配置开机自启动:

echo -e '\n/home/uav/geoserver-2.14.0/bin/guardGis.sh &' >> /etc/rc.local chmod +x /etc/rc.local 

4.3.安装算法服务平台
目标主机: zzz
步骤:

cd /home/russ/file/ufss tar -zxvf Dependent.tar.gz tar -zxvf Maps.tar.gz tar -zxvf schedule.tar.gz mkdir /gis mv Maps /gis mv Dependent /home/uav chmod +x /home/uav/Dependent/gdal/bin/* chmod +x /home/uav/Dependent/OpenBLAS/bin/* echo -e '\nPATH=$PATH:/home/uav/Dependent/gdal/bin\n'>> /etc/profile echo -e '\nLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/uav/Dependent/gdal/bin:/home/uav/Dependent/gdal/lib:/home/uav/Dependent/arma/usr/lib64:/home/uav/Dependent/OpenBLAS/lib\n'>> /etc/profile source /etc/profile gdalinfo --version echo -e '\n/usr/lib\n/usr/local/lib\n/home/uav/schedule/Audit\n/home/uav/schedule/Route\n/home/uav/schedule/RouteNet\n/home/uav/Dependent/OpenBLAS/lib\n/home/uav/Dependent/gdal/lib\n/home/uav/Dependent/arma/usr/lib64'>> /etc/ld.so.conf ldconfig mv schedule /home/uav cd /home/uav/schedule/Main chmod +x Traffic chmod +x guardSchedule.sh ./guardSchedule.sh &

出现如下控制台输出,则安装成功

在这里插入图片描述

配置开机自启动:

echo -e '\n/home/uav/schedule/Main/guardSchedule.sh &'>> /etc/rc.local chmod +x /etc/rc.local 

安全防护通用操作

防火墙

(1). 永久性开启和关闭防火墙. 重启后生效
开启:systemctl enable firewalld.service
关闭:systemctl disable firewalld.service

(2). 临时开启和关闭防火墙,重启后失效
开启:systemctl start firewalld
关闭:systemctl stop firewalld

(3).查看防火墙状态
firewall-cmd --state
(4).重启防火墙
systemctl restart firewalld
(5).开放一个端口, 例如80
firewall-cmd --permanent --add-port=80/tcp
开放多个端口, 例如10000~20000
firewall-cmd --permanent --add-port=10000-20000/tcp

(6).关闭一个端口, 例如80
firewall-cmd --permanent --remove-port=80/tcp
关闭多个端口, 例如10000~20000
firewall-cmd --permanent --remove-port=10000-20000/tcp

(7).查看端口开放情况
firewall-cmd --permanent --list-ports

5.2.selinux
(1). 永久性开启和关闭selinux. 重启后生效
开启:
echo 'SELINUX=enforcing\nSELINUXTYPE=targeted' > /etc/selinux/config
关闭:
echo 'SELINUX=disabled\nSELINUXTYPE=targeted' > /etc/selinux/config

(2). 临时开启和关闭selinux,重启后失效
开启:setenforce 1
关闭:setenforce 0

(3).查看selinux状态
getenforce
输出Enforcing表示运行中;输出Permissive表示已停止

Read more

Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获

Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 super_log 的鸿蒙化适配指南 - 实现极具视觉冲击力的彩色终端日志、支持动态过滤与全局异常捕获 前言 在进行 Flutter for OpenHarmony 的日常开发调试时,面对控制台里密密麻麻、死板单调的白色日志,开发者很容易在大海捞针般的排错过程中产生疲劳。super_log 是一个专注于日志可视化体验的增强库。它通过丰富的配色方案和清晰的结构化打印,让鸿蒙控制台里的每条日志都具备“辨识度”。本文将介绍如何在鸿蒙端利用 super_log 让你的代码“自白”得更加生动。 一、原理解析 / 概念介绍 1.1 基础原理 super_log 基于终端的 ANSI 颜色转义序列。它通过解析日志级别,并在输出字符串中自动嵌入特定的颜色代码。同时,它还内置了美观的边框修饰符(Box

By Ne0inhk
Flutter for OpenHarmony:Flutter for OpenHarmony:watcher 文件系统实时监控(热重载与自动化工具的基石) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:Flutter for OpenHarmony:watcher 文件系统实时监控(热重载与自动化工具的基石) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在开发 CLI 工具、热重载引擎或者文件同步应用时,我们需要实时知道:“哪个文件被修改了?”。 虽然 dart:io 的 FileSystemEntity.watch() 提供了基础监控,但它在不同 OS 上的表现并不一致, API 也较为底层。 watcher 库提供了一套统一的高层 API 来监控文件系统的变化(Added, Modified, Removed)。它能够智能处理目录递归、事件去抖(Debouncing)以及不同平台的差异。 对于 OpenHarmony 开发者,如果你计划开发运行在鸿蒙上的开发辅助工具、日志收集器或者本地文件同步助手,watcher 是必不可少的。 一、核心原理 watcher 采用轮询(Polling)或原生事件(Native Events)

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 intersperse 优雅在鸿蒙列表项间插入间隔或装饰(UI 细节处理助手)

Flutter for OpenHarmony: Flutter 三方库 intersperse 优雅在鸿蒙列表项间插入间隔或装饰(UI 细节处理助手)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 应用的 UI 设计中,我们经常需要在列表(List)或一排组件(Column/Row)之间插入特定的元素,例如: 1. 在一排按钮中间插入分隔线。 2. 在列表数据项之间插入间隙(Spacing)。 3. 为每个组件之间添加逗号或其他符号。 常见的做法是手写 for 循环并通过索引判断。但这种方式不仅代码丑陋,且在处理动态列表时极其容易出错(例如忘记最后一个元素不加分隔符)。 intersperse 是一个极简的扩展库。它通过为 Iterable 增加一个极其直观的方法,彻底解决了“元素间插入”这一烦人的小问题。 一、核心操作图解 intersperse 提供了一种“无感插入”的流式处理方式。 [A, B, C] (原始数据) intersperse(

By Ne0inhk
Flutter 组件 activity_files 适配鸿蒙 HarmonyOS 实战:文件活动流治理,构建高性能存储沙箱访问与资产全生命周期管理架构

Flutter 组件 activity_files 适配鸿蒙 HarmonyOS 实战:文件活动流治理,构建高性能存储沙箱访问与资产全生命周期管理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 activity_files 适配鸿蒙 HarmonyOS 实战:文件活动流治理,构建高性能存储沙箱访问与资产全生命周期管理架构 前言 在鸿蒙(OpenHarmony)生态迈向全场景分布式协同、涉及海量多媒体资产处理及严苛应用沙箱(Sandbox)隔离的背景下,如何实现一套既能穿透复杂的层级目录、又能实时追踪文件变更活动且具备极高 I/O 吞吐能力的存储治理架构,已成为决定应用性能广度与数据安全深度。在鸿蒙设备这类强调 AOT 极致性能与受限文件权限周期的环境下,如果应用依然采用陈旧的同步文件读取或缺乏活动追踪的直接 I/O,由于由于频繁的磁盘竞争,极易由于由于“主线程阻塞”或“资产状态不同步”导致用户在管理大型媒体库时发生明显的感知性卡顿。 我们需要一种能够解耦文件路径、支持异步流式追踪(Activity Tracking)且符合鸿蒙分布式文件系统安全范式的操作框架。 activity_files 为 Flutter 开发者引入了“

By Ne0inhk