架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4896|回复: 3

[资料] 【实战】ASP.NET Core 6 部署在 ARM 树莓派实现 DDNS 和网络唤醒

[复制链接]
发表于 2022-3-9 22:36:53 | 显示全部楼层 |阅读模式
家里有个树莓派3B(Raspberry Pi 3B Arm 架构 32 位),放在家里一直在吃灰,由于 .NET Core 程序能跨平台,所以准备写个网站部署到树莓派上面。家里宽带有公网 IP 地址,但是每次重启路由器后 IP 地址都会发生变化,华硕路由器的免费 DDNS 并不太好用(家里 IP 变了,域名解析并没有及时生效)。家里有台 DELL 台式机和 DELL EMC 服务器,所以,准备使用 ASP.NET Core 写一个 DDNS 服务和在线网络唤醒工具。

有了 DDNS 可以及时的获取到家里的外网 IP 地址,使用网络唤醒功能可以唤醒我的 DELL 台式机电脑,方便查阅家中资料。

使用 ASP.NET Core 6 写的网站部署在树莓派已经稳定运行 3 个多月了,没有任何问题。

QQ图片20220309221353.jpg

安装 AspNetCore 运行时

首先,树莓派需要安装 Raspberry Pi OS 系统,教程如下:

树莓派3B(Raspberry Pi 3B)安装 Raspberry Pi OS 系统
https://www.itsvse.com/thread-10052-1-1.html

然后在树莓派上面安装 AspNetCore Runtimes,使用 SSH 登录到树莓派主机中,使用 sudo -i 切换到 root 权限下,创建 /usr/dotnet 文件夹,命令如下:

下载 aspnetcore-runtime-6.0.1-linux-arm.tar.gz 并解压,命令如下:

创建软链接,命令如下:

至此,ASP.NET Core 网站所需要的运行环境安装完毕,查看安装的运行时,如下图:

QQ截图20220309220641.jpg

DDNS 动态域名服务

调用 DNSPod 的接口来实现 DDNS 动态域名服务,接口文档:https://docs.dnspod.cn/api/modify-records/

使用 VS 2022 新建一个 ASP.NET Core 6 的 MVC 项目,新建 DNSPodOptions.cs 文件配置调用接口所需的参数,如下:

appsettings.json 添加如下配置:

修改 Program.cs 文件,将配置信息映射到 DNSPodOptions 类,代码如下:

新建 DDNSWorker.cs 文件,创建后台服务,一分钟获取一次 IP 地址,如果 IP 地址有发生变化,则调用 DNSPod 的接口来更新域名解析。(注意:如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改。比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。)

代码如下:

修改 Program.cs 文件,注册后台服务,代码如下:

完整的 Program.cs 代码,如下:


调试程序,可以正常调用 DNSPod 的接口,如下:
QQ截图20220309214427.jpg

网络唤醒(Wake On LAN)

Wake-on-LAN简称WOL或WoL,中文多译为“网上唤醒”、“远程唤醒”技术。WOL是一种技术,同时也是该技术的规范标准,它的功效在于让已经进入休眠状态或关机状态的计算机,透过局域网(多半为以太网)的另一端对其发令,使其从休眠状态唤醒、恢复成运作状态,或从关机状态转成引导状态。此外,与WOL相关的技术也包括远程下令关机、远程下令重启等相关的遥控机制。

修改 HomeController 控制器,添加网络唤醒的接口,代码如下:


编辑 Index.cshtml 页面,添加 MAC 地址输入框和按钮,使用 Ajax 调用接口,代码如下:

启动项目,如下图:

QQ截图20220309222856.jpg

部署在树莓派

使用 VS 2022 发布项目,将发布包上传到树莓派的 /home/pi/wol 文件夹下面,如下图:


QQ截图20220309223130.jpg

在 /etc/systemd/system 文件夹下面新建 nbddns.service 文件,将项目注册成 Linux 服务,如下:

启动 nbddns 服务,并设置开机自启动,命令如下:

查看服务状态,如下图:

QQ截图20220309223535.jpg

最后,在路由器设置端口映射,然后通过域名和映射的外网端口访问,我手机使用 4G 网络,直接可以访问到部署在树莓派上面的 ASP.NET Core 应用,如下图:

QQ截图20220310074139.jpg

(完)





上一篇:ASP.NET Core(十一)端点路由添加中间件显示所有 DI 服务
下一篇:Linux ssh: command not found
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-10 11:16:19 | 显示全部楼层
看得出来吃了不少灰
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-12 15:17:50 | 显示全部楼层
又来学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-9-23 09:25:26 | 显示全部楼层
Linux systemd 服务管理器详解
https://www.itsvse.com/thread-10178-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-17 03:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表