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
#安装 SDK
sudo 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/服务名称.service
systemctl start 服务名称.service
好了,到最后一步我们就完成了一个net7项目部署到Linux并启用https,有不足之处欢迎大家指出
参考文献
.net5 .net6 .net7指定发布端口 http https
.net 部署为windows服务 linux服务
在 CentOS Linux 上安装 .NET - .NET | Microsoft Learn
.netcore centos配置systemctl自动启动