将asp.net core程序部署到Linux服务器上(2)—以守护进程方式

  • Post author:
  • Post category:linux


上一篇只是简单的使用控制台启动方式,启动core程序。终端关闭进程也停止了。

下面首先介绍下如何使用Nginx做反向代理,转发请求到后端服务。

我们可以在nginx服务器上做负载均衡,处理高并发请求(基于服务集群节点而言)。

关于Nginx的安装,看下我另外一个博客:

Nginx服务器在Linux上的安装

现通过控制台方式启动asp.net core web api程序。

然后打开nginx.conf文件进行配置:

server {
        listen       指定的端口号;
        server_name  ip地址或者域名;
        location / {
        proxy_pass         http://目标地址ip:端口号;
        }
      }


注意:如果防火墙开启的话,将端口号加入防火墙,然后重新启动下防火墙。


如果是云服务器,防火墙规则开放此端口

显示上图,说明nginx反向代理配置的没问题了。关于nginx后期会写个专栏继续分享。


1.为web api服务创建Linux守护进程

在Linux系统中为应用服务添加

守护进程

,它是一种运行在后台的特殊进程,可以周期性的执行应用程序或用于监听端口处理网络请求。守护进程还会在系统重启或意外关闭服务后自动开启应用服务,并且不会因为远程连接的终端工具断开而中断,除非系统关闭它才会退出。

比较常用的两种方式:

1.创建Linux系统中的

服务(service)

实现

2.

Supervisor

进程管理工具

这里我只介绍第一种,另外一种也有很多人介绍,自行谷歌吧。

为了方便演示,将发布目录的文件复制到

/var/aspnetcoreprojects/release 下

mkdir -p /var/aspnetcoreprojects/

cp -r /AspNetCoreProjects/AutoMapperWebApiTest/bin/Release/netcoreapp3.1/* /var/aspnetcoreprojects/release

复制完,尝试下能否正常启动。

类似于Windows一样,Linux系统中也有“服务”这一说法,服务相当于一个

后台进程

,在进程中自动运行处理某个应用程序,基于它可以带给其中应用程序一定的维稳性,因此我们又将它称为守护进程。所以我们经常将一些需要长时间运行的程序以服务的方式运行。Linux中的服务是以service的形式来体现,服务的创建方式主要是通过配置service文件来实现。


1.切换root用户

配置服务的一些列行为需要管理员的权限,所以我们先将当前的账号切换为root用户

2.

进入Linux的Daemon管理路径

cd /etc/systemd/system

3.

.创建service配置文件

vim webapi.service
[Unit]
Description=ASP .NET Web Application
[Service]
User=root
Group=root
WorkingDirectory=/var/aspnetcoreprojects/release
ExecStart=/usr/bin/dotnet  /var/aspnetcoreprojects/release/WebApiTest.dll
Restart=always
RestartSec=10
SyslogIdentifier=netcore-demo
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target

Restart=always #服务推出后,不管是什么退出原因,总是重启

RestartSec=10 #重启服务之前,需要等待的秒数

User=root #使用该服务的用户


WorkingDirectory:

设置为ASP.NET Core应用发布文件的所在目录;


ExecStart:

启动服务的执行命令,该命令需要设置为可以启动我们的ASP.NET Core应用程序的命令,命令中主要分为3部分,每部分又空格隔开:

  • 第一部分为常量值:/usr/bin/dotnet(相当用于启动.Net程序的工具);
  • 第二部分是我们ASP.NET Core应用程序中启动项目的DLL所在目录;
  • 第三部分是设置ASP.NET Core中Web主机服务监听的端口;


注意:

为确保该服务配置文件能够正常启动我们的ASP.NET Core应用程序,我们可以事先在命令行中测试运行下ExecStart中的命令,看是否能够正常执行

:wq 保存退出.


5.加载服务配置文件

systemctl daemon-reload


6.将服务设置为开机启动

systemctl enable 服务文件名或者全名

比如 systemctl enable webapi.service 或者systemctl enable webapi


7.启动服务

systemctl start 服务文件名


8.查看服务状态

systemctl status 服务文件名

将所有终端关闭,然后重新打开:查看服务运行状态:

这样说明,我们的Linux守护进程已经创建成功了。

下面说下,配置中遇到的坑:


How To Deploy .Net Core Application On Linux

之前借鉴的老外的一篇文章,如何部署的,但是创建守护进程一直失败。

其实是配置中,少了user参数。


systemctl服务部署错误:code=exited, status=217/USER

这篇文章帮我解决了问题。



版权声明:本文为qq_34550459原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。