前面讲到了:
一个月玩转MQTT(篇二:部署阿里云服务器和EMQX)-CSDN博客
一个月玩转MQTT(篇三:测试EMQX)-CSDN博客
一个月玩转MQTT(篇四:移远EC200U模块MQTT连接测试)-CSDN博客
一个月玩转MQTT(篇五:开发自己的MQTT WEB页面)-CSDN博客
想想,从2月12日腊月二十五中午春节放假开始,回到家,就写“篇二”,今天2月15日腊月二十八已经写到“篇六”了,感觉自己还挺拼的。
没挣到500万前,就继续和各位共勉吧!
下面开始吧!
如果将上一篇做好的ASP.NET项目发布到阿里云 Ubuntu 服务器上,那么我们就可以利用公网IP,使用红衣大叔周鸿祎的360浏览器远程浏览我们的网页了,通过网页就可以看到我们传感器的实时数据了。
步骤 1:在 VS2022 中发布项目
右键项目→「发布」→ 选择「文件夹」→ 下一步 → 发布;
这一步的目的是将项目编译并打包成一个独立的、可在 Linux 上运行的文件集合,输出到你本地 Windows 电脑的一个文件夹里。

注意:发布配置里「部署模式」选「依赖框架 (Framework-dependent)」。目标运行时要选择 linux-x64,因为我们是要在阿里云的ubuntu服务器上运行哦。
步骤 2:将发布文件上传到阿里云服务器
1、首先,远程连接阿里云服务器。
2、在服务器opt目录下,创建一个SensorMqttDashboard文件目录。使用命令:
sudo mkdir -p /opt/SensorMqttDashboard

已经创建的文件夹可以在“文件管理”栏查看。

3、将本地"E:\\一个月玩转MQTT\\SensorMqttDashboard\\bin\\Release\\net8.0\\publish"中的所有文件上传到服务器的/opt/SensorMqttDashboard目录。
在你的 Windows 11 电脑上,打开 PowerShell 或 命令提示符 (CMD)。输入以下命令:
scp -r E:\\一个月玩转MQTT\\SensorMqttDashboard\\bin\\Release\\net8.0\\publish\\* root@101.201.110.35:/opt/SensorMqttDashboard/
开始传输文件。
# 我使用的命令是这个
scp -o StrictHostKeyChecking=no -r E:\\一个月玩转MQTT\\SensorMqttDashboard\\bin\\Release\\net8.0\\publish\\* root@101.201.110.56:/opt/SensorMqttDashboard/

上图中可以看到传输的文件和文件大小。
在云服务器中我们可以查看已发布的文件:
步骤 3:服务器安装.NET 8 运行时
1、服务器上,ASP.NET项目需要.NET 运行时才能运行:
# 安装.NET 8运行时
sudo apt-get update
sudo apt-get install -y dotnet-runtime-8.0
# 验证安装(显示版本则成功)
dotnet –version
2、安装 ASP.NET Core 8.0 运行时。对于ASP.NET Core Web 应用,需要专门的 ASP.NET Core 运行时。
sudo apt update && sudo apt install -y aspnetcore-runtime-8.0
步骤4:启动项目
cd /opt/SensorMqttDashboard
./SensorMqttDashboard –urls=http://0.0.0.0:5000
运行结果如下:

上图表示:
- MQTT客户端已连接到 你的阿里云服务器公网IP:1883,订阅主题:sensor/inclination/# → MQTT 功能正常,和 EMQX 对接成功;
- Now listening on: http://0.0.0.0:5000 → Web 服务已监听所有网卡的 5000 端口,公网可访问;
- Application started. Press Ctrl+C to shut down. → 项目完全启动,无任何报错。
另外,补充一点:
因为EMQX和ASP.NET WEB项目共用服务器,为避免启动项目占用过多内存,也可以在启动WEB项目时,加内存限制 < 200M。
./SensorMqttDashboard –urls=http://0.0.0.0:5000 –memory-limit 200mb
也可配置 EMQX 内存上限:编辑 /etc/emqx/emqx.conf,添加 node.process_limit = 1024 和 node.max_heap_size = 512MB,限制 EMQX 内存占用。
步骤5:查看网页
好啦,最后临门一脚!就快大功告成了。
我们公网访问地址是http://101.201.110.56:5000。所以要开发端口。
在阿里云服务器上,开放5000端口。

在服务器控制台,允许5000端口
sudo ufw allow 5000/tcp
好吧,重新启动项目(命令:./SensorMqttDashboard –urls=http://0.0.0.0:5000),这就测试一下吧。
打开浏览器,输入:http://101.201.110.56:5000,您就可以在全中国的任何地方访问了。由于保密原因,101.201.110.56这个IP地址是假的。

步骤6:配置开机自启动
另外,需要配置开机自启(systemd,生产环境必做)
1、创建服务文件
# 创建 systemd 服务文件
sudo vi /etc/systemd/system/sensormqttdashboard.service
2、按 i 进入编辑模式,粘贴以下配置(要根据你自己的项目定启动配置)
[Unit]
Description=SensorMqttDashboard
After=network.target emqx.service
[Service]
WorkingDirectory=/opt/SensorMqttDashboard
ExecStart=/opt/SensorMqttDashboard/SensorMqttDashboard –urls=http://0.0.0.0:5000
Restart=always # 崩溃自动重启
RestartSec=5 # 重启间隔5秒
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production # 生产环境
[Install]
WantedBy=multi-user.target
3、输入:wq保存修改并退出

4、重新加载并启用服务
# 1. 重新加载 systemd 配置
sudo systemctl daemon-reload
# 2. 启动服务
sudo systemctl start sensormqttdashboard.service
# 3. 设置开机自启
sudo systemctl enable sensormqttdashboard.service
# 4. 查看服务状态(确认是否运行正常)
sudo systemctl status sensormqttdashboard.service
# 5. 验证开机自启是否生效
sudo systemctl is-enabled sensormqttdashboard.service
运行结果:如果状态显示 active (running),说明服务配置和启用都成功了。

ok!
这样,我们就讲完了如何构建一个公网web网页来建立与EMQX的MQTT连接,正儿八经可以用来展示来自4G通信的传感器的数据了。
下一篇,我们就开始在讲解如何通过硬件EC200发送消息,在服务器的WEB页面显示传感器数据!!!
其他:可能会用到的命令:
# 一键清空当前目录下的所有内容(包括文件、子文件夹)
sudo rm -rf /opt/SensorMqttDashboard/*
# 验证:再次查看,目录为空
ls -la
网硕互联帮助中心







评论前必须登录!
注册