Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务 (下)

简介: Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务

五、配置Supervisor守护服务:

为什么要配置Supervisor:

  使用Linux部署过ASP.NET Core应用程序的小伙伴都清楚,我们在部署项目都是通过Shell进行项目启动运行的。有时候我们会发现当我们关闭了Shell后,应用程序会立马宕机无法访问,需要我们重新进入服务器连接Shell输入dot命令重启应用程序。在生成环境中对于这种没有对应用程序进行任何的守护和监听的部署是非常的糟糕的,因此我们需要守护服务或者容器(推荐使用Docker)来对应用程序进行监听保护作用,当监听到应用进程停止,Supervisor会自动重启该应用程序。

Supervisor简单概述:

  首先简单了解下Supervisor, Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装Supervisor:

yum install python-setuptools
easy_install supervisor

配置Supervisor

//新建指定目录,为了避免默认配置会在某些更新覆盖掉
mkdir /etc/supervisor
//这里是在新建好的目录新建conf文件,这里关键。默认文件会建立在/etc目录下
echo_supervisord_conf > /etc/supervisor/supervisord.conf

新建成功如下图所示:

1336199-20191209000733877-16094021.png

打开supervisord.conf,要将文件的结尾部分替换掉以便后面能读取到我们的配置文件

打开supervisord.conf配置文件:

vim supervisord.conf

在文件的结尾找到以下配置代码:

;[include]<br>;files = relative/directory/*.ini

1336199-20191209013633921-218242682.png将代码替换为如下,注意前后不能带 ;和空格符号

[include]

files = conf.d/*.conf

1336199-20191209015547118-1625134417.png

配置对ASP.NET Core应用的守护:

进入目录 /etc/supervisor/ 新建 conf.d文件夹:

mkdir conf.d

在【/etc/supervisor/conf.d/】目录下新建一个AspNetCoreWebApi.conf配置文件:

vim AspNetCoreWebApi.conf

直接复制以下内容:

[program:AspNetCoreWebApi]

command=dotnet FirstCore.dll;

directory=/root/MyDotNetApplication/;

autorestart=true;

stderr_logfile=/var/log/AspNetCoreWebApi.err.log;

stdout_logfile=/var/log/AspNetCoreWebApi.out.log;

environment=ASPNETCORE_ENVIRONMENT=Production;

user=root;

stopsignal=INT;


配置说明:

[program:AspNetCoreWebApi]
command=dotnet FirstCore.dll; 运行程序的命令
directory=/root/MyDotNetApplication/; 命令执行的目录
autorestart=true; 程序意外退出是否自动重启
stderr_logfile=/var/log/AspNetCoreWebApi.err.log;错误日志文件
stdout_logfile=/var/log/AspNetCoreWebApi.out.log;输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production;进程环境变量
user=root;进程执行的用户身份
stopsignal=INT

注意:如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效。

运行supervisord,查看是否生效,命令如下:

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep AspNetCoreWebApi   //AspNetCoreWebApi是上面配置的program名称:[program:AspNetCoreWebApi]

配置Supervisor开机启动

新建一个“supervisord.service”文件

[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

将supervisord.service文件拷贝至:

/usr/lib/systemd/system/   #系统目录下

执行命令:systemctl enable supervisord #激活开机启动命令

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

下面是一些常用的 Supervisor 的命令 (参考https://segmentfault.com/a/1190000003955182):

               命令                                                说明
supervisord 初始启动Supervisord,启动、管理配置中设置的进程
supervisorctl stop myproject 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon
supervisorctl start myproject 启动某个进程
supervisorctl restart myproject 重启某个进程
supervisorctl stop groupworker 重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all 停止全部进程,注:start、restart、stop都不会载入最新的配置文件
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启


相关文章
|
4天前
|
Java Linux Shell
linux自动部署jar包,注册系统服务(基于Centos7)
linux自动部署jar包,注册系统服务(基于Centos7)
14 0
|
19天前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
24 4
|
6天前
|
Java Linux
手把手教你Linux系统下的Java环境配置,简单到不行!
手把手教你Linux系统下的Java环境配置,简单到不行!
24 1
|
2天前
|
监控 关系型数据库 Linux
|
2天前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
至此,你已经成功部署了一个简单的Nginx应用到Kubernetes集群中。当然,还有很多更复杂的配置和功能可以实现,例如使用Ingress、设置资源限制等,根据实际需求可以进一步深入学习Kubernetes的更多特性和功能。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
164 2
|
17天前
|
存储 Linux 应用服务中间件
VMware安装无GUI版本的Linux(CentOS7)——安装Nginx示例demo
VMware安装无GUI版本的Linux(CentOS7)——安装Nginx示例demo
76 1
|
17天前
|
网络协议 Linux
Linux配置HDCP
Linux配置HDCP
18 0
|
19天前
|
Kubernetes Linux 开发工具
容器开发运维人员的 Linux 操作机配置优化建议
容器开发运维人员的 Linux 操作机配置优化建议
|
19天前
|
NoSQL Linux Redis
Redis--安装与配置(Linux与Windows)
Redis--安装与配置(Linux与Windows)
|
NoSQL Unix Shell

相关产品

  • 云迁移中心