CentOS安装、使用Supervisor
名词解释
supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。
安装依赖
yum install epel-release
安装supervisor
yum install -y supervisor
Ubuntu安装Supervisor
sudo apt-get update
如果更新报错,需要添加清华源、阿里源
//备份原来的源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
//修改更新源
sudo vim /etc/apt/sources.list
//添加源
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse
//更新源
sudo apt-get update
//安装supervisor
sudo apt-get install -y supervisor
开机自启
systemctl enable supervisord
启动supervisord
systemctl start supervisord
查看状态
systemctl status supervisord
绿色running表示服务运行正常
修改配置
vi /etc/supervisord.conf
# 调整增加引入配置文件路径,这个路径放置项目对应的 supervisor 配置文件
# include表示/etc/supervisord.d/文件夹下的所有的.ini文件,都作为启动的应用程序(下文简称“进程”)
# 每一个.ini对应一个应用程序的进程,包括但不限于dotnet应用进程
[include]
files = /etc/supervisord.d/*.ini
配置进程
vi /etc/supervisord.d/xxx.ini
[program:lw6]
command=dotnet xxx.dll
priority=1
numprocs=1
autostart=true
autorestart=true
进程参数说明:
[program:AbpMPACore] ;自定义进程名称, 根据自己喜好命名
command=dotnet AbpMPA.Web.Mvc.dll ;程序启动命令 使用dotnet 命令
directory=/publish ;命令执行的目录 你.NET Core 程序存放目录
autostart=true ;在Supervisord启动时,程序是否启动
autorestart=true ;程序退出后自动重启
startretries=5 ;启动失败自动重试次数,默认是3
startsecs=1 ;自动重启间隔
user=root ;设置启动进程的用户,默认是root
priority=999 ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/AbpMPA.err.log ;标准错误日志 路径可以自定义
stdout_logfile=/var/log/AbpMPA.out.log ;标准输出日志 路径可以自定义
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT ;请求停止时用来杀死程序的信号
#如启动多个进程的时候
numprocs=4 ;启动N个进程
process_name=%(program_name)s_%(process_num)02d ;多进程名称肯定不能相同,匹配多个
启动程序
supervisorctl start name
supervisorctl常用命令
supervisorctl status #查看程序状态
supervisorctl stop name #关闭name程序
supervisorctl start name #启动name程序
supervisorctl restart name # 重启name程序
supervisorctl reread #读取有更新的配置文件,不会启动新添加的程序
supervisorctl update #重启配置文件修改过的程序
### 查看帮助
`help` `help <action>`
### 关闭supervisord
`shutdown`
### 重载配置文件并重启supervisord和program
`reload`
### 读取当前运行配置和program配置文件的差异
`reread`
### 重载配置文件并重启受影响的program
`update`
### 重启program(不会重载配置文件)
`restart <name>` `restart <name> <name>` `restart all`
### 清空program日志
`clear <name>` `clear <name> <name>` `clear all`
### 前台显示program(Ctrl+C退出)
`fg <name>`
### 显示supervisord或program ID
`pid` `pid <name>` `pid all`
### 启动program
`start <name>` `start <name> <name>` `start all`
### 停止program
`stop <name>` `stop <name> <name>` `stop all`
### 查看program状态
`status <name>` `status <name> <name>` `status`
### 输出program最新日志(默认stdout,Ctrl+C退出)
`tail [-f] <name> [stdout|stderr] (default stdout)`
### 输出supervisord最新日志(Ctrl+C退出)
`maintail [-f]`