五、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架构下的方法也是一致的。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