部分较小的项目例如flask,对内部使用,可无需使用web server,直接用flask自带服务即可完成需求,但考虑到直接使用python app.py
启动flask后,运行过程进程可能会退出,因此有必要对其进行监控并自动重启,supervisor可满足需求,加上其用python写成,可以独自进行二次开发(supervisor的代码值得学习)。本文是对以往部分项目进行一个整理,作为参考资料归档。
1、离线安装supervisor
supervisor下载地址:https://files.pythonhosted.org/packages/ca/1f/07713b0e1e34c312450878801d496bce8b9eff5ea9e70d41ff4e299b2df5/supervisor-4.1.0-py2.py3-none-any.whl
setuptools的下载地址:
https://files.pythonhosted.org/packages/d9/de/554b6310ac87c5b921bc45634b07b11394fe63bc4cb5176f5240addf18ab/setuptools-41.6.0-py2.py3-none-any.whl
先安装setuptools
unzip setuptools-41.6.0.zip && cd setuptools-41.6.0
python setup.py install
再安装supervisor
unzip supervisor-4.1.0.tar.gz && cd supervisor-4.1.0
python setup.py install
# 测试是否安装成功
[root@~d]# python
>>> import supervisor
>>>
2、配置supervisor环境变量
很多网上教程在安装完supervisor后,都会给出如下提示:
在/etc/supervisor目录下生成配置文件
echo_supervisord_conf>/etc/supervisord.conf
但如果echo_supervisord_conf或者supervisord 二进制程序所在目录没有配到PATH环境变量的话,那么提示未找到对应的命令
[root@wap ~]# echo_supervisord_conf>/etc/supervisord.conf
-bash: echo_supervisord_conf: command not found
查找echo_supervisord_conf 在哪个目录下
2.1 PATH的问题
一般会在python的安装目录下,例如/usr/local/python27/bin 或者在编译安装python所设定的路径
[root@wap~]# which python3.5 /usr/local/bin/python3.5
但会有例外:
很多人安装python后,并没有把python的bin路径设到PATH里,而是直接把新安装的python 路径通过软链接的方式覆盖旧python,例如下面所示:
ln -s /usr/bin/python3.5 /usr/bin/python
虽然这种方式在可以启动python3.5,但一旦安装新的库后,这些库所在路径不是位于python3.5目录下,而是位于系统默认的bin目录下,如下面所示:
[root@wap ~]# ls /usr/bin/
flask python3.5 pyvenv-3.5 pip3 supervisorctl supervisord echo_supervisord_conf
这里flask库和supervisor库都在/usrl/bin/
目录下
而此时查看系统系统的path变量,centos最初始的path配置如下
# .bash_profile
if [ -f ~/.bashrc