Supervisor 安装配置

Supervisor的简介

Supervisor是一个客户端/服务器系统,允许其用户控制类似UNIX的操作系统上的许多进程。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制

 

Supervisor的安装

 1)安装supervisor

pip install supervisor --user

 2)  创建配置文件supervisord.conf (建议在root用户下进行,如果之前有机器再用,你可以偷个懒,直接把supervisord.conf文件考过来就可以)

 echo_supervisord_conf > supervisord.conf

 心得:我在部署这一步的时候很奇怪,在root用户下无论怎样执行  pip install supervisor --user这一步,都说  supervisor不存在,具体报错忘记截图了然后我就去了admin用户下,果然,在admin用户下执行就没问题,默认生成的supervisord.conf在admin的家目录下。但是为了不会出现权限问题,我们还是在root用户下就行吧。

3)关于/etc/supervisord.conf 的配置

图中红线框起来的位置你需要提前创建否则会报各种错误

关于这个报错我参考了这篇文章:https://blog.csdn.net/kkevinyang/article/details/80539940

4)然后执行supervisord -c  /etc/supervisord.conf  ,如果出现报错-bash: supervisord: command not found并且你应经执行过 pip install supervisor --user,你那么你需要自己找一下这个命令的路劲,他可能在admin用户的路径之下,所以执行

[root@test-hadoop01 ~]# which supervisord
/usr/bin/which: no supervisord in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/cronolog/sbin:/usr/local/java/bin:/root/bin)
[root@test-hadoop01 ~]# cd /
[root@test-hadoop01 /]# find -name [root@test-hadoop01 ~]# which supervisord
find: paths must precede expression: ~]#
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
[root@test-hadoop01 /]# find -name supervisord
./root/.local/share/Trash/files/cloudera-manage/cm-5.16.1/lib64/cmf/agent/build/env/bin/supervisord
./root/.local/bin/supervisord
./opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/supervisord
find: ‘./proc/13398’: No such file or directory
./home/admin/.local/bin/supervisord

这里就可以发现supervisord命令藏在/home/admin/.local/bin/这个目录之下,所以执行的时候加上全路径就可以

/home/admin/.local/bin/supervisord -c  /etc/supervisord.conf   其实这里还有坑你的python可能版本不对我在直接执行的时候会出现用python2执行的情况‘,我看了一下原来的机器,用的是python执行的,所以我又在执行命令中加了python的全目录’

/usr/bin/python /home/admin/.local/bin/supervisord -c /etc/supervisord.conf

执行完以上命令以后我们可以查看一下是否启动成功

[root@test-hadoop01 /]# ps -ef |grep supervisord
root 5237 1 0 Oct30 ? 00:03:42 /usr/bin/python /home/admin/.local/bin/supervisord -c /etc/supervisord.conf  #此处可以看出命令已经启动成功
root 15985 11736 0 11:04 pts/2 00:00:00 grep --color=auto supervisord
root 29331 1 0 Oct25 ? 00:04:46 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/python /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/supervisord
[root@test-hadoop01 /]#

关于这个报错我参考了这篇文章:https://blog.csdn.net/kkevinyang/article/details/80539940

 error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1

Error: .ini file does not include supervisorctl section

Exited too quickly (process log may have details) 

CRIT Server 'unix_http_server' running without any HTTP authentication checking

Unlinking stale socket /var/run/supervisor/supervisor.sock

解决方案:执行以下命令
unlink /var/run/supervisor/supervisor.sock

这四个解决方式都是在我上文中有体现的,按照我说的做都是可以避免的。

 最后给大家推荐一篇关于supervisor的博客 他写的非常详细,如果我的博客没能解决您的困惑您可以去他那看一下

https://www.cnblogs.com/ruanraun/p/supervisor.html
原文地址:https://www.cnblogs.com/xuziyu/p/11770669.html