目前Supervisor 官方版目前只能运行在 Python 2.4 以上版本,但是还无法运行在 Python 3 上。
但是想用supervisor来管理python3中使用的uwsgi也是比较简单的,只需要在python2的环境中运行suervisor即可。
1.安装virtualenv
pip3 install virtualenv
2.创建python2 的virtualenv虚拟环境
virtualenv --no-site-packages --python=/usr/bin/python_old py2.6venv
其中--python=/usr/bin/python_old 指明了虚拟环境中使用的是哪个版本的python。
我现在的服务器最开始的时候是python2.6(可执行文件),我把它重命名成了python_old。
注意如果以前服务器上没python2.6,需要手动安装一个。
生成的虚拟环境是py2.6venv.
通过下面的命令进入虚拟环境
source py2.6venv/bin/activate
运行python发现python的版本号为2.6.6
(py2.6venv) [aslan@VM_11_215_centos ~]$ python Python 2.6.6 (r266:84292,Aug 18 2016,15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type "help","copyright","credits" or "license" for more information. >>>
3.在虚拟环境中安装supervisor。注意这里不要使用pip3
pip install supervisor
首先在当前虚拟环境下,切换到root用户,然后cd到py2.6venv的bin目录下。(必须)
(py2.6venv) [aslan@VM_11_215_centos bin]$ su Password: (py2.6venv) [root@VM_11_215_centos bin]# pwd /home/aslan/py2.6venv/bin (py2.6venv) [root@VM_11_215_centos bin]# ./echo_supervisord_conf > /etc/supervisord.conf (py2.6venv) [root@VM_11_215_centos bin]#
vim /etc/supervisord.conf
[program:my_blog] user=aslan command = uwsgi --ini /home/aslan/myblog/myblog_uwsgi.ini stopsignal=QUIT autostart=true autorestart=true stdout_logfile=/home/aslan/myblog/logs/my_project.log redirect_stderr=true
需要注意的是:
user要使用django项目所在的用户,
command 就是uwsgi启动django项目的命令
(root用户,py2.6venv的bin目录下)不知道为什么非得root用户,sudo不行
使用命令来启动suervisor
(py2.6venv) [root@VM_11_215_centos bin]# /etc/init.d/supervisord stop Stopping supervisord: [ OK ] (py2.6venv) [root@VM_11_215_centos bin]# pwd /home/aslan/py2.6venv/bin (py2.6venv) [root@VM_11_215_centos bin]# ./supervisord -c /etc/supervisord.conf (py2.6venv) [root@VM_11_215_centos bin]#
5.查看进程是否启动
ps -aux
6.通过浏览器访问
这样就可以用supervisor来管理python3的项目了。
里面比较让人不明白的地方:
1.为什么非得要root用户去执行命令?
2.为什么职能在py2.6venv/bin/的目录去运行命令?
存疑