.net 部署为windows服务 linux服务
安装nuget
Install-Package Microsoft.Extensions.Hosting.WindowsServices
Install-Package Microsoft.Extensions.Hosting.Systemd
.net5
调整CreateHostBuilder
public static IHostBuilder CreateHostBuilder(string[] args)
{
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseUrls($"http://{ip}:{port}")
.UseStartup<Startup>()
;
});
if (System.OperatingSystem.IsWindows())
{
hostBuilder.UseWindowsService();
}
if (System.OperatingSystem.IsLinux())
{
hostBuilder.UseSystemd();
}
return hostBuilder;
}
windows服务使用sc命令注册
linux服务使用systemd注册-使用systemctl管理
如果需要依赖其他服务才能启动,可以配置服务依赖
windows下
sc config ServiceA depend= "BaseService"
# 重新设置为空字符串即可清空依赖属性
.net7
调整为以下代码
var builder = WebApplication.CreateBuilder(args);
if (System.OperatingSystem.IsWindows())
{
builder.Host.UseWindowsService();
}
if (System.OperatingSystem.IsLinux())
{
builder.Host.UseSystemd();
}
var app = builder.Build();
另外需要注意在linux下使用systemctl管理服务时不要配置Type=forking
[参考]
systemd.service
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com