如何配置全局管理程序以使用pyenv和virtualenv

时间:2015-01-15 01:42:14

标签: django python-2.7 virtualenv uwsgi supervisord

我正在将Django安装从1.4升级到1.7,这意味着我也在从Python 2.6.6迁移到Python 2.7。生产服务器使用Debian 6.09,它需要全局python 2.6,不幸的是,此时升级操作系统并不是一个有效的解决方案。

为了解决这个问题,我安装了以下堆栈:

  • pyenv with python 2.7
  • virtualenv
  • virtualenvwrapper
  • uwsgi
  • supervisor(从全局python 2.6安装,以root身份运行)
  • nginx的

当我从virtualenv手动运行uwsgi时,该网站运行良好。但是,当我使用supervisor启动它时,它将只使用全局python安装。

作为virtualenv的用户:

(django1.7)user@staging:~$ echo $PATH
/home/user/.virtualenvs/django1.7/bin:/home/user/.pyenv/shims:/home/user/.pyenv/bin:/usr/local/bin:/usr/bin:/bin

我的主管配置文件:

[program:app]
command = /home/user/.virtualenvs/django1.7/bin/uwsgi
  --module app.wsgi
  --socket 127.0.0.1:10001
  --master
  --harakiri 120
  --max-requests 5000
  --threads 6
directory=/home/user/app/
environment=PATH="/home/user/.virtualenvs/django1.7/bin:/home/user/.pyenv/shims:/home/user/.pyenv/bin:",DJANGO_SETTINGS_MODULE="app.settings",HOME="/home/user"
user=user
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT

任何人都可以帮忙指出我的配置错误吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

uWSGI有一个特定的virtualenv配置指令:

  virtualenv=/home/user/.virtualenvs/django1.7

另一个例子:

https://github.com/miohtama/LibertyMusicStore/blob/master/conf/uwsgi.ini

更多信息

http://uwsgi-docs.readthedocs.org/en/latest/tutorials/dreamhost.html?highlight=virtualenv

(看起来关于virtualenv的uWSGI文档有点令人困惑,我可能需要与作者仔细检查一下)

答案 1 :(得分:1)

我发布的配置最终正常运行。我是愚蠢的,并没有首先运行supervisorctl更新,以确保它在更新的配置中加载。