9

我试图让 Mercurial 托管在 IIS 7.5(Win 7 x64)上,并一直遇到我似乎无法修复的错误。

我在这里遵循了 Jeremy Skinners 教程:IIS7 上的 Mercurial

而不是 hgwebdir,我使用 hgweb,因为我使用 Mercurial 1.7.2

我已经安装并工作了 python。我在http://localhost/hg -> 在目录 c:\inetpub\wwwroot\hg 中为 Mercurial 设置了一个 IIS 应用程序

我将模板目录放入 c:\inetpub\wwwroot\hg 我将 library.zip 文件解压缩到 c:\inetpub\wwwroot\hg

当我访问该站点时,我收到一个错误 -> File "C:\inetpub\wwwroot\hg\hgweb.cgi",第 15 行,来自 mercurial import demandimport;demandimport.enable() ImportError: No module named mercurial".

在搜索此错误时,我找到了以下答案:https ://stackoverflow.com/questions/2123798/

按照接受的答案,我将 hgweb.cgi 更改为如下所示:

#!c:/python/python26/python.exe
#
# An example hgweb CGI script, edit as necessary
# See also https://www.mercurial-scm.org/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/path/to/repo/or/config"

# Uncomment and adjust if Mercurial is not installed system-wide:
import sys; sys.path.insert(0, "c:\inetpub\wwwroot\hg")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)

这样做之后,我仍然得到同样的错误。我不知道还能做什么。任何帮助将不胜感激。

Edi 1: c:\inetpub\wwwroot\hg 根据请求的屏幕截图:我的汞目录

4

4 回答 4

15

在过去一周左右的时间里,我一直在为同样的设置而苦苦挣扎。

在我看来,他们最近对 IIS 中的 mercurial 工作方式进行了一些重大更改,因此上面指向 Jeremy Skinners 教程的链接对于 1.7.2 将是有问题的

这是一个更新的链接 ,我发现我必须做一些不同的事情。

这些说明适用于 1.7.x,如果您使用的是 1.8.x,请务必阅读下方 Ethan 的评论!

我按照/contrib/win32/hgwebdir_wsgi.py 评论中的说明进行操作。

  • 安装Python 2.6.6

  • 将 Python 添加到系统 PATH(让生活更轻松)

  • 安装pywin32 v214(使用 Python 安装程序,重要!)(注意这是针对 python 2.6 构建的)

  • 安装isapi_wsgi

  • 下载 mercurial 源码包
    解压,然后运行

    python setup.py --pure build_py -c -d 。build_ext -i build_mo --force
    python setup.py --pure install --force
    
  • 将 hgwebdir_wsgi.py 从 /contrib/win32 复制到您要从中托管它的文件夹。

  • 在您要托管的文件夹中创建一个文件 hgweb.config。添加内容

    [路径]
    yourRepoName = c:\yourRepoLocation
    
  • 编辑 hgwebdir_wsgi.py 以指向 hgweb.config。如果 hg 是网站的根目录,则 path_prefix 为 0。如果你把它放在一个深度为 1 的 vdir 中,那么它就是 1,等等。

  • 运行 python hgwebdir_wsgi.py 创建 isapi dll _hgwebdir_wsgi.dll。控制台应打印出“安装完成”

  • 在 IIS 中创建应用程序池(无托管代码)

  • 创建您的网站,将文件夹设置为与 hgwebdir_wsgi.py 相同的文件夹

  • 添加Module类型的Handler,使用“*”作为映射,选择_hgwebdir_wsgi.dll作为可执行文件,选择isapimodule作为类型,Mercurial-ISAPI作为名称(虽然名称并不重要)

  • 编辑模块的功能权限以允许执行。

web.config(前两个步骤):

<system.webServer>
<handlers accessPolicy="Read, Execute, Script">
<add name="Mercurial-Isapi" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\inetpub\hgweb\_hgwebdir_wsgi.dll" resourceType="Unspecified" />
</handlers>
</system.webServer>

毕竟,我能够让它工作。

最后一件事,我确实将 MFC71.dll 复制到 windows/system32,尽管我不确定是否有必要 http://python.net/crew/skippy/win32/

我认为我在这里得到的和上面的链接之间的主要区别是我做了“纯 python”mercurial 安装,虽然我是一个完整的 python 新手,所以我不确定。我还为 pywin 和 isapi_wsgi 而不是普通的 windows msis 做了“python 安装”。

于 2010-12-06T14:49:57.870 回答
3

Adam Boddington 编写了一个更新的安装说明,现在可以使用: http: //stackingcode.com/blog/2011/02/24/running-a-mercurial-server-on-iis-7-5-windows-server-2008- r2

于 2011-03-25T15:19:12.877 回答
3

我写了关于如何使用当前版本的 Mercurial (1.8.x) 以及当前版本的 Python (2.7)在 IIS7 上设置 Mercurial 存储库的最新说明。

这对你有用,如果你用它来投票赞成(或反对)答案,我将不胜感激。

于 2011-06-28T05:14:21.017 回答
1

我之前确实有很多错误。卸载所有 python、pywin32、isapi_wsgi 并像上面一样安装它。它轻而易举。卢克

于 2010-12-30T15:19:41.560 回答