博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 supervisor 管理进程
阅读量:6995 次
发布时间:2019-06-27

本文共 3023 字,大约阅读时间需要 10 分钟。

hot3.png

参考:http://www.ttlsa.com/linux/using-supervisor-control-program/

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

而我打算用这个软件实现进程的守护管理。

通常我的业务系统都是CENTOS6,YUM源的Supervisor版本有点老,网上有些配置是基于其他系统的3.0以上版本,所以你在2.0下配置没有毛用。

于是我就上官网找了一般最新版本的。咳咳。

wget -c https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz

[root@web_1supervisor-3.3.1]# python setup.py install

Traceback (most recent call last):
  File "setup.py", line 32, in <module>
    from setuptools import setup, find_packages
ImportError: No module named setuptools   

还好我不是厦大的,拿出EVERYTHING神奇搜索以前总结的文件,啊哈

yum install python-pip -y  快速便捷!

接下来就可以安装了  python setup.py install

一共有3个命令 supervisor     supervisorctl  supervisord  

查看帮助 supervisord -h
使用 “echo_supervisord_conf” 命令来生成样例配置文件
echo_supervisord_conf  //就显示配置文件模版
echo_supervisord_conf > /etc/supervisord.conf  //创建配置文件

全部的配置文件都写一个文件显得不太科学

mkdir -p /etc/supervisord.d

在配置文件写个include

[include]

files = /etc/supervisord.d/*.ini

现在写一个例子:( /etc/supervisord.d/test.ini)

[program:test]

directory = /data/web/test        ; 程序的启动目录
command = /usr/bin/php test.php   ; 启动命令,没错!我就是要跑PHP进程啊哈。
autostart = true     ; 在 supervisord 启动的时候也自动启动
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了,默认10秒
autorestart = true   ; 程序异常退出后自动重启
startretries = 3     ; 启动失败自动重试次数,默认是 3
user = www           ; 用哪个用户启动
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/supervisord/test.log

OK,还需要建立一个存放日志的统一目录

mkdir -p /data/logs/supervisord/

写完,启动就行了,supervisord  -c  /etc/supervisord.conf

嗯。。把YUM的启动脚本拿过来做启动脚本,哈哈,只需要修改启动指定配置文件就可以用了~

哦,对,它有一个客户端 supervisorctl,输入命令后进入

supervisor> status   //在另外终端杀掉进程

test           RUNNING    pid 26375, uptime 0:00:25
supervisor> status    //启动进程中
test           STARTING   
supervisor> status   //进程被重启了
test           RUNNING    pid 26379, uptime 0:00:08

也可以在BASH直接执行

$ supervisorctl status

$ supervisorctl stop test
$ supervisorctl start test
$ supervisorctl restart test
$ supervisorctl reread
$ supervisorctl update

-。-  好吧,它还有WEB接口 WEB UI,并可以认证

接口

远程管理

supervisorctl -s http://127.0.0.1:9001-u abc -p 123 status test

WEB界面

[inet_http_server]         ; inet (TCP) server disabled by default

port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=abc              ; (default is no username (open server))
password=123               ; (default is no password (open server))

[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=abc             ; should be same as http_username if set
password=123                ; should be same as http_password if set
prompt=mysupervisor         ; cmd line prompt (default "supervisor")
history_file=~/.sc_history  ; use readline history if available

没有了。

 

转载于:https://my.oschina.net/longquan/blog/735180

你可能感兴趣的文章