4

我有一个 apache 实例,其中有以下内容

WSGIPythonPath /production/somelocation/django12/lib/python2.4/site-packages/
<VirtualHost 192.168.1.1:443>
        WSGIScriptAlias / /opt/project.wsgi
        .....

我的 Django 1.5 应用程序 apache 配置看起来像,

WSGIPythonPath /production/somelocation/django15/lib/python2.7/site-packages/
<VirtualHost 192.168.1.2:443>
        ....
        WSGIScriptAlias / /opt/project2.wsgi

我的 /opt/project.wsgi 看起来像

import os
import sys

# django1.2 virtualenv
import site
site.addsitedir("/production/somelocation/django12/lib/python2.4/site-packages")
.....

但是,当我访问该站点时,我仍然会得到我的默认 django (1.5) 实例。我错过了什么?

4

4 回答 4

8

其他答案提到设置 python 路径,但是使用 WSGIPythonPath 或 WSGIPythonHome 是不正确的。WSGIPythonPath / WSGIPythonHome 只能设置server-wide,因此每个虚拟主机没有不同的路径。

您可能希望使用WSGIDaemonProcess python-pathhome参数来设置每个虚拟主机的 python 路径和您的应用程序主目录。

此外,在您的代码中,无需调整 python 路径;只需确保您的虚拟主机配置正确。

于 2013-07-29T11:50:27.733 回答
1

您可能需要设置WSGIPythonHome,因为您有不同的 Django 安装。

WSGIPythonPath用于定义附加目录,但此选项不设置默认python 安装。因此,您的默认 python 目录可能还包括django (1.5)并将此版本识别为默认 django 版本。我不知道您的 python 和 django 安装和配置,但这可能是原因。

WSGIPythonHome的附加信息

于 2013-07-29T08:07:17.557 回答
1

这就是我对 Pyramid 的处理方式:

<VirtualHost *:80>
    Servername hackintosh
    DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>


<VirtualHost *:80>
    ServerName modwebsocket.local
    ErrorLog "/PythonProjects/MOD_WEBSOCKET/logs/error_log"
    CustomLog "/PythonProjects/MOD_WEBSOCKET/logs/access_log" common

    WSGIDaemonProcess pyramid-modwebsocket user=apero group=staff threads=4 python-path=/PythonProjects/MOD_WEBSOCKET/lib/python2.7/site-packages
    WSGIProcessGroup pyramid-modwebsocket

    WSGIScriptAlias /  /PythonProjects/MOD_WEBSOCKET/wsgi/pyramid.wsgi

    <Directory "/PythonProjects/MOD_WEBSOCKET/wsgi">
        WSGIProcessGroup pyramid-modwebsocket
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

<VirtualHost *:80>
    ServerName ai.local
    ErrorLog "/PythonProjects/AI/logs/error_log"
    CustomLog "/PythonProjects/AI/logs/access_log" common

    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    WSGIDaemonProcess pyramid-ai user=apero group=staff threads=4 python-path=/PythonProjects/AI/lib/python2.7/site-packages
    WSGIProcessGroup pyramid-wizard

    WSGIScriptAlias /  /PythonProjects/AI/wsgi/pyramid.wsgi

    <Directory "/PythonProjects/AI/wsgi">
        WSGIProcessGroup pyramid-ai
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>
于 2013-07-29T12:05:17.033 回答
1

此主题和典型原因在以下内容中有详细说明:

您的问题中没有足够的信息来正确评估您遇到的问题。

于 2013-08-02T02:08:43.583 回答