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