我已经设法配置 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 应该可以按预期工作。