11

我在 mod_wsgi 和 apache 而不是 mod_python 上出售过。我已经安装了所有部件(django、apache、mod_wsgi),但在部署时遇到了问题。

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

我的应用程序称为tred。

以下是相关文件:httpd-vhosts(包含在 httpd-conf 中)

名称VirtualHost tred:80



  服务器名称

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

  
    命令允许,拒绝
    允许所有人
  

  别名 /media /Users/dmg/Sites/tred/media

  
    命令允许,拒绝
    允许所有人
  

  别名 / /Users/dmg/Sites/tred/

  
        命令允许,拒绝
        允许所有人
    

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

  WSGIDaemonProcess 用户=dmg 组=员工进程=1 线程=10
  WSGIProcessGroup 趋势


mod_wsgi-handle.wsgi

导入系统
导入操作系统

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

导入 django.core.handlers.wsgi

应用程序 = django.core.handlers.wsgi.WSGIHandler()

当我访问http://tred 时,我得到一个目录列表,而不是呈现的网站。我想我已经正确地遵循了教程,但这显然是不对的。我能做些什么来完成这项工作?

4

4 回答 4

7

如果删除Alias /指令会发生什么?

于 2008-08-31T18:20:51.103 回答
7

请注意 Alias 和 WSGIScriptAlias 指令没有相同的优先级。因此,它们不会按文件顺序进行处理。相反,所有 Alias 指令都优先于 WSGIScriptAlias 指令。因此,'/' 的别名是否出现在 WSGIScriptAlias 之后并不重要,它仍然具有优先权。

于 2009-06-24T12:39:13.763 回答
5

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

备查:

它之所以有效,是因为 Apache 按顺序处理别名指令,并使用第一个匹配项。以前总是打Alias /,这将匹配任何东西WSGIScriptAlias

mod_alias文档中:

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

于 2008-08-31T22:51:15.820 回答
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

于 2013-07-22T20:14:55.997 回答