如何在IIS上设置Mercurial和hgweb?


73

我一直在寻找关于如何在IIS上运行hgweb的不错的指导,但是我没有发现太多的价值。

Mercurial Wiki上有此“逐步说明”,但这不是很好。还有这个这个,但同样,我找不到好的步骤,导致了那些上手哪里。


为什么不从Wiki上的说明开始,然后说出问题所在。另外,如果您可以使用它,则可以更正Wiki。
马修·弗拉申

3
Wiki对于我的Windows安装是错误的。没有hgwebdir.cgi。此外,它不会告诉你在哪里得到它,把它放在哪里,等等Mercurial是真的缺少一个很好的指南对于IIS,这是我希望的StackOverflow可能的步骤。
凯文·贝里奇

2
@Kevin Berridge-在vampirebasic.blogspot.com/2009/06/中有Windows的演练... 对我有用
彼得·伯尼尔


@Firegarden该链接不再有效
David Sykes

Answers:


49

昨天我只需要安装一个新的Mercurial实例,这是1.7的更新说明:

  1. 安装Mercurial(这些说明已通过1.7测试)
  2. 安装Python(对于Mercurial 1.7,必须使用x86版本的Python 2.6.6)
  3. 您需要从Mercurial来源下载hgweb.cgi文件。您可以通过运行以下命令下载源:hg clone https://www.mercurial-scm.org/repo/hg/
  4. 创建一个文件夹,它将成为您的Web应用程序文件夹。您将需要将三件事复制到该文件夹​​中:

    • hgweb.cgi文件
    • “ C:\ Program Files \ Mercurial”文件夹中Library.zip的内容
    • 您的“ C:\ Program Files \ Mercurial”中的“模板”文件夹
  5. 您需要确保在IIS中设置了Python。

    • 通过以下方式启用CGI:控制面板->打开或关闭Windows功能->角色-> Web服务器(IIS)->添加角色服务->检查CGI
    • 在IIS中创建一个新的网站,并确保物理路径是您在上面创建的文件夹
    • 在新网站的处理程序映射中,选择“添加脚本映射”。输入* .cgi作为请求路径,输入c:\ Python26 \ python.exe -u“%s”作为可执行文件,并输入Python作为名称。
  6. 您还需要创建一个名为“ hgweb.config”的文件,其内容类似于以下内容。文件中的路径必须是驱动器上要存储Mercurial存储库的位置:

    [集合]
    c:\ Mercurial \ repos = c:\ Mercurial \ repos

  7. 编辑hgweb.cgi文件,并将其设置hgweb.config路径的行更改为以下内容(无论hgweb.config文件在哪里):

    config =“ C:\ Mercurial \ hgweb.config”

  8. 现在,打开浏览器并导航到http://localhost/mercurial/hgweb.cgi(或在IIS中设置的适当URL路径),您应该看到Mercurial Repositories页面。

另外,请查看Jeremy Skinners博客文章。这有些过时了,但是还有一些额外的好步骤,例如为更干净的URL设置URL重写。


我已经按照这些说明在XP(专业版)下设置了Mercurial和IIS。索引显示出来,但是如果我单击任何存储库链接,都会收到404错误。有什么建议?
布拉德·布鲁斯

3
找到了!!!!设置.cgi映射时,可执行条目应读取c:\ Python25 \ python.exe -u“%s”并确保检查文件是否存在!
布拉德·布鲁斯

4
这些说明现在有点过时了。看看Ken的答案更多更新的说明:stackoverflow.com/questions/818571/...
firedfly

您可以包括一些步骤来绕过IIS规定的30MB上传限制吗?我尝试设置两者maxAllowedContentLengthmaxRequestLength但似乎都没有效果!
jocull

34

自Mercurial 1.5.2发布以来,这些教程似乎无法正常运行。一方面,hgwebdir.cgi已被删除,现在已替换为hgweb.cgi。

最适合我的说明是在eworldui.net上

http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx

这些说明适用于IIS 7或更高版本。如果您是在IIS 6上进行设置的,我会写一些针对Win2k3和IIS 6.0的类似说明:

http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html

更新: 完成这项工作后不久,我了解到BitBucket更改了其定价方案,以提供免费,无限制的私人托管:https//bitbucket.org/。当我最初从事该项目时,我会心跳加速。


1
我最初尝试使用Jeremy Skinner的教程进行配置,并遇到了hgwebdir.cgi被删除的问题。使用IIS7教程,我可以设置所有复杂的东西。谢谢!
萤火虫

太好了-感谢您指出这些非常有用的参考资料,Ken P.
Ken

12

我发现吸血鬼基础Vampire Basic)上的博客文章是一个不错的开始,但是对于我所追求的内容,它没有提供足够的详细信息。

我在博客上做了一个四部分的文章,让您从头开始使用IIS并开始运行,包括Active Directory集成,为推/拉设置安全权限,模板的自定义,我会在这里重现它,但是它相当长期以来,Mercurial确实设计为在Linux / Apache上托管:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html


哇-我希望我能顶一下!做得太好了。您不只是使用iis.net/download/URLRewrite中的URL Rewrite模块的任何原因?
Goyuix

