2013-07-26 112 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

因此,是否這樣做以及我最初的問題解決了您的問題?如果是的話,謝謝你給分。 –