Differences between revisions 25 and 26
Revision 25 as of 2007-12-30 07:40:23
Size: 4204
Editor: wangzhen
Comment:
Revision 26 as of 2008-04-30 08:41:38
Size: 4206
Editor: ZoomQuiet
Comment:
Deletions are marked like this. Additions are marked like this.
Line 43: Line 43:
[[PageComment2]] ##[[PageComment2]]

TableOfContents

说明

这个东西已经不推荐使用。要在IIS跑django,请使用: http://code.google.com/p/pyisapi-scgi

D4I (Django For IIS,暂定名)

文件已更新,适用于最新版的Django. 下载后,d4i.py_2006-01-08 改名为d4i.py . 另一个文件也要这样改名.

功能描述

  1. 帮助开发者在IIS上使用Django

已知缺陷

  1. 目前静态文件还不能直接交给IIS处理,还是通过Django来处理的. 这个问题正在改进中
    • 静态文件不是在 iis 下另外建个虚拟目录不就搞定了? -- HuangYi

      • 如果把django设到IIS的一个站点(非虚拟目录),那么,访问这个站点下的所有路径,都人交到django去处理了。IIS好像不能像Apache那样可以指定某个路径是静态的。--[:torry:头太晕]
  2. 问题已解决,原来是自己对IIS不熟悉,只要新建一个media虚拟目录,然后将虚拟目录中的Application Extension Mapping那一项remove了就可以了。

文件列表

  1. attachment:d4i.py_2007-4-23 Django的Handler
  2. attachment:d4iisapi.py_2006-01-08 ISAPI代码
  3. attachment:readme.txt 本文内容

运行环境

  1. Python2.4 http://www.python.org

  2. activepython2.4 或 pywin32 http://www.activestate.com/python.plex

配置方法

  1. 将d4i.py 复制到 C:\Python24\Lib\site-packages\Django-0.95-py2.4.egg\django\core\handlers目录下
  2. 将d4iisapi.py复制到一个目录下(任何的).
  3. 直接双击d4iisapi.py 会在相同目录下生成一个_d4iisapi.dll , 同时会在iis的默认站点建立一个虚拟目录.不用的话,可以删掉这个虚拟目录 . 也可以直接将C:\Python24\Lib\site-packages\isapi目录下的PyISAPI_loader.dll复制到相同目录下, 并改名为_d4iisapi.dll
  4. 新建站点或虚拟目录.在站点或虚拟目录的属性窗口中," Home Directory" 标签页, 点击"Configuration"按钮打开"Application Configuration"对话框. 在"Wildcard application maps"中,点" Insert"按钮,打开"Add/Edit Application Extension Mapping"对话框. 点"Browse"按扭选择刚才的_d4iisapi.dll . 去掉"Verify that file exists"选框, 然后OK
  5. 我用的是英文版,真累人.... :P
  6. 忘了说了.站点或虚拟目录的"Home Directory"标签页中的"Local Path"项要设为你的Django站点的目当.也就是包含你的settings.py和urls.ppy两个文件的那个目录.
  7. 别忘了把那两个目录的权限设置一下.(我调试的时候,就是因为权限的问题,多花费了一天时间啊.)
  8. 今天升级到了python2.5和activepython2.5,发现了一个新的问题。activepython2.5的PyISAPI_loader.dll出现了一个新的问题,_d4iisapi.dll不能找到同一目录下的d4iisapi.py,必须将d4iisapi.py放到python的lib目录下,否则会出错。

  9. IIS中,站点属性目录权限标签中所使用的访问用户(默认为IUSR),应使用具有administrator权限的用户,否则在import时会出错。 这个问题我一直没有找到好的解决办法,IIS的权限规则没搞清。

  10. 如果要使用django.contrib.auth,请在IIS站点属性的目录安全性中,将集成windows认证那一项去掉。否则会出错。

  11. 修改程序后不用重启IIS服务的方法: 在IIS的Application Pools中新建一个Application Pool,例如名字为d4i , 在你要使用django的站点属性里,Home Directory标签页中,设置Application Pool项为刚才新建的d4i. 这样,当修改程序后,只要重新启动这个名为d4i的application pool即可生效.不影响其它站点.

感谢

  1. 感谢limodou, Dreamingk(天成), 刘鑫, 等等几位老大的指导. (人数太多,不一一列举...)
  2. 感谢jejwe帮忙测试。

[:torry:头太晕] [email protected]

D4I (last edited 2009-12-25 07:15:45 by localhost)