# supervisor的使用
## 安装
``` bash
# 使用pip来安装,目前supervisor只支持在python2.x环境下
pip install supervisor
# 也可以通过系统自带的包管理工具来安装
yum install supervisor
apt install supervisor
```
安装完成以后,通过命令行查看一下版本。
```bash
supervisord --version
```
看一下supervisor有哪些命令:
```
supervisord # 启动服务
supervisorctl # 启动客户端
echo_supervisord_conf # 输出配置文件
```
## 配置
首先查看一下/etc/supercisord.conf文件是否存在,如果不存在,则使用下面的命令创建:
```bash
echo_supervisord_conf > /etc/supervisord.conf
```
> 该配置文件以分号(;)作为注释
surpervisor查找配置文件的顺序是这样的:
```
/usr/etc/supervisord.conf
/usr/supervisord.conf
./supervisord.conf,
./etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf
```
如果在以上目录都未能查找到配置文件则supervisor启动失败
我们可以手动指定配置文件的路径
```
supervisord -c /tmp/supervisord.conf
```
## 配置文件
```ini
[unix_http_server]
; 服务器socket文件路径
file=/tmp/supervisor.sock
[supervisord]
; 日志文件路径
logfile=/tmp/supervisord.log
; 进程ID文件路径
pidfile=/tmp/supervisord.pid
; 定义了一个名为tinyproxy的程序
[program: tinyproxy]
; command后面就是启动这个程序的具体的命令
command=tail -f /var/log/tinyproxy/tinyprox.log
```
## 使用客户端连接
连接上supervisor控制台
```supervisorctl```
再输入reload命令
或者直接重新启动supervisor
```bash
# 它会重启supervisor内所有的程序
supervisorctl reload
```
如果只是修改了program的配置,可以使用update命令
```
supervisorctl update
```
其他的客户端子命令
```
# 查看所有的程序的状态
supervisorctl status
# 查看程序的标准输出
supervisorctl tail [program_name]
supervisorctl tail -f [program_name]
# 启动、停止、重启相关程序
supervisorctl [start|stop|restart] [program_name]
```
```ini
; 命令格式[program:程序名称]
[program:discovery1]
; 实际要运行的命令,注意命令的路径要写全
command=/Users/guye/workspace/qf/lesson/hz1801/xpc/env/bin/scrapy crawl discovery
; 你运行命令的时候所在的目录
directory=/Users/guye/workspace/qf/lesson/hz1801/xpc
; 把stderr(报错信息)重定向至标准输出
redirect_stderr=true
; 把标准输出重定向到/tmp/discovery1.log文件
stdout_logfile=/tmp/discovery1.log
; 定义一个程序组
[group:spiders]
# 定义该组有哪些程序,对应上面program的名字
programs=discovery1,discovery2,discovery3
```
进程管理的一些命令
```ini
;启动单个程序
supervisorctl start spiders:discovery1
;启动一组程序
supervisorctl start spiders:*
;启动所有程序
supervisorctl start all
```
## 网页客户端
也可以通过见面客户端去管理程序,注意,要先打开配置文件内的注释。
```ini
[inet_http_server]
; 绑定的IP和端口
port=127.0.0.1:9001
;用户名和密码
username=user
password=123
```
重启一下supervisord服务端
```
supervisorctl relaod
```
访问下面的地址:
http://127.0.0.1:9001/
用户名:user
密码:123
## 安装
``` bash
# 使用pip来安装,目前supervisor只支持在python2.x环境下
pip install supervisor
# 也可以通过系统自带的包管理工具来安装
yum install supervisor
apt install supervisor
```
安装完成以后,通过命令行查看一下版本。
```bash
supervisord --version
```
看一下supervisor有哪些命令:
```
supervisord # 启动服务
supervisorctl # 启动客户端
echo_supervisord_conf # 输出配置文件
```
## 配置
首先查看一下/etc/supercisord.conf文件是否存在,如果不存在,则使用下面的命令创建:
```bash
echo_supervisord_conf > /etc/supervisord.conf
```
> 该配置文件以分号(;)作为注释
surpervisor查找配置文件的顺序是这样的:
```
/usr/etc/supervisord.conf
/usr/supervisord.conf
./supervisord.conf,
./etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf
```
如果在以上目录都未能查找到配置文件则supervisor启动失败
我们可以手动指定配置文件的路径
```
supervisord -c /tmp/supervisord.conf
```
## 配置文件
```ini
[unix_http_server]
; 服务器socket文件路径
file=/tmp/supervisor.sock
[supervisord]
; 日志文件路径
logfile=/tmp/supervisord.log
; 进程ID文件路径
pidfile=/tmp/supervisord.pid
; 定义了一个名为tinyproxy的程序
[program: tinyproxy]
; command后面就是启动这个程序的具体的命令
command=tail -f /var/log/tinyproxy/tinyprox.log
```
## 使用客户端连接
连接上supervisor控制台
```supervisorctl```
再输入reload命令
或者直接重新启动supervisor
```bash
# 它会重启supervisor内所有的程序
supervisorctl reload
```
如果只是修改了program的配置,可以使用update命令
```
supervisorctl update
```
其他的客户端子命令
```
# 查看所有的程序的状态
supervisorctl status
# 查看程序的标准输出
supervisorctl tail [program_name]
supervisorctl tail -f [program_name]
# 启动、停止、重启相关程序
supervisorctl [start|stop|restart] [program_name]
```
```ini
; 命令格式[program:程序名称]
[program:discovery1]
; 实际要运行的命令,注意命令的路径要写全
command=/Users/guye/workspace/qf/lesson/hz1801/xpc/env/bin/scrapy crawl discovery
; 你运行命令的时候所在的目录
directory=/Users/guye/workspace/qf/lesson/hz1801/xpc
; 把stderr(报错信息)重定向至标准输出
redirect_stderr=true
; 把标准输出重定向到/tmp/discovery1.log文件
stdout_logfile=/tmp/discovery1.log
; 定义一个程序组
[group:spiders]
# 定义该组有哪些程序,对应上面program的名字
programs=discovery1,discovery2,discovery3
```
进程管理的一些命令
```ini
;启动单个程序
supervisorctl start spiders:discovery1
;启动一组程序
supervisorctl start spiders:*
;启动所有程序
supervisorctl start all
```
## 网页客户端
也可以通过见面客户端去管理程序,注意,要先打开配置文件内的注释。
```ini
[inet_http_server]
; 绑定的IP和端口
port=127.0.0.1:9001
;用户名和密码
username=user
password=123
```
重启一下supervisord服务端
```
supervisorctl relaod
```
访问下面的地址:
http://127.0.0.1:9001/
用户名:user
密码:123