麒麟V10部署aspnetcore3.1应用
麒麟 V10 部署ASP.NET Core 3.1应用
服务器信息:
uname -sm
# Linux aarch64
目标服务器架构是linux aarch64,对应的.NET 运行时 为arm64。
1. 安装 ASP.NET Core 3.1 Runtime
考虑到将来会安装其他版本的.Net运行时,或者需要保留服务器上已经有的其他版本。并且,这里安装运行时仅用来启动ASP.NET Core 3.1项目。因此,只需要安装并创建一个dotnet31命令即可。
- 根据服务器因袭下载对应版本的安装包aspnetcore-runtime-3.1.32-linux-arm64.tar.gz
- 上传到
/opt/software/aspnetcore-runtime-3.1.32-linux-arm64.tar.gz - 切换到
root用户,之后的操作都以该身份执行:sudo -i - 创建安装目录:
mkdir -p /opt/dotnet/dotnet31 - 解压到安装目录:
tar -xzf /opt/software/aspnetcore-runtime-3.1.32-linux-arm64.tar.gz -C /opt/dotnet/dotnet31 - 创建
dotnet31命令:ln -s /opt/dotnet/dotnet31/dotnet /usr/local/bin/dotnet31 - 验证命令,在任意目录执行
dotnet31 --info,输出:It was not possible to find any installed .NET Core SDKs Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from: https://aka.ms/dotnet-download Host (useful for support): Version: 3.1.32 Commit: f94bb2c3ff .NET Core SDKs installed: No SDKs were found. .NET Core runtimes installed: Microsoft.ASP.NET Core.App 3.1.32 [/opt/dotnet/dotnet31/shared/Microsoft.ASP.NET Core.App] Microsoft.NETCore.App 3.1.32 [/opt/dotnet/dotnet31/shared/Microsoft.NETCore.App] To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
2. 部署应用
后端基于ASP.NET Core 3.1开发:
-
部署目录:
/opt/unidmrcore/multi-tenant/Release -
端口:
10005 -
部署方式:
systemd -
根据服务器版本,使用命令发布项目
dotnet publish -c Release -r linux-arm64 --no-self-contained:-c Release:发布为Release版本-r linux-arm64:linux平台aarm64架构--no-self-contained:我们已经安装了.NET 运行时,所以这里的自包含选项为false,将应用程序发布为依赖于框架的应用程序。
-
把项目文件上传并解压到部署目录下。
-
准备服务配置文件
/etc/systemd/system/unidmrcore_multi_tenant.service:tee /etc/systemd/system/unidmrcore_multi_tenant.service << 'EOF' [Unit] Description=unidmrcore_multi_tenant [Service] WorkingDirectory=/opt/unidmrcore/multi-tenant/Release ExecStart=dotnet31 MyWebApp.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=unidmrcore_multi_tenant User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=ASPNETCORE_URLS=http://*:10005 Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false # The default value is 90 seconds for most distributions. TimeoutStopSec=infinity [Install] WantedBy=multi-user.target EOF -
加载守护进程配置并启动应用
systemctl daemon-reload && systemctl start unidmrcore_multi_tenant.service- 如果需要设置开机启动:
systemctl status unidmrcore_multi_tenant.service
- 如果需要设置开机启动:
-
查看应用状态:
systemctl status unidmrcore_multi_tenant.service
看到有输出类似active (running)字样,则表示应用已启动。恭喜你,应用部署成功!
如果应用未能成功启动,则可以用journalctl -u unidmrcore_multi_tenant.service -f查看更多日志。也可以cd到部署目录,用dotnet31 MyWebApp.dll命令尝试在命令行直接启动项目,通过查看输出排查问题。

浙公网安备 33010602011771号