三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor

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

一、 Supervisor安装
1、安装python自动化工具
yum install python-setuptools
三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第1张图片

2、yum安装Supervisor (阿里云验证通过)
yum install supervisor
在这里插入图片描述

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第2张图片

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第3张图片
出现 Complete,表示安装完成!

3、easy_install 安装Supervisor(如果yum安装无法找到资源,可以通过easy_install)
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
easy_install supervisor

二、 配置Supervisor

1、 在etc下创建目录,并赋权限
mkdir -m 700 -p /etc/supervisor
在这里插入图片描述

2、 在目录“ /etc/supervisor”下创建配置文件 “supervisord.conf”
echo_supervisord_conf > /etc/supervisor/supervisord.conf
在这里插入图片描述

3、 修改配置文件
vim /etc/supervisor/supervisord.conf
三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第4张图片

在文件末尾添加,注意首尾需无空格,需顶格(这里要删除行头的分号 “;”)
内容如下:

[include]
files=/etc/supervisor/conf.d/*.conf

在这里插入图片描述

4、Web管理界面: 出于安全考虑,默认配置是没有开启web管理界面,需要修改supervisord.conf配置文件打开http访权限,将下面的配置修改,可外网访问:
内容如下:

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=user               ; (default is no password (open server))

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第5张图片

如果是最后才想起配置外网访问,请使用以下命令使配置生效:
supervisord -c /etc/supervisor/supervisord.conf

效果如下: 输入外网地址 http://***:9001三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第6张图片

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第7张图片

5、 在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
在这里插入图片描述

目录结构如下:
三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第8张图片

6、 创建进程配置文件 test.conf," test "可以为dotnet core 入口dll文件名字 ,插入内容,注意首尾需无空格,需顶格

vim /etc/supervisor/conf.d/test.conf
在这里插入图片描述

内容如下:

[program:test]
command=dotnet test1.dll
directory=/home/test1/
stderr_logfile=/var/log/test1.error.log
stdout_logfile=/var/log/test1.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3

内容说明:
[program:test] ;显示名称
command= dotnet test1.dll ;运行命令,启动dotnet进程
directory=/home/test1/ ;test1目录
stderr_logfile=/var/log/test1.error.log ;错误日志文件
stdout_logfile=/var/log/test1.stdout.log ;日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
user=root ;进程执行用户
stopsignal=INT ;
autostart=true ;如果设置为true,当supervisord启动的时候,进程会自动重启。
autorestart=true ;程序崩溃时自动重启,重启次数是有限制的,默认为3次
startsecs=3 ;启动 3 秒后没有异常退出,就当作已经正常启动了

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第9张图片

7、启动supervisor(手动启动)
supervisord -c /etc/supervisor/supervisord.conf
查看已启动服务:pstree -p | grep supervisord
在这里插入图片描述
如果未正常启动Asp.Net Core程序进程,则不包含dotnet(26709)

用 supervisorctl 查看已经被监控的program:
supervisorctl -c /etc/supervisor/supervisord.conf

如果出现此错误: FATAL Exited too quickly (process log may have details) ,如下查看.Net Core程序日志
在这里插入图片描述

查看.Net Core程序日志: cat /var/log/test1.error.log
三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第10张图片重新发布Asp.Net Core 上传就可以了。

查看Supervisord日志: cat /tmp/supervisord.log
解决问题:
unix:///var/run/supervisor.sock no such file;
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

命令:find / -name supervisor.sock
命令:unlink /tmp/supervisor.sock

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第11张图片

注意:
(1)每次修改配置文件后需进入supervisorctl,执行reload, 改动部分才能生效
(2)两个命令
supervisord : supervisor的服务器端部分,用于supervisor启动
supervisorctl:启动supervisor的命令行窗口,在该命令行中可执行start、stop、status、reload等操作。
查看状态: supervisorctl status
执行supervisorctl reload的命令可以重启监控服务: supervisorctl reload
启动某个进程: supervisorctl start test1
重启某个进程: supervisorctl restart test1
停止某一个进程: supervisorctl stop test1
停止全部进程: supervisorctl stop all
载入最新的配置文件,并按新的配置启动、管理所有进程: supervisorctl reload

8、 创建supervisor 自启动服务(开机启动Supervisor服务)
vim /etc/systemd/system/supervisor.service

内容如下:

[Unit]
Description=supervisor
     
[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

三、Asp.net Core 部署Centos/Linux系统 -- 守护进程Supervisor_第12张图片

使配置生效
systemctl daemon-reload
在这里插入图片描述
设置服务开机启动,即设置enable
systemctl enable supervisor.service
在这里插入图片描述
启动服务
systemctl start supervisor.service
在这里插入图片描述

你可能感兴趣的:(Asp.net,Core)