supervisor 进程管家的安装及测试

# 注意 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


[group:spiders]
programs=discovery1,discovery2
```

猜你喜欢

转载自blog.csdn.net/weixin_41607151/article/details/80680030