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命令

  • 相关阅读:
    Building Java Projects with Gradle
    Vert.x简介
    Spring及Spring Boot 国内快速开发框架
    dip vs di vs ioc
    Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
    SSO的定义、原理、组件及应用
    ModSecurity is an open source, cross-platform web application firewall (WAF) module.
    TDD中测试替身学习总结
    Spring事务银行转账示例
    台式机(华硕主板)前面板音频接口(耳机和麦克风)均无声的解决办法
  • 原文地址:https://www.cnblogs.com/krockey/p/15050546.html
Copyright © 2011-2022 走看看