1、介绍
Supervisor是一个进程管理工具,官方的说法用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor文章源自玩技e族-https://www.playezu.com/16227.html
这个工具主要就两个命令:文章源自玩技e族-https://www.playezu.com/16227.html
supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令
supervisorctl:启动supervisor的命令行窗口。
2、安装
1)第一种方法:文章源自玩技e族-https://www.playezu.com/16227.html
pip install supervisor
2)pip的安装文章源自玩技e族-https://www.playezu.com/16227.html
1 cat pip_an.sh
2 #!/bin/bash
3 wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
4 tar zxvf setuptools-0.6c11.tar.gz
5 cd setuptools-0.6c11
6 python setup.py build
7 python setup.py install
8 wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa33326"
9 tar -xzvf pip-1.5.4.tar.gz
10 cd pip-1.5.4
11 python setup.py install
文章源自玩技e族-https://www.playezu.com/16227.html
第二种文章源自玩技e族-https://www.playezu.com/16227.html
yum install python-setuptools
easy_install supervisor
第三种文章源自玩技e族-https://www.playezu.com/16227.html
wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz
tar zxvf supervisor-3.1.3.tar.gz
cd supervisor
python setup.py install
第四种文章源自玩技e族-https://www.playezu.com/16227.html
yum install -y epel-release
yum install -y supervisor
3、测试
#测试是否安装成功文章源自玩技e族-https://www.playezu.com/16227.html
echo_supervisord_conf
#创建配置文件文章源自玩技e族-https://www.playezu.com/16227.html
echo_supervisord_conf > /etc/supervisord.conf
#编辑配置文件
vim /etc/supervisord.conf
4、自定义配置
1)打开supervisord.cong文件后,在最后面加入
[program:ss] #ss为程序的名称
command=dotnet ProjectName.dll ; 运行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔
5、supervisord 常用操作
以下命令均需要root权限
supervisorctl status #查看守护程序状态
supervisorctl stop nginx #停止nginx
supervisorctl start nginx #启动nginx
supervisorctl restart nginx #重启 nginx 程序
supervisorctl reread #读取有更新(增加)的配置文件,但不会启动新添加的程序
supervisorctl update #重启配置文件修改过的程序
6、为了方便管理,我们可以添加到添加自动启动服务
vim /etc/init.d/supervisord
#!/bin/bash
#
# supervisord This scripts turns supervisord on
#
# Author: Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd)
#
# chkconfig: - 95 04
#
# description: supervisor is a process control utility. It has a web based
# xmlrpc interface as well as a few other nifty features.
# processname: supervisord
# config: /etc/supervisord.conf
# pidfile: /var/run/supervisord.pid
#
# source function library
. /etc/rc.d/init.d/functions
RETVAL=0
start() {
echo -n $"Starting supervisord: "
daemon supervisord
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
}
stop() {
echo -n $"Stopping supervisord: "
killproc supervisord
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/supervisord
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|force-reload|reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/supervisord ] && restart
;;
status)
status supervisord
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
exit 1
esac
exit $RETVAL
给予执行权限:
chmod +x /etc/init.d/supervisord
这样我们就可以通过service命令管理supervisord了
如果想管理ss进程,应该用
supervisorctl {start|stop|restart} ss
查看ss在后台的状态:
ps -ef | grep servers.py
7、如何开启图形界面
1.修改配置
[supervisorctl]
serverurl=0.0.0.0:9001 ; use an http:// url to specify an inet socket
username=chris ; should be same as in [*_http_server] if set
password=123 ; should be same as in [*_http_server] if set
2.开启端口
firewall-cmd --query-port=9001/tcp //监测端口是否开启
firewall-cmd --add-port=9001/tcp //开启9001端口
firewall-cmd --remove-port=9001/tcp //关闭9001端口
sudo firewall-cmd --reload //重新加载配置
8、常见问题
1、unix:// /var/run/supervisord.sock
echo_supervisord_conf > /etc/supervisord.conf
sudo supervisord -c /etc/supervisord.conf
sudo supervisorctl status
评论