前言
Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯、控制等方面,是实现Linux大型服务的基础技术之一。
如果要在Red Hat Enterprise Linux上将.NET Core进程作为后台进程运行,则可以创建自定义systemd单元。今天我将为.NET Core编写两个自定义系统单元的例子。一个是运行.NET Core控制台应用程序的一种类型,另一个是运行ASP.NET Core Web应用程序的简单类型。
控制台应用程序
建立一个应用程序
您可以用dotnet run在systemd中使用指定项目目录作为工作目录。但是,我们来构建一个二进制文件并将其用于systemd。用dotnet new 命令创建您的项目后编辑Program.cs如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
然后用dotnet publish命令发布项目。你会看到bin/<Configuration>/<Framework>目录下的二进制文件。
1 2 3 4 5 |
|
创建一个自定义的systemd
首先,创建一个运行守护进程和工作目录的用户。
1 2 3 4 |
|
然后在/etc/systemd/system/目录下创建一个自定义的systemd单元文件。文件名应该是<unit-name>.<unit-type>。我创建的目录和文件名为:/etc/systemd/system/netcore-console-example.service。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
您应该在ExecStart中指定dotnet的完整路径。以上是红帽提供的.NET Core 1.1的情况。然后你可以用systemctl命令执行守护进程。您可以使用systemctl status命令或journalctl命令查看控制台输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
使用PrivateTemp
在上述系统单元中,程序在临时文件夹下写入一个文件。你有时想写一个来自其他用户的临时文件是安全的。您可以在[Service]section中的指定使用PrivateTemp。
1 2 3 4 5 6 7 8 |
|
重新加载单元文件后,程序可以像前一样访问/tmp目录,但这不是实际的/tmp目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Web应用程序
建立一个应用程序
现在我们来构建一个ASP.NET Core Web应用程序。今天我使用默认的模板项目。
1 2 3 4 5 6 7 8 9 10 |
|
现在可以用dotnet命令运行。
1 2 3 4 5 6 7 |
|
创建一个自定义的systemd
为这个Web应用程序也指定dotnetuser名称。
1 2 3 |
|
然后创建一个自定义的systemd单元文件/etc/systemd/system/netcore-web-example.service。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
最后,您可以将ASP.NET Core应用程序作为Linux守护程序运行。请注意,此应用程序侦听端口8080代替了ASP.NET Core 默认的 5000,因为我在ASPNETCORE_URLS单元文件中指定了环境变量 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
然而这对于ASP.NET Core的生产使用来说是不够的。你可能需要设置一个反向代理服务器,比如Jexus,nginx,防火墙等等。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://www.cnblogs.com/xiaoliangge/p/8379992.html
本文链接:https://my.lmcjl.com/post/18631.html
4 评论