1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
1、安装
wget https:
//bitbucket
.org
/pypa/setuptools/raw/bootstrap/ez_setup
.py -O - | python
easy_install supervisor
或者
yum
install
python-pip
pip
install
supervisor
2、配置文件:
# echo_supervisord_conf > /etc/supervisord.conf \
&&
mkdir
/etc/supervisor
.d \
&&
/usr/bin/echo_supervisord_conf
>
/etc/supervisord
.conf \
&&
echo
-e
'[include]\nfiles=/etc/supervisor.d/*.ini'
>>
/etc/supervisord
.conf \
&&
grep
^[^\;]
/etc/supervisord
.conf
3、启动supervisord服务:
# whereis supervisord
supervisord:
/etc/supervisord
.conf
/usr/local/bin/supervisord
# /usr/local/bin/supervisord -c /etc/supervisord.conf
并增加到开机启动
/etc/rc
.
local
中
# echo '/usr/local/bin/supervisord -c /etc/supervisord.conf' >>/etc/rc.local
4、配置服务
# cd /etc/supervisor.d
# cat sshd.ini
[program:sshd]
command
=
/usr/sbin/sshd
-D
# cat test.ini
[program:
test
]
command
=
/usr/bin/php
xxx.php
process_name=%(program_name)s_%(process_num)02d
numprocs=5
user=nobody
# cat uwsgi.ini
[program:uwsgi]
command
=
/usr/local/bin/uwsgi
--http 127.0.0.1:8090 --chdir
/opt/test-django/www
--module www.wsgi >
/var/log/nginx/uwsgi
.log 2>&1
重新加载supervisord服务:
# supervisorctl reload
Restarted supervisord
验证
# supervisorctl status
uwsgi RUNNING pid 15041, uptime 0:00:17
# ss -antp src :8090
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:8090 *:*
users
:((
"uwsgi"
,15041,4),(
"uwsgi"
,15042,4))
调整user1增加
sudo
的权限:
user1 ALL=NOPASSWD:
/usr/bin/supervisorctl
然后通过这样的方式来管理:
$
sudo
supervisorctl status|stop|start|restart
5、新增一个服务的正确姿势
总结下来就2个指令:
supervisorctl reread
supervisorctl update
实例:
[root@tvm001 supervisor.d]
# pwd
/etc/supervisor
.d
[root@tvm001 supervisor.d]
# ls
gogogo.ini uwsgi_asset.ini uwsgi.ini
[root@tvm001 supervisor.d]
# cat gogogo.ini
[program:gogogo]
command
=
/bin/cat
autostart=
true
autorestart=
true
stdout_logfile=
/tmp/gogogo
.stdout.log
stderr_logfile=
/tmp/gogogo
.stderr.log
[root@tvm001 supervisor.d]
# supervisorctl status
uwsgi RUNNING pid 26248, uptime 5:13:02
uwsgi_asset RUNNING pid 26247, uptime 5:13:02
[root@tvm001 supervisor.d]
# supervisorctl reread
gogogo: available
[root@tvm001 supervisor.d]
# supervisorctl status
uwsgi RUNNING pid 26248, uptime 5:13:12
uwsgi_asset RUNNING pid 26247, uptime 5:13:12
[root@tvm001 supervisor.d]
# supervisorctl update
gogogo: added process group
[root@tvm001 supervisor.d]
# supervisorctl status
gogogo RUNNING pid 27147, uptime 0:00:04
uwsgi RUNNING pid 26248, uptime 5:13:25
uwsgi_asset RUNNING pid 26247, uptime 5:13:25
[root@tvm001 supervisor.d]
#
ZYXW、参考
1、doc
http:
//www
.supervisord.org
/running
.html
#supervisorctl-actions
|
本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1595238,如需转载请自行联系原作者