如何使用supervisord来控制进程

环境:

  1. ubuntu:16.04
  2. python2.7(因为只有Python2.7支持安装supervisor)

安装supervisor:

1、pip 安装:pip install supervisor

2、wget https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz --> tar -zxvf XXX 解压 --> cd 进去 -->python setup.py install

安装完成之后要手动生成配置文件(supervisord.conf):

注意:以下所有修改后的路径的文件夹如果不存在要自己手动建立,文件不用,系统会自动建立

echo_supervisord_conf > /etc/supervisord.conf

这个命令会在/etc文件夹下生成一个supervisord.conf文件,就是supervisord的配置文件,然后这个配置文件是需要修改的,它的很多默认文件会建立在/tmp文件夹中,不是很合理,具体需要修改的地方有:在你的配置文件中找到这几句,改成你想放置的位置。

[unix_http_server]
file=/root/supervisor/supervisor.sock   ; the path to the socket file

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; main log file; default 
pidfile=/root/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid


[supervisorctl]
serverurl=unix:///root/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket

运行supervisord:

  1. 在真正应用它的管理进程的功能之前,首先应该启动服务:supervisord -c /etc/supervisord.conf  # -c 后面的位置是你开始生成配置文件的路径
  2. 运行supervisorctl status没有报错,就说明启动成功
  3. 控制进程用到的是supervisorctl这个命令,supervisord是用来启动服务。
  4. supervisorctl status 没有输出任何东西是因为现在你并没有把任何服务托管给supervisor,以下举了例子,将uwsgi托管给supervisor

将uwsgi托管给supervisor

  • 编辑一个针对于此uwsgi的配置文件,uwsgi.conf(这个文件中应用到的uwsgi.ini文件是我配置uwsgi+nginx+django部署写的,这里只是打个样子,具体需求看自己)
[program:uwsgi]     ;这里的uwsgi是自定义的进程名称
directory = /root/proj/conf       ;下一句command需要用到的uwsgi.ini文件所在的位置
command = uwsgi --ini uwsgi.ini   ;表示启动uwsgi服务的命令
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /etc/supervisor/log/uwsgi/face_check.log  ;将这个uwsgi服务的应用日志记录路径
  • 修改supervisord.conf文件,将刚刚的uwsgi.conf引入
  • 在配置文件的最后(应该是)找一下,将注释去掉,意思是引入/etc/supervisor/中的所有文件

             [include]

            files = /etc/supervisor/*

最后重启一下supervisord,详见 https://blog.csdn.net/weixin_41068851/article/details/83651699

常用命令

  1. supervisorclt status 查看所有托管进程的状态
  2. supervisorclt start name_1 或者 name_2 name_3 或者 all 开启进程
  3. supervisorclt stop name_1 或者 name_2 name_3 或者 all

猜你喜欢

转载自blog.csdn.net/weixin_41068851/article/details/83589218
今日推荐