Supervisor安装与配置(linux/unix进程管理工具) Supervisor(Supervisor: A Process Control System)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
安装 Supervisor
安装方式1、easy_install 安装 supervisor
安装Python包管理工具(easy_install) easy_install是setuptools包里带的一个命令,使用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
安装方式2、pip 安装 supervisor
使用 pip 来安装,前提要保证pip版本大于2.6
pip install supervisor
安装方式3、yum epel-release 安装 supervisor
yum install -y epel-release && yum install -y supervisor
superviso命令
supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_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--