天天看点

使用Supervisor 管理.net core mvc部署Supervisor简介实验环境实验过程常见问题引用

Supervisor简介

Supervisor是一个用python编写的,linux平台下的进程守护工具,它通过子进程的方式运行目标服务。相比rc.d脚本,它能更加方便地知道子进程发生了什么,并在其崩溃时自动重启子进程。

Supervisor著称的特点

简单

通过简单的INI风格配置文件进行配置

集中

通过Ctl工具统一管理所有应用的启动,停止和监控,也可以配置Web或远程命令行

高效

通过fork / exec启动其子进程。当某个进程终止时,操作系统会立即向Supervisor发出信号,而不像某些依赖麻烦PID文件和定期轮询来重启失败进程的解决方案。

可扩展

通过一个简单的事件通知协议,用任何语言编写的程序都可以用来监视它,并且有一个XML-RPC接口用于控制。

兼容性强

可以处理除Windows以外的所有内容。它在Linux,Mac OS X,Solaris和FreeBSD上经过测试和支持。它完全用Python编写,因此安装不需要C编译器。

主要组成部分

服务(supervisord)

它负责在自己的调用中启动子程序,响应来自客户端的命令,重启崩溃或退出的子过程,记录其子过程stdout和stderr输出,以及生成和处理与子过程生存期中的点相对应的“事件”。

控制台(supervisorctl)

它提供了一个类似shell的界面,通过它可以连接到不同的supervisord进程(一次一个),获取受控制的子进程的状态,停止并启动子进程,并获取正在运行的进程列表。

Web服务

激活配置文件的[inet_http_server]部分后,访问服务器URL(例如http:// localhost:9001/)以通过Web界面查看和控制进程状态。

XML-RPC接口

HTTP服务器提供了一个XML-RPC接口,用于查询和控制管理程序及其运行的程序。

实验环境

实验过程

1、首先我们发布一个.net core mvc应用,这里是一个叫

smartops

的应用,存放在

/home/root/smartops

文件夹下,启动入口为

SmartOps.Web.dll

,可以通过

dotnet SmartOpw.Web.dll

启动应用

2、执行下列命令安装

supervisor

cd /home
wget [https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm](https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm)
rpm -ivh epel-release-latest-7.noarch.rpm
yum install supervisor -y
           

安装完成后,我们到配置目录去添加一个

smartops

的配置

cd /etc/supervisord.d/
vim smartops.ini
           

添加配置为

#冒号后面为应用名称
[program:smartops]
#应用启动命令,需要dotnet的完整路径
command=/usr/share/dotnet/dotnet /home/root/smartops/SmartOps.Web.dll
#启动的目录,否则应用会报找不到appsetting.json错误
directory=/home/root/smartops
#服务启动时自动启动,崩溃自动重启
autostart=true
autorestart=true
# .net core mvc应用启动参数,表明是生产环境
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
# 日志输出路径
stdout_logfile=/var/log/supervisor/smartops.log
stderr_logfile=/var/log/supervisor/smartops.err.log
           

启动或重启

supervisord

服务,重新加载配置

systemctl restart supervisord
           

为了能更面捷的管理,我们打开Web管理控制台

取消

[inet_http_server]

下面这几行的注释,并将port改为

*:9001

vim /etc/supervisor.conf

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

           

保存,重启supervisor服务,输入

http://192.168.0.195:9001

,提示需要输入密码,用户名为

user

,密码

123

使用Supervisor 管理.net core mvc部署Supervisor简介实验环境实验过程常见问题引用

管理控制台

在这里可以看到我们刚才运行的

smartops

的状态,当我们上传了更新后,点击

restart

即可重新运行应用,不需要再像以前那样先

kill

进程,再重新运行

dotnet xxx.dll

使用Supervisor 管理.net core mvc部署Supervisor简介实验环境实验过程常见问题引用

ROLLAWAY

常见问题

1、无法启动服务,报File Not found

应写全dotnet的路径

2、无法找到appsetting.json错误

应提供

directory

参数,为应用根目录

引用

Supervisor offical Introduction