English 中文(简体)
使用WSGI和apache设置django
原标题:
  • 时间:2008-08-31 12:03:20
  •  标签:

I have been sold on mod_wsgi and apache rather than mod_python. I have all the parts installed (django, apache, mod_wsgi) but have run into a problem deploying.

我在osx 10.5上使用apache 2.2和django 1.0b2,mod_wsgi-2.3

我的应用程序叫tred。

Here are the relevant files: httpd-vhosts (included in 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我得到的是目录列表,而不是渲染的网站。我认为我已经正确地遵循了教程,但显然是不对的。我能做些什么来让它发挥作用?

最佳回答

如果删除<code>Alias/</code>指令,会发生什么情况?

问题回答

请注意,Alias和WSGIScriptAlias指令的优先级不同。因此,它们将不会按照写入时的文件顺序进行处理。相反,所有Alias指令都优先于WSGIScriptAlias指令。因此,如果/的Alias出现在WSGIScriptAlias之后,它仍然具有优先权,这并不重要。

它有效。我不知道为什么,但确实如此。

供日后参考:

它之所以有效,是因为Apache按顺序处理别名指令,并使用第一个匹配。在<code>WSGIScriptAlias</code>之前,它总是命中<code>Alias</code>,这将匹配任何内容。

mod_alias文档

首先,所有重定向都会在处理别名之前进行处理,因此,与RedirectRedirectMatch匹配的请求将永远不会应用别名。其次,别名和重定向按照它们在配置文件中出现的顺序进行处理,第一个匹配优先。

请尝试遵循本教程-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





相关问题
热门标签