运行多个uwsgi python版本
我试图用uwsgi部署django,我想我对它的工作原理缺乏了解。 我有uwsgi在皇帝模式下运行,我试图让vassals在自己的virtualenvs中运行,使用不同的python版本。
皇帝配置:
[uwsgi]
socket = /run/uwsgi/uwsgi.socket
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
emperor-tyrant = true
master = true
autoload = true
log-date = true
logto = /var/log/uwsgi/uwsgi-emperor.log
附庸:
uid=django
gid=django
virtualenv=/home/django/sites/mysite/venv/bin
chdir=/home/django/sites/mysite/site
module=mysite.uwsgi:application
socket=/tmp/uwsgi_mysite.sock
master=True
我在皇帝日志中看到以下错误:
Traceback (most recent call last):
File "./mysite/uwsgi.py", line 11, in <module>
import site
ImportError: No module named site
我的网站的virtualenv被创建为python 3.4 pyvenv。 uwsgi是系统uwsgi(python2.6)。 我的印象是,皇帝可能是任何Python版本,因为这个封臣将会由主进程启动的Python和环境启动。 我现在认为这是错误的。
我想要做的是用系统python运行uwsgi master进程,但是运行带有自己的python和他们自己的库的各种vassals(应用程序)。 这可能吗? 或者如果我想运行多个python,我将不得不运行多个皇帝? 有点击败了虚拟环境的目的。
“优雅”的方式是将uWSGI python支持作为插件构建,并为每个python版本插件:
(来自uWSGI来源)
make PROFILE=nolang
(将构建一个没有语言支持的uWSGI二进制文件)
PYTHON=python2.7 ./uwsgi --build-plugin "plugins/python python27"
将建设python27_plugin.so
,你可以在加载附庸
PYTHON=python3 ./uwsgi --build-plugin "plugins/python python3"
将构建python3
的插件等。
有很多种方法来构建uWSGI插件,我报告的是最安全的(它确保#ifdef
得到遵守)。
话虽如此,每个python版本都有一个uWSGI Emperor也是可行的。 记住皇帝是可堆叠的,所以你可以有一个普通的皇帝为每个python版本产生一个皇帝(作为它的附属物)。
链接地址: http://www.djcxy.com/p/65935.html上一篇: Running multiple uwsgi python versions
下一篇: Django + uwsgi + nginx redirect to default page "Welcome to NGINX"