CentOS安装、配置、使用Supervisor

2,752 阅读3分钟

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

supervisord启动状态.png

绿色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]`