如何在IIS上设置Mercurial和hgwebdir?

Kev*_*dge 72 windows iis mercurial

我一直在寻找关于如何让hgwebdir在IIS上工作的体面指导,但我没有找到太多值得的东西.

Mercurial维基上有这个"一步一步",但它并不是很好.还有这个这个,但同样,我找不到好的步骤来引导那些开始的地方.

jwa*_*gel 49

我昨天刚刚安装了一个新的Mercurial实例,这里有1.7的更新说明:

  1. 安装Mercurial(这些说明已经过1.7测试)
  2. 安装Python(对于Mercurial 1.7,您必须使用Python 2.6.6的x86版本)
  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"中的Templates文件夹
  5. 您需要确保在IIS中设置了Python.

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

    [collections]
    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重写.

  • 这些说明现在有点过时了.查看Ken的答案以获取更多更新说明:http://stackoverflow.com/questions/818571/how-to-setup-mercurial-and-hgwebdir-on-iis/2766947#2766947 (4认同)
  • 找到了!!!!在设置.cgi映射时,Executable条目应该读取c:\ Python25\python.exe -u"%s"并确认检查文件是否存在UNCHECKED !!!!!! (3认同)

Ken*_*isa 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/.当我最初在这个项目上工作时,我会在心跳中选择这个.


Ben*_*ter 12

我发现Vampire Basic上的博客文章是一个很好的开始,但它并没有详细介绍我所追求的内容.

我做了一个4部分的博客文章,让你从头开始运行IIS,包括Active Directory集成,设置推/拉的安全权限,模板的自定义,我在这里重现它,但它是相当的Mercurial真的被设计为在Linux/Apache上托管:

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


Cla*_*art 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服务扩展"文件夹.单击"添加新的Web服务扩展"链接.扩展名应为Python,所需文件为c:\ Python26\python.exe -u"%s""%s".确保新扩展名为"允许".

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

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

print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''
Run Code Online (Sandbox Code Playgroud)

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

你应该看到它"有效!" 在浏览器中.

接下来让我们来看看hgwebdir的运行情况.

  • 删除test.cgi
  • 克隆hg repo到一个新目录: https://www.mercurial-scm.org/repo/hg/
  • 将hgwebdir.cgi复制到您的web目录:c:\ inetpub\wwwroot\hg\from cloned hg repo
  • 编辑文件并进行更改
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)
Run Code Online (Sandbox Code Playgroud)

application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)
Run Code Online (Sandbox Code Playgroud)
  • 将Mercurial目录中的Library.zip文件c:\ Program Files\Mercurial \解压缩到您的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
Run Code Online (Sandbox Code Playgroud)

这些都是我的偏好,例如我们在子站点\\ server\share $\Hg中有我们的存储库.Web应用程序将通过浏览器在登录用户的权限下运行,因此他们需要对共享的读/写权限.

最后一步是允许在第一次克隆回购时可能发生的长连接.运行以下命令将超时时间增加到50分钟:

cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout 
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000
Run Code Online (Sandbox Code Playgroud)


Aar*_*ers 3

使用 Mercurial 克隆 Mercurial 存储库:

hg clone https://www.mercurial-scm.org/repo/hg/
Run Code Online (Sandbox Code Playgroud)

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