supervisor安装概述

 阅读约 7 分钟

经过这几天的折腾,我的supervisor终于可以正常的运行了。有折腾就有收获,这里我就来说说supervisor中遇到的问题。

首先,我先说一下supervisor的安装过程吧!这个相信google就一堆,这里主要讲supervisor的配置部分。

  • 环境:ubuntu16.04 python2.7 准备安装supervisor3.2

  • ubuntu安装直接运行 apt-get install supervisor 就可以了。

  • 以命令行的方式创建默认的配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

  • 查看配置文件vim /etc/supervisor/supervisord.conf 这里有个站点对配置文件有比较详细的讲解,参考这里就可以了

  • 接下来就说说配置中几个需要get到的点。
    首先是这两个服务器端配置项:

[unix_http_server]          ; supervisord的unix socket服务配置
file=/tmp/supervisor.sock   ; socket文件的保存目录
;chmod=0700                 ; socket的文件权限 (default 0700)
;chown=nobody:nogroup       ; socket的拥有者和组名
;username=user              ; 默认不需要登陆用户 (open server)
;password=123               ; 默认不需要登陆密码 (open server)

[inet_http_server]         ; supervisord的tcp服务配置
;port=127.0.0.1:9001        ; tcp端口
;username=user              ; tcp登陆用户
;password=123               ; tcp登陆密码

说明一下,supervisor是服务器端和客服端模式运行的。 客服端负责向服务器端发送命令。 服务器端负责根据客服端的命令和配置文件对进程进程调度。

而服务器端和客服端有两种通信模式,一种是通过上述unix_http_server 配置的tcp套接字通信。 一种是通过inet_http_server配置的端口通信模式。 如果有接触过php-fpm和nginx之间的通信的话,这里是一样的道理。

如果supervisor要正常工作,那unix_http_server和inet_http_server两个只要有一个配置正确就可以了,然后客户端supervisorctl配置同样的通信模式就可以了,这个我后面说。

但是这里我们两个都给配置起来。原因是:

  • 客户端连接安全起见我们用tcp链接的方式配置,所以unix_http_server是要配置的。

  • 还有一个模式inet_http_server这个配置好了。启动后会启动一个http_server管理界面,我可以通过http://hostname:9001的网页方式进行管理。

要外网可以访问,上述配置中port项要改成 port=0.0.0.0:9001或者port=*:9001,这个学过网络工程师的懂。

接下来,讲到客户端配置模块[supervisorctl],默认的配置是:

serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
username=chris              ; 如果设置应该与http_username相同
password=123                ; 如果设置应该与http_password相同
;prompt=mysupervisor         ; 命令行提示符,默认"supervisor"
;history_file=~/.sc_history  ; 命令行历史纪录

这里客户端的配置就是为了和服务器端对接,所以你可以看到serveurl有两种形式,一种是tcp,一种是端口,对应我们上面讲到的服务器端的两种方式,所以这里我们使用tcp方式把第一条去掉注释就可以了。

同时我们这里username和password要配置成和上面unit_http_server一样的,跟我们上QQ一样的道理,用户名密码和上面配置不匹配了,这个superctl就和服务器端通信不了无法正常工作了。

3. 最后讲到supervisor.conf中需要修改的最后一个地方 [include] ,默认是

;[include]
;files = relative/directory/*.ini

这里我们修改成:

[include]
files = /etc/supervisor/conf.d/*.conf

这个路径下配置着我们需要管理的各个进程的配置。
我们可以新建一个example.conf
配置如下

[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=nobody

然后启动过程:

我们先启动服务器端:
supervisord -c /etc/supersivor/supervisord.conf

客服端的使用有两种方法:

  1. 直接控制台使用。

获得所有程序状态 supervisorctl status
关闭目标程序 supervisorctl stop spider
启动目标程序 supervisorctl start spider
关闭所有程序 supervisorctl shutdown
  1. 进入supervisorctl客户端交互模式:

$ supervisorctl

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail
avail  fg        pid   remove  shutdown  status  update
clear  maintail  quit  reread  signal    stop    version

supervisor> start example
阅读 2.7k发布于 2016-09-14
推荐阅读
我的IT路上
用户专栏

一入IT深似海。。。

0 人关注
2 篇文章
专栏主页
目录