作者:手机用户2502881415 | 来源:互联网 | 2023-09-17 19:51
五、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架构下的方法也是一致的。