本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/27,欢迎留言。
之前在生产环境部署Web服务,使用 nohup
来启动服务,但是nohup
在异常崩溃的情况下,无法重启服务,找到 Supervisor
, 可以实现后台守护进程的方式运行服务。
一、介绍
Supervisor是比较常用的进程管理工具,支持 Linux/MacOS平台,可以用来控制一组Linux/Unix进程(启动、重启、kill)等,使用Supervisor管理的进程,可以做到以守护进程的方式运行,服务异常关闭后可以自动重启。
Supervisor 有下面几个组件:
- supervisord: Supervisor的服务端程序,使用前,需要先启动该组件;
- supervisorctl: Supervisor的客户端程序,用来实际控制子进程(自定义的服务、程序);
Supervisor 通过配置文件,还可以启动Web控制台,通过Web页面来管理子进程;
二、安装
环境:
CentOS : 6/7
Python : 2.X
使用Python的Setuptools
软件包来安装:
[root@4fff02d62bba ~]# yum -y install python-setuptools
[root@4fff02d62bba ~]# easy_install supervisor
[root@4fff02d62bba ~]# supervisord -v
3.3.3
默认安装的版本是最新版(3.3.3)
三、配置 & 启动服务
拷贝默认配置文件
[root@4fff02d62bba ~]# mkdir /etc/supervisor
[root@4fff02d62bba ~]# echo_supervisord_conf > /etc/supervisord.conf
[root@4fff02d62bba ~]# vi /etc/supervisord.conf
;修改include配置,去除注释
[include]
files = /etc/supervisor/*.conf
[root@4fff02d62bba ~]# supervisord -c /etc/supervisord.conf
[root@4fff02d62bba ~]# ps -ef | grep supervisord
root 202 0 0 03:24 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
四、配置应用或服务器进程
编写应用启动脚本:启动脚本还有其他的选项配置,点击查看官网文档
[root@4fff02d62bba ~]# vi /etc/supervisor/storm.conf
[program:storm]
directory=/root
command=storm supervisor
autostart=true
autorestart=true
配置文件生效:
#(修改的配置文件生效,设置`autostart=true`的程序,会自动启动)
[root@4fff02d62bba ~]# supervisorctl update
Restarted supervisord
备注:
-
supervisorctl
还有其他命令,点击这里查看官网文档 -
supervisorctl
命令的默认配置文件是:/etc/supervisord.conf
网友评论