python - 使用 IIS 6 托管 Mercurial

标签 python iis-6 mercurial

我正在尝试将 Mercurial 存储库设置为由 IIS 在 Windows Server 2003 下托管。关注 this post我安装了 Python 2.5.4.4 和 Mercurial 1.3,设置了虚拟目录,提取了 library.zip 并创建了 hgwebdir.config。

但是,当我尝试打开 http://hostname/hg/hgwebdir.cgi我收到错误消息“指定的 CGI 应用程序因未返回完整的 HTTP header 集而行为异常。”我尽力而为:

  1. 检查 IIS 到 .py 和 .cgi 扩展名的映射。我什至尝试使用 FastCGI 但没有成功。
  2. 在同一目录中创建“Hello World”并检查它是否正常工作。
  3. 检查了 IUSR、IWAM 和 NETWORK SERVICE 的 Python、IIS 和 repos 目录的读取/执行权限。
  4. 尝试应用来自 Mercurial mailing list 的两个不同补丁.因为他们都老了,所以我没有成功。
  5. 安装了 Sysinternals 的 procmon 并检查了请求期间的文件系统错误。除了加载库时 Python 进程中的大量缓冲区溢出结果外,我什么也没发现。
  6. 尝试将“Content-type: text/html”添加到脚本中。

还有一件事是当我请求不存在的脚本文件(例如/hg/inexist.cgi)时我有同样的错误。没有任何帮助!

最佳答案

还有一些我需要修复的东西:

  • 各种 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 编译的。这导致了魔数(Magic Number)错误。卸载 2.7 并安装 2.6.5 解决了这个问题。 (如果你在未来的某个时候阅读这篇文章,这一点可能不再相关 - 检查 Mercurial 目录或 TortoiseHg 目录中 DLL 的名称,具体取决于你从哪里获取 library.zip)
  • hgwebdir.cgi 现在只是 hgweb.cgi - webdir 已集成到其中

关于python - 使用 IIS 6 托管 Mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1191136/

相关文章:

python - Django DateTimeField() 和 timezone.now()

mercurial - 如何存档/导出自使用 Mercurial 进行特定修订后更改的所有文件?

mercurial - 在 mercurial 中跨子存储库移动文件

python - 使用 reStructuredText 添加一些具有自定义 "id"和 "class"属性的 HTML

python - 获取边末端的节点 g.edge_iter

python - 让 pandas.read_csv() 忽略 csv 文件开头的垃圾?

web - 域名和 WWW 的重定向或主机头

Sitecore 需要 IIS6

iis-6 - mp4 文件的 IIS 401.3 错误

deployment - 使用 Mercurial 管理 Web 开发和部署之间差异的最简单方法?