配置 Django 以在 IIS7 上的 PyISAPIe 下运行

配置 Django 以在 IIS7 上的 PyISAPIe 下运行

我已经设法配置 PyISAPIe 来从运行在 IIS7 上的新网站运行 Python 代码(例如,一个简单的 hello world),但我不太清楚如何在同一环境中启动并运行 Django。

有人能提供任何关于如何最终将两者联系起来的建议吗?

这是一个简单的测试服务器,所以我甚至不需要费心使用多个实例。我只想在“/”处运行一个站点实例。

这是我的整个isapi.py文件:

import os
import sys
from Http.WSGI import RunWSGI
from Http import Env

from django.core.handlers.wsgi import WSGIHandler as DjangoHandler


sys.path = [
    'c:\parlour\site',
    'c:\parlour\site\lib',
    'c:\parlour\site\project'
] + sys.path

os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings'

Base = '/'
Exclude = ['/media']

def Request():
  PathInfo = Env.PATH_INFO

  if not PathInfo.startswith(Base):
    return True

  for Excl in Exclude:
    if PathInfo.startswith(Excl):
      return True

  return RunWSGI(DjangoHandler(), Base=Base)

我认为我遇到的最大问题是理解 PyISAPIe 如何知道执行上述文件。使用 Apache,您需要包含WSGIScriptAlias / /path/to/mysite/apache/project.wsgi。我没有看到 PyIASPIe 的等效项,尽管我可能忽略了一些显而易见的东西。

答案1

任何在 URL 末尾附加 .py 的方式都无法运行 Django。

您避免使用内置 Django 开发服务器的理由是什么?它在大多数环境中都运行良好,无需进一步配置即可开箱即用?

PyASPIe 不是在 IIS 下运行 Django 的推荐方法,但由于它确实实现了 WSGI 接口,我认为您应该从它开始。您是否尝试过示例 WSGI 配置文件中包含一些有关 django 的内容?

http://sourceforge.net/apps/trac/pyisapie/browser/Trunk/PyISAPIe/Python/Examples/WSGI/Isapi.py

顺便说一句,这可能是运行开发服务器的一个糟糕方法,因为每次更改 Python 代码时,您可能都必须重新启动服务器。这只是使用 Django 内置开发服务器的众多原因之一。

编辑:

据我所知,配置确实包含了运行 Django 所需的几乎所有内容。发挥魔力的是这些行:

from django.core.handlers.wsgi import WSGIHandler as DjangoHandler
os.environ["DJANGO_SETTINGS_MODULE"] = "myapp.settings"

您只需要确保您的项目和 Django 本身在您的 PYTHONPATH 中,并且您可以导入项目的设置。

然后你只需要将 PyISAPIe URL 设置为“/”,如下所示:

Apps = {
  "/"  : lambda P: RunWSGI(DjangoHandler()),
}

然后你的 Django urlconf 应该可以按预期工作。

相关内容