使用IIS 6托管Mercurial

Art*_*lev 15 python mercurial iis-6

我正在尝试设置由Windows Server 2003下的IIS托管的Mercurial存储库.在这篇文章之后,我安装了Python 2.5.4.4和Mercurial 1.3,设置了虚拟目录,解压缩了library.zip并创建了hgwebdir.config.

但是,当我尝试打开http://hostname/hg/hgwebdir.cgi时,我收到一条错误"指定的CGI应用程序由于没有返回一组完整的HTTP标头而行为不端."我做得最好:

  1. 检查IIS映射到.py和.cgi扩展名.我甚至尝试使用FastCGI但没有成功.
  2. 在同一个目录中创建了"Hello World"并检查它是否正常工作.
  3. 检查了IUSR,IWAM和NETWORK SERVICE的Python,IIS和repos目录的读/执行权限.
  4. 试图从Mercurial邮件列表中应用两个不同的补丁.既然他们都老了,我就没有成功.
  5. 安装Sysinternals并在请求期间检查文件系统错误.除了加载它的库之外,我在Python过程中发现了大量的缓冲区溢出结果.
  6. 试图在脚本中添加"Content-type:text/html".

还有一件事是当我要求不存在的脚本文件(例如/hg/inexist.cgi)时,我有同样的错误.什么都没有帮助!

Jon*_*ght 5

还有一些我需要解决的问题:

  • 在各种HOWTO使用的地方c:\whatever\Python26\python.exe -u "%s" "%s"使用c:\whatever\Python26\python.exe -u -O -B "%s" "%s" -O导致它也寻找.pyo文件(不仅仅是.py或.pyc,至少在我的版本中不存在).-B导致它不会尝试将它找到的.py文件编译成.pyo文件(由于缺少写入权限而失败)
  • 我安装了Python 2.7.Mercurial 1.6.2的.pyo文件是用Python 2.6编译的.这导致幻数错误.卸载2.7并安装2.6.5修复此问题.(如果您将来在某个时候阅读此内容,此点可能不再相关 - 请检查Mercurial目录中的DLL名称,或TortoiseHg的目录,具体取决于您从哪里获取library.zip)
  • hgwebdir.cgi现在只是hgweb.cgi - webdir已集成到其中


Art*_*lev 1

最后,我发现任何 python 脚本错误都会返回“无标头”错误,因此我使用控制台解释器检查了脚本,并修复了配置文件中的错误。当然,我应该在 ServerFault 而不是 StackOverflow 上问这个问题 - 缺乏睡眠完成了这项工作:)