.NET Core App部署Linux
2021/7/24 7:09:34
本文主要是介绍.NET Core App部署Linux,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
.NET Core服务部署在Linux环境下的相关文档可参考:
- 在 CentOS 上安装 .NET SDK 或 .NET 运行时
- 在 ASP.NET Core 中使用托管服务实现后台任务
- 自承载的 gRPC 应用程序
我们假定有一个服务clearlog用于清除服务器上的日志,来看看服务如何搭建:
环境搭建
本服务部署在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
注册服务
- 将发布内容复制到Linux主机的安装文件夹中
/usr/sbin/clearlog
下。 - 给
clearlog
执行权限。
chmod 755 clearlog
- 在
/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”。
- 重新加载服务,并查看其状态确认应用程序已注册成功,执行命令:
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)
- 启用服务
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命令。
这篇关于.NET Core App部署Linux的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#