# 注意 supervidor 依赖python2.4-2.7 python3下 使用pip无法安装 使用python3 pip安装会报错 建议直接apt安装
#
# Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.5.2
# (default, Nov 23 2017, 16:37:01)
sudo apt install supervisor 安装supervisor进程管家
supervisord --version # 查看版本信息
运行:supervisord
第一次使用会报错:IOError: [Errno 13] Permission denied: '/var/log/supervisor/supervisord.log'
执行:echo_supervisord_conf
sudo su # 切换到root下
执行:echo_supervisord_conf > /etc/supervisord.conf
supervisord -c /etc/supervisord.conf # 以指定配置 启动supervisor server端
# 编辑配置文件
vim /etc/supervisord.conf
[program:test]
command=tail -f kern.log # 测试log文件 任意一个存在的均可以
directory=/var/log/kern
``bash
supervisorctl update
```
即可以让刚才的配置生效,看到显示以下信息,则表示进程已启动
```bash
test: updated process group
```
### group
如果需要管理的程序较多,我们也可以将它们分组,supervisor提供了一个group功能:
```
[group:misc]
programs=test,foo,bar
```
重新update以后,就可以使用下列命令来控制了
```bash
# 重启misc组的所有进程
supervisorctl restart misc:*
# 停止misc组的test进程
supervisorctl stop misc:test
# 启动所有进程
supervisorctl start all
```
supervisorctl 启动client端
supervisorctl update #更新client
supervisorctl status # 查看客户端状态
此时会出现test相关信息
supervisorctl tail -f test # 运行测试文件
出现 “==> Press Ctrl-C to exit <==”即为正常
## 启动HTTP Server
supervisor还自带了一个web界面的管理后台,要启用它,需要打开配置文件,修改以下几行
```
[inet_http_server]
port=127.0.0.1:9001
username=user
password=123
```
注意将最前面的分号去掉,然后执行 分号为注释
```bash
supervisorctl reload
```
这样就启用了内置的管理后台,然后在浏览器内输入http://127.0.0.1:9001,输入用户名密码后就可以看到管理后台的界面。
# 使用supervisor管理scrapy爬虫
比如我们现在有一个爬虫项目在/opt/xpc目录下面,也就是scrapy.cfg文件所在的目录,那我们可以这样配置
```
[program:discovery1]
command=scrapy crawl discovery
directory=/opt/xpc
;将报错信息重定向到标准输出
redirect_stderr=true
;将标准输出写入到指定日志文件
stdout_logfile=/tmp/discovery1.log
[program:discovery2]
command=.../bin/scrapy crawl discovery # scrapy所在的绝对路径directory=/opt/xpc # 项目.cfg 所在的路径 使用pwd查询 绝对路径 分号后的内容为注释
;将报错信息重定向到标准输出
redirect_stderr=true
;将标准输出写入到指定日志文件
stdout_logfile=/tmp/discovery2.log
programs=discovery1,discovery2
```