9月30

Supervisor安装与配置(Linux/Unix进程管理工具)

| |
11:52电脑技术  From: 本站原创
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装(pip安装)
pip安装supervisord

pip install supervisor
生成配置文件

echo_supervisord_conf > /etc/supervisord.conf
载入配置文件

supervisorctl  -c /etc/supervisord.conf
常用命令

supervisorctl stop program_name  # 停止某一个进程,program_name 为 [program:x] 里的 x
supervisorctl start program_name  # 启动某个进程
supervisorctl restart program_name  # 重启某个进程
supervisorctl stop groupworker:  # 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)
supervisorctl stop groupworker:name1  # 结束 groupworker:name1 这个进程 (start,restart 同理)
supervisorctl stop all  # 停止全部进程,注:start、restartUnlinking stale socket /tmp/supervisor.sock
、stop 都不会载入最新的配置文件
supervisorctl reload  # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update  # 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
安装(文件安装)
wget https://pypi.python.org/packages/31/7e/788fc6566211e77c395ea272058eb71299c65cc5e55b6214d479c6c2ec9a/supervisor-3.3.3.tar.gz#md5=0fe86dfec4e5c5d98324d24c4cf944bd

tar -zxvf supervisor-3.3.3.tar.gz
cd supervisor-3.3.3
python setup.py install


supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

添加应用
supervisord.conf 文件底部追加

[program:web]
command=/usr/bin/python /Users/qp/web/app.py
autostart=true
autorestart=false
stderr_logfile=/tmp/test_stderr.log
stdout_logfile=/tmp/test_stdout.log
问题
遇到“Another program is already listening on a port that one of our HTTP servers is configured to use.”这个报错是因为 Supervisor已经启动了,这个时候如果想要解决这个问题,最简单的方法自然是 kill 掉进程,然后重启。
$ ps aux | grep supervisord
qp               95808   0.0  0.0  4286732    744 s003  S+   10:22上午   0:00.01 grep supervisord
qp               95600   0.0  0.1  4303732   7656   ??  Ss   10:12上午   0:00.20 /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python /usr/local/bin/supervisord -c /etc/supervisor.conf
$kill 95808 95600
http://127.0.0.1:9001 refused connection
supervisor.conf 修改如下


控制台输入supervisorctl,进入控制台时要输入的账号密码
[inet_http_server]         ; inet (TCP) server disabled by default
port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface
username=user              ; 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



启动和停止服务示例如下

echo "${USER}" `date '+%Y%m%d-%H%M%S'`>> restart-rcms.log
supervisorctl stop rcms-auth
supervisorctl stop rcms-system
supervisorctl stop rcms-notice
supervisorctl stop rcms-business
supervisorctl stop rcms-workflow
supervisorctl stop rcms-xxljob
supervisorctl stop rcms-im
supervisorctl stop rcms-gateway

supervisorctl start rcms-auth
./wait-for-it.sh -t 120 localhost:19001
supervisorctl start rcms-system
supervisorctl start rcms-notice
supervisorctl start rcms-business
supervisorctl start rcms-workflow
supervisorctl start rcms-xxljob
supervisorctl start rcms-im
supervisorctl start rcms-gateway


来源:Heck's Blog
地址:https://www.heckjj.com/post/551/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
阅读(57) | 评论(0) | 引用(0)