【问题标题】:Running Django in Virtualenv using Apache with Mod_Python and Multiple Python installations使用带有 Mod_Python 和多个 Python 安装的 Apache 在 Virtualenv 中运行 Django
【发布时间】:2011-03-31 01:09:12
【问题描述】:

我想使用 mod_python 在 Apache 中使用 virtualenv 在服务器上运行 Django 项目。现在我知道推荐使用的 apache 模块是 mod_wsgi,但我暂时不想安装它。

服务器上的默认python安装是python2.4,服务器上的一些其他网站使用它。因为我的项目是建立在 python2.6 上的,所以我使用“make altinstall”将它安装在 /usr/local/ 中的 python2.4 旁边。 我使用这个网站来设置我的 apache conf 文件:http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/

我的问题是:有没有办法指定它(可能是 mod_python)应该使用 python2.6 而不是 python2.4? 如果无法使用 mod_python 在一个 apache 中运行 2 个 python 版本,是否可以使用 mod_wsgi?或者是否可以在一个 apache 安装中使用 mod_python 和我使用 mod_wsgi 的另一个站点?

【问题讨论】:

    标签: python django apache mod-python virtualenv


    【解决方案1】:

    不,你不能这样做。 mod_python 使用特定的 Python 版本预编译。如果你想改变那个版本,你必须重新编译 mod_python - 如果你这样做,你还不如安装 mod_wsgi。

    使用 mod_wsgi 是可能的,因为它不会将解释器嵌入到 Apache 本身中,因此它不关心您使用的版本。让 virtualenv 与 mod_wsgi 一起工作很容易——您只需在 .wsgi 脚本中激活 virtualenv:

    activate_this = os.path.join(path_to_my_site, "bin/activate_this.py")
    execfile(activate_this, dict(__file__=activate_this))
    

    【讨论】:

    • +1 用于 mod_wsgi。也结帐code.google.com/p/modwsgi/wiki/VirtualEnvironments我发现它非常详细和有用。
    • 抱歉,您对 mod_wsgi 的建议是错误的。在 mod_wsgi 中,它仍然将解释器嵌入到 Apache 中,并且仍然绑定到特定的 Python 版本。您不能只使用虚拟环境让 mod_wsgi 引用不同的 Python 版本。 FWIW,您也不能同时使用 mod_python 和 mod_wsgi,因为它们使用不同的 Python 版本。
    • @Graham Dumpleton:感谢您的回复。如果你说的是这种情况,这是否意味着我必须运行 2 个版本的 apache,每个版本都可以使用不同的 python 版本?
    • 是的,如果你在谈论不同的 Python 版本,那么需要不止一个 Apache。 Apache/mod_wsgi 虚拟环境仅用于针对相同版本的 Python 拥有不同的模块集。
    【解决方案2】:

    您还可以在不同端口上使用 runwsgiserver 运行 django 项目,然后将 apache 与反向代理一起使用。

    像这样:

    source your_env/bin/activate
    python manage.py runwsgiserver host=localhost port=8123
    

    以及 apache 上的反向代理:

    <VirtualHost *:80>
        ServerName sitename.com
        ServerAlias www.sitename.com
    
    ProxyRequests Off
    
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    
    ProxyPass / http://localhost:8123/
    ProxyPassReverse / http://localhost:8123/
    
    </VirtualHost>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      相关资源
      最近更新 更多