2013-07-26 67 views
3

我有一个Apache实例,我有以下如何为多个单独的Django实例配置Apache WSGI?

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)实例。我错过了什么?

回答

6

其他的答案提设定Python路径,但使用WSGIPythonPath或WSGIPythonHome是不正确的。 WSGIPythonPath/WSGIPythonHome只能设置为服务器范围内的,因此每个虚拟主机没有不同的路径。

你想使用WSGIDaemonProcess蟒蛇路径参数来设置Python路径和每个虚拟主机您的应用程序的主目录。

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

+0

我刚才在说python-path。 看到我的第二个答案,因为直到现在我还无法访问我的httpd-vhost文件。 –

+0

谢谢,我使用了WSGIDaemonProcess,但这个工作,我没有设置一个用户或组,然后使用“WSGIApplicationGroup%{GLOBAL}”。所以我不知道这是否是一个安全问题? – felix001

+0

在同一台机器上托管多个站点时,您不应该这样做。您可以使用** user **和** group **参数来将用户/组设置为WSGI应该执行的位置。 – bouke

1

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

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

附加信息为WSGIPythonHome

1

这是我做的金字塔:

<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> 
+0

因此,是否这样做以及我最初的问题解决了您的问题?如果是的话,谢谢你给分。 –