zoukankan      html  css  js  c++  java
  • .NET Core App部署Linux

    .NET Core服务部署在Linux环境下的相关文档可参考:

    环境搭建

    本服务部署在CentOS7.5上,需要.NET Core5.0运行时环境,可参照如下步骤执行:

    步骤一 存储库

    将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库,打开终端并运行以下命令:

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    

    若是报SSL connect error错误,可以尝试执行:

    sudo yum -y update nss ca-certificates curl openssl
    

    步骤二 安装SDK

    .NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

    sudo yum install dotnet-sdk-5.0
    

    但实际上,无论测试环境还是生产环境都只需要安装运行时环境即可,所以如果只安装运行时环境:

    sudo yum install dotnet-runtime-5.0
    

    如果服务器上需要同时兼容asp.net core,则需要使用这个命令:

    sudo yum install dotnet-runtime-5.0
    

    其他版本的安装

    如果需要安装其他版本,只需要将安装目标改为合适的名称即可,格式命名为:{product}-{type}-{version}

    代码调整

    引入包

    Linux需要在Nuget中额外引入依赖Microsoft.Extensions.Hosting.Systemd,并在Program.cs中添加UseSystemd()代码:

            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseSystemd() //Linux 部署必须
                    .ConfigureServices((hostContext, services) =>
                    {
                        services.AddHostedService<Worker>();
                    });
        }
    

    关于服务相关拓展,请参考文档:

    服务器部署

    发布包

    发布方式有两种:

    • 一种是直接在Visual Studio右键单击项目,选择发布,选择Linux环境。
    • 另一种时在.NET CLI中使用命令:
     dotnet publish -c Release -r linux-x64 -p:PublishSingleFile=true -o E:Pub
    

    注册服务

    1. 将发布内容复制到Linux主机的安装文件夹中/usr/sbin/clearlog下。
    2. clearlog执行权限。
    chmod 755 clearlog
    
    1. /etc/systemd/system中创建文件clearlog.service,修改文件:
    [Unit]
    Description= Clear log on the server.
    
    [Service]
    Type=notify
    ExecStart=/usr/sbin/netcoreapp/clearlog
    
    [Install]
    WantedBy=multi-user.target
    

    Type=notify属性指示systemd应用程序在启动和关闭时通知它,而WantedBy=multi-user.target设置将导致在Linux运行达到级别
    2时启动服务,这意味着非图形、多用户shell处于活动状态。

    当我们将服务名为“XXX”时,对应systemd中的服务名就为“XXX.service”。

    1. 重新加载服务,并查看其状态确认应用程序已注册成功,执行命令:
    sudo systemctl daemon-reload
    sudo systemctl status clearlog.service
    

    如果服务配置正确,则会看到以下输出:

    [root@localhost system]# systemctl status clearlog.service
    ● clearlog.service - Clear log linux service
       Loaded: loaded (/etc/systemd/system/clearlog.service; disabled; vendor preset: disabled)
       Active: inactive (dead)
    
    1. 启用服务
    sudo systemctl start clearlog.service
    

    如需要系统启动时自动启动该服务,使用enable命令。

    sudo systemctl enable clearlog.service
    

    事件日志

    服务本身记录的日志,可根据log4net的配置查看,不过有时任需要查看事件日志,Linux中等效Windows日志的是journald中包含的结构化日志系统服务systemd.
    由 Linux 后台程序写入标准输出的日志消息将自动写入到 journald 中,可通过如下命令查看日志:

    sudo journalctl -u clearlog.service
    

    关于journalctl更多请查看:JOURNALCTL命令

  • 相关阅读:
    day 12 元组的魔法
    day 12 列表的魔法,及灰魔法
    day 11 Python课上练习解释与基础知识练习题试题一
    day 11 rang的用法和练习
    day 10 字符串的魔法
    day1 Python可变与不可变类型
    day1 数据类型
    Math对象
    Calendar对象
    Date对象
  • 原文地址:https://www.cnblogs.com/krockey/p/15050546.html
Copyright © 2011-2022 走看看