上一篇只是简单的使用控制台启动方式,启动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
这篇文章帮我解决了问题。