1.修改代码设置后台服务运行
安装nuget包
Install-Package Microsoft.Extensions.Hosting.WindowsServices
Install-Package Microsoft.Extensions.Hosting.Systemd
在Program代码中设置服务后台运行
var builder = WebApplication.CreateBuilder(args);if (System.OperatingSystem.IsWindows())
{builder.Host.UseWindowsService();
}if (System.OperatingSystem.IsLinux())
{builder.Host.UseSystemd();
}var app = builder.Build();
appsettings.json 设置https配置,注意ssl证书申请
"Kestrel": {"Endpoints": {"Http": {"Url": "http://localhost:7000"},"Https": {"Url": "你的域名","Certificate":{"Path":"证书","Password":"密码"}}}}
右键发布
2.安装net7环境并启动项目
#将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm#安装 SDKsudo yum install dotnet-sdk-7.0#启动项目dotnet 项目名称.dll
3.配置域名解析后成功在域名上访问到指定接口 (网站ip为服务器ip)
4.配置服务自启动
新增 服务名.service 文件放到/usr/lib/systemd/system目录下
下面是文件示例
# Unit 服务描述
[Unit]
Description=dangjian service# Service 配置参数
[Service]# 自启动项目所在的位置路径
WorkingDirectory=/usr/local/project
#StandardOutput=journal
#StandardError=journal# 自启动项目的命令,这里用了dotnet启动,所以前面添加了dotnet的路径/usr/bin/
ExecStart= dotnet 项目名称.dll
Restart=always
RestartSec=10[Install]
WantedBy=multi-user.target
新增文件后安装及启动服务
systemctl enable /etc/systemd/system/服务名称.servicesystemctl start 服务名称.service
好了,到最后一步我们就完成了一个net7项目部署到Linux并启用https,有不足之处欢迎大家指出
参考文献
.net5 .net6 .net7指定发布端口 http https
.net 部署为windows服务 linux服务
在 CentOS Linux 上安装 .NET - .NET | Microsoft Learn
.netcore centos配置systemctl自动启动