热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

物联网数据采集网关开发历程(三)

五、Linux部署说明网关内运行的是Linux系统(本文涉及的是Ubuntu系统,下文中所说的也都是基于Ubuntu系统)。由于AMD6

五、Linux部署说明

网关内运行的是Linux系统(本文涉及的是Ubuntu系统,下文中所说的也都是基于Ubuntu系统)。由于AMD64和ARM两种架构在部署的过程中差异较大,需要分开说明。


5.1 AMD64架构部署

.NET安装

在AMD64架构下,.NET的安装使用官方说明即可。

先运行:

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

再运行:

apt-get update
apt-get install -y apt-transport-https
apt-get update
apt-get install -y aspnetcore-runtime-6.0

复制系统编译文件

可以使用WinSCP工具,把系统编译文件复制到网关中。我们这里复制到/root/DataAcquisition目录下。

cd ~
mkdir DataAcquisition

编译SerialPortStream

数据采集网关,使用串口通信是很普遍的需求。但是.NET原生代码里没有可在Linux系统上运行的串口通信库。我们这里使用SerialPortStream进行替换。因为Linux系统各异,需要把SerialPortStream的C语言写的源代码编译一次,生成几个so文件,才能被C#代码调用。

安装编译环境:

apt-get install -y git
apt-get install -y build-essential
apt-get install -y cmake

下载和编译:

cd ~
git clone https://github.com/jcurl/serialportstream.git
cd serialportstream/dll/serialunix
./build.sh

最后,是复制生成的so文件到采集程序的根目录。

开机启动

对于一个网关程序来说,很重要的一点是开机启动。我们这里采用添加service,在service里调用sh脚本的方法。

编写如下所示的service文件:

[Unit]
Description=Start Program
After=syslog.target

[Service]
ExecStart=/root/DataAcquisition/start_program.sh

[Install]
WantedBy=multi-user.target

然后复制到/etc/systemd/system目录下。

我们还需要编写service里调用的start_program.sh文件。可以如下所示:

cd /root/DataAcquisition/MyProgram
dotnet MyProgram.dll

代码很简单,就是用dotnet启动我们写的程序。

注意在复制完文件之后,修改文件的权限。


5.2 ARM架构部署

在ARM架构下部署,相对来说是复杂一些的,因为软件厂商支持更多的是AMD64架构的。

调整镜像源

对于一般的下载源,在ARM架构下的源一般是不一样的,看官方的说明。例如对于清华Ubuntu源,要使用最下面提示的ubuntu-ports镜像。

 

.NET安装

在ARM架构下,一般只能使用比较原始的方法去安装.NET。

1、下载.NET-Linux-Arm的安装包。

2、复制到网关的某个位置。

3、解压。

4、设置dotnet环境变量。

复制系统编译文件

这一步跟在AMD64架构下的方法是一样的。

编译SerialPortStream

SerialPortStream的官方编译方法并不支持ARM架构,需要使用以下方法:

1、安装编译环境:

apt-get install make
apt-get install cmake
apt-get install gcc
apt-get install g++

2、复制源代码到网关中,进入serialunix目录。

3、执行以下代码:

cmake ./
make
make install

这样就能生成三个so文件,把它们复制到使用串口的程序根目录。

开机启动

这一步跟在AMD64架构下的方法也是一致的。


推荐阅读
author-avatar
手机用户2502881415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有