centos6 python3 django-uwsgi-nginx使用supervisor作为uWSGI的守护进程

前端之家收集整理的这篇文章主要介绍了centos6 python3 django-uwsgi-nginx使用supervisor作为uWSGI的守护进程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目前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

4. 生成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/的目录去运行命令?

存疑

参考资料:https://github.com/Supervisor/supervisor/issues/121

猜你在找的CentOS相关文章