麒麟 Linux aarch64安装.NET 6,并适配.net应用(达梦数据库)

发布时间:2026/7/21 7:05:54

麒麟 Linux aarch64安装.NET 6,并适配.net应用(达梦数据库) 麒麟 Linux aarch64安装.NET 6并适配.net应用(达梦数据库)适用环境麒麟 Linux aarch64达梦(DM)数据库.NET 6。部署目录约定.NET 运行时/home/hmf/dotnet应用本体/home/hmf一、安装.NET6运行环境wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.shchmod x dotnet-install.sh# 不加 --runtime 参数 装完整 SDK含编译工具链 对应运行时./dotnet-install.sh --channel 6.0 --install-dir /home/hmf/dotnet# 配置环境变量安装在用户目录下写入 ~/.bashrc 即可不需要 rootecho export DOTNET_ROOT/home/hmf/dotnet ~/.bashrcecho export PATH$PATH:/home/hmf/dotnet ~/.bashrcsource ~/.bashrc##验证版本dotnet --infodotnet --list-sdks # 应该能看到 6.0.xdotnet --list-runtimes # 应该能看到 Microsoft.AspNetCore.App 6.0.x 和 Microsoft.NETCore.App 6.0.x离线环境连不了外网改成下载dotnet-sdk-6.0.x-linux-arm64.tar.gzdotnet.microsoft.com传到 tidb 后解压到/home/hmf/dotnet其余步骤一样。#检查版本Version: 6.0.36二、适配应用2.1、准备达梦驱动达梦官网www.dameng.com下载中心用达梦通行证账号登录后下载.NET驱动包文件名类似dotNet-日期.zip解压后会看到几个文件夹比如dmDriver/DmProvider/ - 这个就是我们要用的DM.DmProvider.8.3.1.51364.nupkg - 真正的 NuGet 包文件net40/ net45/ net5.0/ net6.0/ ... - 包展开后按目标框架分的 lib 目录不用管EFCore.Dm6.0/ - Entity Framework Core 驱动本项目用不到不用管把DmProvider这个文件夹整个传到目标机比如放在/home/hmf/dmDriver/DmProvider。注册为本地 NuGet 源dotnet nuget add source /home/hmf/dmDriver/DmProvider --name dm-local如果提示dm-local这个名字已经存在比如之前加过、指向了别的路径改用dotnet nuget update source dm-local --source /home/hmf/dmDriver/DmProvider确认一下dotnet nuget list source# dm-local 那一行应该显示 /home/hmf/dmDriver/DmProvider2.2、加到项目里cd /home/hmf/TestAppdotnet add package DM.DmProvider --version 8.3.1.51364 -s /home/hmf/dmDriver/DmProvider会自动把PackageReference IncludeDM.DmProvider Version8.3.1.51364 /写进TestApp.csproj不用手动改文件。换了机器部署时这一步下载驱动 注册本地源 add package都要重新做一遍因为dotnet nuget add source是注册在当前机器的全局 NuGet 配置里的不会跟着项目代码一起传过去。2.3、还原依赖并编译cd /home/hmf/TestAppdotnet build -c Release2.4、 修改数据库连接配置编辑/home/hmf/TestApp/appsettings.json{ConnectionStrings: {DmConn: Server达梦库地址;Port端口默认5236;User Id用户名;PWD密码;},Kestrel: {Endpoints: {Http: {Url: http://0.0.0.0:8089}}}}监听地址建议用0.0.0.0监听所有网卡而不是写死具体 IP机器换 IP 或有多网卡时更省心。2.5、 运行前先验证数据库网络连通性telnet 达梦库地址 5236# 或nc -zv 达梦库地址 5236有disql等达梦客户端工具的话也可以直接拿账号密码连一下确认OK 之后再启动本应用避免网络问题和应用层报错混在一起排查。2.7、发布并直接运行验证cd /home/hmf/TestAppdotnet publish -c Release -o /home/hmf/TestApp/outcd /home/hmf/TestApp/outdotnet TestDmPlugin.dll看到类似输出说明启动成功Now listening on: http://0.0.0.0:8089Application started. Press CtrlC to shut down.浏览器访问http://10.1.1.229:8089/应看到 select/other 两个 SQL 输入框的界面测试 SQL 确认能正常连上达梦库并返回结果。CtrlC停止后继续第 8 步配置为系统服务长期运行。查看日志页面每次点击execSelect/execOther执行 SQL都会记录一条日志请求的 SQL、成功返回行数/影响行数、或失败时的异常堆栈写入运行目录下的logs文件夹按天滚动/home/hmf/TestApp/out/logs/app-20260720.log日志目录可通过appsettings.json里的Logging:LogDirectory配置默认值logs相对可执行文件所在目录也可以填绝对路径。前台运行第7步和 systemd 服务第8步用的是同一份代码都会写这个日志文件跟终端输出/journalctl是两份独立的记录互不影响。排查问题时优先看这个文件比journalctl更完整包含每次 SQL 请求明细。tail -f /home/hmf/TestApp/out/logs/app-$(date %Y%m%d).log三、配置systemd服务和开放端口3.1、置systemd服务创建/etc/systemd/system/testapp.service[Unit]DescriptionTestApp DM Plugin TestAfternetwork.target[Service]WorkingDirectory/home/hmf/TestApp/outExecStart/home/hmf/dotnet/dotnet /home/hmf/TestApp/out/TestDmPlugin.dllRestartalwaysRestartSec5KillSignalSIGINTSyslogIdentifiertestappUserhmfEnvironmentASPNETCORE_ENVIRONMENTProduction[Install]WantedBymulti-user.target启用并启动systemctl daemon-reloadsystemctl enable testappsystemctl start testappsystemctl status testapp查看日志journalctl -u testapp -f除了 journald应用自身还会把日志写入文件详见下方「日志文件」一节路径固定在/home/hmf/TestApp/out/logs/不受 systemd/前台运行方式影响且不会随终端关闭或服务重启丢失。后续改了代码重新发布只需要cd /home/hmf/TestAppdotnet publish -c Release -o /home/hmf/TestApp/outsystemctl restart testapp3.2、开放防火墙端口# firewalldfirewall-cmd --permanent --add-port8089/tcpfirewall-cmd --reload# 或 iptablesiptables -I INPUT -p tcp --dport 8089 -j ACCEPT四、常见问题现象可能原因处理dotnet build/dotnet add package报找不到 SDK只装了 Runtime没装 SDK回到第 1 步用不带--runtime的命令装完整 SDKdotnet add package DM.DmProvider报NU1101/找不到包本地 NuGet 源没注册对或路径指错了dotnet nuget list source确认dm-local指向的路径就是DmProvider那个文件夹里面直接能看到.nupkg文件的那一层编译报warning MSB3245: Could not locate the assembly DmProvidercsproj里残留旧的Reference HintPath...写法打开TestApp.csproj删掉Reference IncludeDmProvider那一整段只留PackageReference IncludeDM.DmProvider ...连接达梦库报错/超时连接串错误、网络不通、达梦库未开放对应端口先做第 6 步的网络连通性验证检查appsettings.json连接串页面打不开端口未监听/防火墙未放行/进程未启动ss -lntp \| grep 8089确认监听检查systemctl status testapp和防火墙规则中文乱码精简版系统缺少区域/编码支持确认系统已装localezh_CN.UTF-8权限不足无法监听端口非 root 用户尝试监听 1024 以下端口用 1024 以上端口已经是 8089没问题或给可执行文件加setcap cap_net_bind_serviceep五、其他达梦驱动下载达梦官方下载平台离线内网用下载完整 ARM 驱动包主下载页官方入口https://eco.dameng.com/download/两种下载方式获取.NET 驱动下载 DM8 ARM64 开发版安装包推荐CPU 平台鲲鹏 920aarch64/ARM 通用系统银河麒麟 / 统信 UOS下载后解压 / 安装路径dmdbms/drivers/dotNet/内含Dameng.Data.Provider.8.x.x.nupkg离线安装包2、页面底部【工具与驱动】单独下载.NET 驱动下滑页面找到「.NET 开发包」直接下载对应 DM8 版本驱动压缩包。本次我下载的是这个。下载的文件包为dotNet-20260710.zip

相关新闻