麒麟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-arm64linux平台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命令尝试在命令行直接启动项目,通过查看输出排查问题。

posted @ 2026-06-22 16:08  Theo·Chan  阅读(5)  评论(0)    收藏  举报