2008-08-31 81 views
8

我已經在mod_wsgi和apache上銷售,而不是mod_python。 我已經安裝了所有部件(django,apache,mod_wsgi),但遇到了部署問題。用WSGI和apache設置django

我在OSX 10.5與Apache 2.2和Django的1.0b2,mod_wsgi的-2.3

我的應用程序被稱爲TRED。

以下是相關文件: 的httpd的虛擬主機(包括在的httpd-conf的)

 
NameVirtualHost tred:80 



    ServerName tred 

    Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media 

    
    Order allow,deny 
    Allow from all 
    

    Alias /media /Users/dmg/Sites/tred/media 

    
    Order allow,deny 
    Allow from all 
    

    Alias//Users/dmg/Sites/tred/ 

    
     Order allow,deny 
     Allow from all 
    

    WSGIScriptAlias//Users/dmg/Sites/tred/mod_wsgi-handler.wsgi 

    WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 
    WSGIProcessGroup tred 


mod_wsgi的-handle.wsgi

 
import sys 
import os 

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

當我去http://tred我得到一個目錄列表而不是渲染的網站。我想我已經正確地關注了教程,但顯然不對。我能做些什麼來完成這項工作?

回答

6

如果您刪除Alias /指令會發生什麼情況?

5

它的工作原理。我不知道爲什麼,但它確實如此。

以供將來參考:

它的工作原理因爲Apache爲了處理別名指令,並使用的第一場比賽。它總是打Alias /,這將匹配任何東西,在WSGIScriptAlias之前。

mod_alias documentation

首先,所有的重定向被處理別名處理之前,並且因此RedirectRedirectMatch將從未施加的匹配請求別名。其次,別名和重定向按照它們在配置文件中出現的順序進行處理,第一個匹配優先。

7

請注意,別名和WSGIScriptAlias指令不具有相同的優先級。因此,它們不會按文件的順序進行處理。相反,所有的Alias指令都優先於WSGIScriptAlias指令。因此,如果'/'的別名出現在WSGIScriptAlias之後,那麼它就不重要了,它仍然會優先。

2

試試下面這個教程 - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

您嘗試了主機Apache的/ var/WWW /文件夾和Django應用程序都在根目錄(/)。由於Alias指令優先於WSGIScriptAlias,因此它將呈現apache目錄。

您可以嘗試在/ app上託管django應用程序。或者,將/ var/www /文件夾存放在不同的位置,如/ public