Linux下使用Supervisord管理服务

Linux下使用Supervisord管理服务


点击进入 Supervisord官方网站


部署Supervisord

安装Supervisord
1
2
3
4
5
6
7
8
# pip安装
$ pip install supervisor

# 其他安装
$ su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'
$ yum install mono-devel -y
$ yum install python-setuptools -y
$ easy_install supervisor
配置Supervisord
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 生成配置文件
$ echo_supervisord_conf > /etc/supervisord.conf

# 使用Systemd管理Supervisord服务
$ cat > /usr/lib/systemd/system/supervisord.service << EOF
[Unit]
Description=supervisord - Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
#User=root
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
EOF
编辑Supervisord需要管理的服务

例如我需要Supervisord管理我的一个微服务api_server
微服务存放在/data/servers/apiapps/,启动方式是api_server server

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
$ vim /data/config/supervisor/api_server.conf
# 编辑一个配置文件然后添加以下内容,实际使用情况请根据自己决定在修改
[program:api_server] #这里就是后面启动服务关闭服务的名字,这里api_server就是我的服务
directory=/data/servers/apiapps/
command=/data/servers/apiapps/api_server server
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/data/servers/apiapps/log/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/data/servers/apiapps/log/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

$ vim /etc/supervisord.conf
# 编辑supervisord.conf配置文件找到include项添加files内容,让它读取我们上一步的配置文件内容
[include]
files = /data/config/supervisor/*.conf

$ systemctl daemon-reload
$ systemctl enable supervisord
$ systemctl start supervisord
# 执行以上三条命令,如果你配置无误,你的api_server服务就会启动起来了,ps -ef | grep "api_server"就会在后台由supervisord管理
Supervisord常用命令
1
2
3
4
5
6
$ supervisorctl start api_server
$ supervisorctl stop api_server
$ supervisorctl restart api_server
# 其他详细内容可以supervisorctl -h查看

# 这样子就不用我们通过/data/server/apiapps/api_server server来启动服务了

其实在CentOS 7中,你使用系统的Systemd管理你的微服务等其他服务已经大大满足你的所有需求了,如果你技术OK的话,哈哈