用C#編寫Linux守護進程
如果要在Red Hat Enterprise Linux上將.NET Core進程作為後台進程運行,則可以創建自定義systemd單元。今天我將為.NET Core編寫兩個自定義系統單元的例子。一個是運行.NET Core控制台應用程序的一種類型,另一個是運行ASP.NET Core Web應用程序的簡單類型。
控制台應用程序
建立一個應用程序
您可以用在systemd中使用指定項目目錄作為工作目錄。但是,我們來構建一個二進位文件並將其用於systemd。用dotnet new 命令創建您的項目後編輯Program.cs如下。
using System;
using System.IO;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
var path = Path.GetTempFileName();
File.WriteAllText(path, "Hello Temp File!");
Console.WriteLine($"Wrote temp file: ");
}
}
}
然後用命令發布項目。你會看到。
創建一個自定義的systemd
首先,創建一個運行守護進程和工作目錄的用戶。
$ sudo useradd -s /sbin/nologin dotnetuser$ sudo mkdir /var/SystemdExample$ sudo cp /home/tatanaka/Documents/git/tanaka-takayoshi/SystemdExample/1.1/ConsoleApp/bin/Release/netcoreapp1.1/publish/*/var/SystemdExample$ sudo chown -R dotnetuser:dotnetuser /var/SystemdExample
然後在目錄下創建一個自定義的systemd單元文件。文件名應該是。我創建的目錄和文件名為:。
您應該在ExecStart中指定dotnet的完整路徑。以上是紅帽提供的.NET Core 1.1的情況。然後你可以用命令執行守護進程。您可以使用命令或命令查看控制台輸出。
使用PrivateTemp
在上述系統單元中,程序在臨時文件夾下寫入一個文件。你有時想寫一個來自其他用戶的臨時文件是安全的。您可以在section中的指定使用PrivateTemp。
重新載入單元文件後,程序可以以前一樣訪問像目錄,但這不是實際的目錄。
Web應用程序
建立一個應用程序
現在我們來構建一個ASP.NET Core Web應用程序。今天我使用默認的模板項目。
現在可以用dotnet命令運行。
創建一個自定義的systemd
為這個Web應用程序也指定dotnetuser名稱。
然後創建一個自定義的systemd單元文件。
最後,您可以將ASP.NET Core應用程序作為Linux守護程序運行。請注意,此應用程序偵聽埠8080代替了ASP.NET Core 默認的 5000,因為我在單元文件中指定了環境變數 。
然而這對於ASP.NET Core的生產使用來說是不夠的。你可能需要設置一個反向代理伺服器,比如Jexus,nginx,防火牆等等。
原文地址:http://www.cnblogs.com/xiaoliangge/p/8379992.html


※小白帶你入坑xamarin系列之環境搭建和準備
※net的retrofit-WebApiClient庫深入篇
TAG:dotNET跨平台 |