linux使用supervisor管理系统服务
# linux 使用 supervisor 管理系统服务
本文讲述 linux 系统如何使用 supervisor 管理系统服务。传统的 linux 系统服务管理采用的是 init 脚本(如 centos 6)。使用 supervisor 方案可以支持服务进程死掉后自动重启。
提示
- 提供与Systemd类似的功能。
- 若 docker 宿主机的操作系统版本过低(如 centos6),那么生成的 docker 容器中无法使用 systemctl,进而无法使用 Systemd 管理后台服务,此时可以使用 supervisor 方案。
# 安装 supervisor 管理工具
# centos 安装 supervisor
建议使用centos7版本以上, centos6仓库没有提供该软件包,安装supervisor的步骤比较繁琐。
yum install supervisor
还可以通过python包管理工具pip来安装,步骤如下: yum install python-setuptools -y
easy_install pip
pip install supervisor
# 基于模板生成 supervisor 的通用配置文件
echo_supervisord_conf > /etc/supervisord.conf
补充如下配置
[include]
files = /etc/supervisord.d/*.conf
为了方便管理,每个应用程序在/etc/supervisord.d 下创建一份单独的配置文件。
# 启动 supervisor
supervisord -c /etc/supervisord.conf
# 支持应用程序自动重启
提示
此处以/root/redirect-api --profile back-pro 为例。
- 创建配置文件/etc/supervisord.d/redirect.conf
[program:redirect]
command=/root/redirect-api --profile back-pro ; 被监控的进程路径
priority=1 ;数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启。。当然要选上了
startretries=100 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stdout_logfile=/var/log/supervisor.log ; 配置标准输出日志文件
stderr_logfile=/var/log/supervisor.log ; 配置错误输出日志文件
若程序启动时需要指定当前工作目录,那么还需要配置directory参数
- 重新加载配置文件 supervisorctl reload
# 管理应用程序
# 通过命令行管理
提示
此处以 redirect 应用程序为例。
supervisorctl status redirect
supervisorctl stop redirect
supervisorctl start redirect
supervisorctl restart redirect
把redirect换成all,即可管理所有应用程序。
# 通过 web 界面管理
这是 supervisor 的特色功能,Systemd 无此功能。
相关使用方法待日后完善。
# 注意
# supervisor 只能运行前台命令
无法运行 daemon 服务,如 service httpd start。
若想运行 daemon 服务,也有解决方法,请自行查找教程。