2008-08-31 106 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