【问题标题】:How do you create a Linux daemon from a .NET Core console application?如何从 .NET Core 控制台应用程序创建 Linux 守护程序?
【发布时间】:2017-10-15 11:40:16
【问题描述】:

我习惯于使用 Topshelf 创建 Windows 服务。借助 .NET Core 和跨平台的前景,这引发了许多有趣的场景:

  1. 鉴于 Topshelf 尚不支持 .NET Core,如何为 .NET Core 创建 Windows 服务? (一种方法是创建一个常规的 .NET Core 控制台应用程序并使用 NSSM 安装它,但它不提供启动/停止挂钩,因此无法正常停止服务。
  2. 您如何在 Linux 上做同样的事情?没有 Windows 服务,但有守护进程的概念。 This answer 提供了一种基本方法,但需要额外的工作并且依赖于某些底层软件。
  3. 上述 #1 和 #2 是否可以使用跨平台方法完成,或者是否有必要针对每个平台解决此问题(例如使用预处理器指令)?

以上主要只是上下文。出于这个问题的目的,我想知道我需要采取哪些步骤才能使用 .NET Core 在 Linux 上运行相当于 Windows 服务的功能。如果这可以跨平台以统一的方式完成,那就更好了。

【问题讨论】:

    标签: linux .net-core daemon


    【解决方案1】:

    我认为没有跨平台的解决方案。服务非常特定于平台,AFAIK。

    对于#2,如果您想在systemd 下运行.NET Core,您应该能够在不更改任何代码的情况下执行此操作。您基本上需要做的就是发布您的应用程序,然后创建一个systemd unit 文件来描述您的守护进程。然后systemd 将处理启动、重新启动和终止您的应用程序。

    这里有一个 systemd 单元文件的示例,用于将 ASP.NET Core 应用程序作为服务运行:https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy#monitoring-our-application

    [Unit]
    Description=Example .NET Application
    
    [Service]
    WorkingDirectory=/var/aspnetcore/hellomvc
    ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
    Restart=always
    RestartSec=10
    SyslogIdentifier=dotnet-example
    User=apache
    Environment=ASPNETCORE_ENVIRONMENT=Production 
    
    [Install]
    WantedBy=multi-user.target
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多