@Goyuix-谢谢,我没有使用它有两个原因-1.我不知道它的存在,没有人指出我的方向。2.我做了少量的研究后发现ISAPI Rewrite足以满足我使用它的目的,因此我最终使用了它。不过,感谢您指出这一点,我将对其进行检查。
BenAlabaster

@Goyuix-您向我指出的信息表明IIS URL重写适用于IIS 7?IIS 6是否可用?我的博客文章针对的是IIS 6,因为这是我当前/正在使用的。
BenAlabaster

1
这是一系列很棒的帖子。您绝对应该对IIS 7进行跟进
BobTheBuilder 2010年

1
@BobTheBuilder-我正在计划中,但是我得找时间将服务器升级到Win2K8,目前我在Win2K3上,它已经可以满足我的需求并且非常稳定,所以我已经无需升级。
BenAlabaster


11

在为获得IIS6上的hgwebdir.cgi设置进行了大量研究之后,我做了以下工作。它基于以下站点:

您需要在服务器上安装以下内容:

  • Mercurial(我使用的是1.5版)
  • Python 2.6。Python的版本取决于安装的Mercurial的版本。Mercurial 1.5使用Python 2.6。即使您正在运行x64,也要安装x86。

对我来说,步骤是:

  • 为网站创建目录。我使用了c:\ inetpub \ wwwroot \ hg。
  • 在IIS中,右键单击hg文件夹,选择属性,然后选择“主目录”选项卡。
  • 单击创建应用程序按钮。将执行权限设置为“脚本”。
  • 仍在主目录选项卡中,单击配置按钮。在“应用程序配置”弹出窗口中,单击“添加”按钮以添加应用程序扩展名。可执行文件是c:\ Python26 \ python.exe -u“%s”“%s”。扩展名为.cgi。将“动词”设置为“限制为:GET,HEAD,POST”。检查脚本引擎并验证文件是否存在。
  • 在“目录安全性”选项卡中,单击“身份验证和访问控制”部分中的“编辑”按钮。取消选中所有身份验证方法,然后选中“基本身份验证”方法。如果您愿意,将默认域设置为Active Directory域。
  • 在IIS中,单击左侧面板上的Web Service Extensions文件夹。单击“添加新的Web服务扩展”链接。扩展名应为Python,所需文件为c:\ Python26 \ python.exe -u“%s”“%s”。确保新的扩展名是“允许的”。

现在是测试Python是否正常工作的好时机。在新的Hg文件夹中创建一个文件test.cgi。粘贴以下python代码:

print 'Status: 200 OK'
print 'Content-type: text/html'
print

print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''

打开浏览器到您的站点,例如http://localhost/hg/te​​st.cgi

您应该看到“它有效!” 在浏览器中。

接下来,让hgwebdir工作。

  • 删除test.cgi
  • 将hg存储库克隆到新目录: https://www.mercurial-scm.org/repo/hg/
  • 将hgwebdir.cgi复制到您的Web目录:c:\ inetpub \ wwwroot \ hg \
  • 编辑文件并更改
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)

application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)
  • 将Mercurial目录c:\ Program Files \ Mercurial \中的Library.zip文件解压缩到您的Web目录c:\ inetpub \ wwwroot \ hg \
  • 将模板目录从c:\ Program Files \ Mercurial \ templates \复制到c:\ inetpub \ wwwroot \ hg \ templates \
  • 在您的Web目录中创建一个名为hgweb.config的文件。

现在是测试的好时机。在浏览器中转到以下URL,http://localhost/hg/hgwebdir.cgi

  • 编辑hgweb.config,然后粘贴以下内容:
[collections]
\\server\share$\Hg\ = \\server\share$\Hg\
[web]
allow_push = *
push_ssl = false

这些都是我的首选项,例如,我们的存储库位于\\ server \ share $ \ Hg的子目录中。该Web应用程序将通过浏览器在登录用户的权限下运行,因此他们将需要对该共享具有读/写权限。

最后一步是允许长连接,这可能在您第一次克隆存储库时发生。运行以下命令以将超时增加到50分钟:

cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout 
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000

+1出色的工作,只需更改Mercurial 1.7的一些小改动
SwDevMan81

3

使用Mercurial克隆Mercurial存储库:

hg clone https://www.mercurial-scm.org/repo/hg/

您将在顶层找到hgwebdir.cgi。它应该像其他任何cgi脚本一样安装。


2

在过去的一周左右的时间里,我一直在为1.7.2设置此设置,为了使其能够正常工作,我不得不做与上面的文章略有不同的事情。

在这里发帖是因为Google一直将我带回这里。

完整说明发布在这里

我遵循了这些指示这些指示的组合(在源代码中)

主要区别在于,我必须进行Mercurial“纯python”安装,否则会抱怨缺少dll。我发现为pywin和isapi-wsgi使用“ python安装程序”很重要。(也许这对经验丰富的Python开发人员是显而易见的,但是我是python新手,所以对我来说是新闻)

希望这对某人有帮助,而我不仅仅是在编造东西(就像我说的那样,我可能是python newbie)




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.