使用supervisor守护服务服务软件器进程


Supervisor安装与配置(linux/unix进程管理工具) SupervisorSupervisor: A Process Control System)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

 

 

安装 Supervisor

 

安装方式1easy_install 安装 supervisor

 

安装Python包管理工具(easy_install) easy_installsetuptools包里带的一个命令,使用easy_install实际上是在调用setuptools来完成安装模块的工作,所以安装setuptools即可:

wget https://pypi.io/packages/source/s/setuptools/setuptools-33.1.1.zip
unzip setuptools-33.1.1.zip
cd setuptools-33.1.1
python setup.py install
easy_install supervisor


 

 

安装方式2pip 安装 supervisor

 

使用 pip 来安装,前提要保证pip版本大于2.6

pip install supervisor

 

 

安装方式3yum epel-release 安装 supervisor

yum install -y epel-release && yum install -y supervisor

 

superviso命令

 

supervisor安装完成后会生成三个执行程序:supervisortdsupervisorctlecho_supervisord_conf:

 

•supervisortd:用于管理supervisor本身服务

•supervisorctl:用于管理我们需要委托给superviso工具的服务

•echo_supervisord_conf:用于生成superviso的配置文件

•supervisor的守护进程服务(用于接收进程管理命令)

客户端(用于和守护进程通信,发送管理进程的指令)

[root@Jumpserver /]# which supervisord
/bin/supervisord
[root@Jumpserver /]# which supervisorctl
/bin/supervisorctl
[root@Jumpserver /]# which echo_supervisord_conf
/bin/echo_supervisord_conf


 

配置Supervisor

 

通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件

如果使用yum安装则此步骤省略,直接进行修改配置文件步骤

mkdir /etc/supervisord.d
echo_supervisord_conf > /etc/supervisord.conf

 

管理案例(以mysql为例):

# touch /etc/supervisord.d/mysqld.ini

[program:mysqld]                                        #程序唯一名称
;directory=/usr/local/tomcat                             #程序路径
command=/usr/sbin/mysqld           #运行程序的命令
autostart=true                                          #是否在supervisord启动后tomcat也启动
startsecs=10                                            #启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true                                        #程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启;意思为如果不是supervisord来关闭的该进程则认为不正当关闭,supervisord会再次把该进程给启动起来,只能使用该supervisorctl来进行关闭、启动、重启操作
startretries=3                                          #启动失败自动重试次数,默认是3
user=root                                               #用哪个用户启动进程,默认是root
priority=999                                            #进程启动优先级,默认999,假如Supervisord需要管理多个进程,那么值小的优先启动
stopsignal=INT
redirect_stderr=true                                    #把stderr重定向到stdout标准输出,默认false
stdout_logfile_maxbytes=200MB                           #stdout标准输出日志文件大小,日志文件大小到200M后则进行切割,切割后的日志文件会标示为catalina.out1,catalina.out2,catalina.out3...,默认50MB
stdout_logfile_backups = 100                            #stdout标准输出日志文件备份数,保存100个200MB的日志文件,超过100个后老的将被删除,默认为10保存10个
stdout_logfile=/var/logs/supervisord.log      #标准日志输出位置,如果输出位置不存在则会启动失败
stopasgroup=false                                       #默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false                                       #默认为false,向进程组发送kill信号,包括子进程

 

 

程序管理

supervisorctl status mysqld                             #mysqld状态
supervisorctl stop mysqld                               #停止mysqld
supervisorctl start mysqld                              #启动mysqld
supervisorctl restart mysqld                            #重启mysqld
supervisorctl reoload mysqld

 Ps:

使用supervisor启动程序前先停止之前的程序,并取消开机自启

supervisor在启动mysql时候会提示Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!,在mysql.conf中加入user=mysql

 

启动supervisor

# systemctl start supervisord

或者

# supervisord -c /etc/supervisord.conf   //按指定配置启动

Ps:启动错误解决:Error: Another program is already listening on a port that one of our HTTP servers is configured to

find / -name supervisor.sock
unlink /name/supervisor.sock

 

设置开机自启

systemctl enable supervisord
systemctl is-enabled supervisord


查看错误日志 

sudo supervisorctl tail mysite stderr


文章参考自:https://zhuanlan.zhihu.com/p/147305277

版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生] https://www.sindsun.com/articles/24/139
[若此文确切存在侵权,请联系本站管理员进行删除!]


--THE END--