在尝试使用supervisor 来守护 gunicorn启动的web服务时,遇到了一个小坑,但是这个小坑却耽误了不少时间!
建议:
安装有3中方式:
1.系统安装,这样安装的是系统全局的,系统会使用python2来运行,所以弃用这个方式。
2. 全局pip, 使用pip3 install supervisor 可以安装,但是安装后需要进入到很深的全局包的目录才能运行,如 /usr/local/python3.xxx/xxx/xxx/。 比较繁琐
3. 虚拟环境,在虚拟环境下使用pip install supervisor, 这样也需要使用绝对路径来运行,如 /home/xxx/code/venv/bin/supervisord
选择哪种看自己的使用习惯吧
配置
建议将配置生成到supervisor默认使用的目录去, /etc/supervisor/
使用 echo_supervisor_confi > /etc/supervisor/supervisord.conf
然后在最后加上:
[include]
files = conf.d/*.conf
再创建 conf.d 目录并在其下创建自己的自定义文件进行配置,这里就不贴配置了。
坑:
1. 由于supervisor监控的程序不能是daemon,但是之前gunicorn里面设置成了daemon, 所以导致supervisor认为刚启动的程序意外退出,然后便尝试重启,过了几次之后还是同样的结果就报错了,但实际上gunicorn的服务已经在运行了。将gunicorn配置的daemon改为非daemon就行了。