ubuntu中supervisor的安装及配置

2018-06-14  本文已影响625人  wwmin_

supervisor是一款很好用的进程管理工具,其命令也很简单,其安装过程如下:
ubuntu16:
首先保证本地的python环境是ok的,且python是2.x版本的,如有多个版本需要切换到2.x,参考ubuntu中切换python版本
supervisor安装

ubuntu安装: 
sudo apt-get install supervisor 
centos安装: 
yum install -y supervisor 
基于python库安装
pip2 install supervisor
easy_install supervisor

安装好之后,不出问题的话supervisor服务已经启动完成。
配置文件在/etc/supervisor/conf.d/路径下,
supervisor管理进程的配置文件,这里就简单举例:

[program:task]                                       #管理进程的命名
command=python test.py  -c test.conf          #执行的命令
stderr_logfile=/var/log/supervisor/test.log      #错误日志输出路径
stdout_logfile=/var/log/supervisor/test.log      #日志输出路径
directory=/root/test                    #命令执行的工作空间
autostart=true                       #自动启动
user=root                          #指定用户
autorestart=true                      #自动重启</pre>

进程配置文件配好之后,然后执行:

supervisorctl reload

至此配置基本完成,进程也启动起来了。
supervisor有supervisord和supervisorctl两种命令类型,supervisord是服务相关的命令,supervisorctl是客户端相关的命令,它们的使用方法很简单.

查看supervisorctl和启动子进程方式

supervisorctl status #查看supervisorctl状态
supervisorctl start nginx #启动子进程nginx
supervisorctl stop nginx  #关闭子进程nginx
supervisorctl restart nginx #重启子进程nginx
Supervisor管理进程状态转换图
Supervisor管理进程状态转换图

说明:
running:进程处于运行状态
starting:Supervisor 收到启动请求后,进程处于正在启动过程中
stopped:进程处于关闭状态
stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
fatal:进程没有正常启动
exited:进程从 running 状态退出

常用命令:
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisor启动和停止的日志文件存放在/var/log/supervisor/supervisord.log
注意:显式用stop停止掉的进程,用reload或者update都不会自动重启

常见报错:

Traceback (most recent call last):
  File "/usr/local/bin/supervisorctl", line 7, in <module>
    from supervisor.supervisorctl import main
  File "/usr/local/lib/python2.7/dist-packages/supervisor/supervisorctl.py", line 36, in <module>
    from supervisor.options import ClientOptions
  File "/usr/local/lib/python2.7/dist-packages/supervisor/options.py", line 26, in <module>
    from supervisor.datatypes import process_or_group_name
ImportError: cannot import name process_or_group_name #这是在执行supervisor相关命令报的错,基本可以看出是安装的问题 
#解决方式 
easy_install  supervisor
root@ubuntu:~# supervisorctl
unix:///var/run/supervisor.sock no such file
supervisor> 
#这有可能是由于supervisor服务没有启动 #解决办法
service  supervisor  start
error: <class ‘socket.error’>, [Errno 2] No such file or directory: file:/usr/lib/python2.7/socket.py line: 224

#错误原因可能是 supervisor 服务未启动 #解决办法   service  supervisor  start 

#也有可能是配置文件中没有指定用户 #解决办法 
进入/etc/supervisor/conf.d
找到指定的配置文件,加入  user=root
上一篇下一篇

猜你喜欢

热点阅读