如何在 IIS 上搭建 mercurial server

mercurial server

对于代码管理工具,更多的人可能更熟悉 Git 一些(Git 太火了)。其实另外一款分布式代码管理工具也被广泛的使用,它就是 mercurial。多人协作时,最好能够通过创建一个 mercurial server 对用户进行权限认证,同时也会方便持续集成。

关于创建 mercurial server 的步骤,mercurial 官方的 wiki 有说明,网上也有很多朋友分享了自己的创建过程。但笔者在创建的过程中还是颇费了一番周折才最终成功,所以也在此分享一下自己的经验,希望对朋友们有所帮助。

文章来源:葡萄城产品技术社区

一、环境及软件安装

笔者使用的操作系统为 Server2012R2 x64 Standard 中文版。

首先,在安装其他工具前,需要先安装 IIS。安装 IIS 时需要注意,一定要把 CGI 和 ISAPI 这两个选项都勾选上。

然后,安装 Python,使用默认设置安装 python 2.7.x。

最后,安装 mercurial server,请从这里在这里下载 mercurial server 的安装包并安装,安装完成后检查 C:\Python27\Lib\site-packages\mercurial 目录是否被正确安装!

注意,python 和 sercurial server 必须保持相同的架构,不要一个安装 x86 另一个安装 x64。

二、设置 IIS 服务器支持 python 模块

在 IIS 管理器中选择 IIS server,双击”ISAPI 和 CGI 限制”,添加一项新的扩展:

喜欢使用命令行的同学也可以通过一行命令直接搞定:

C:\Windows\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /+"[path=‘C:\Python27\python.exe -u %22%s%22‘,description=‘Python‘,allowed=‘True‘]"

三、创建网站

在 IIS 中创建一个新的网站,端口绑定81(80端口已被默认网站占用)。在网站的根目录中添加 web.config 文件,web.config 文件的内容为:

[html] view plain copy 

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="Python" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u &quot;%s&quot;" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
      </system.webServer>
    </configuration>

    需要注意文件中 python.exe 的路径,请根据自己机器上的安装目录进行配置。

    网站的基本设置已经完成,下面写个简单的测试文件检查一下网站能否正常工作。

    在网站的根目录下创建 test.cgi 文件,文件内容如下:

    print ‘Status: 200 OK‘print ‘Content-Type: text/html‘print
    print ‘<html><body><h1>Hello world!</h1></body></html>‘

    在浏览器中访问 http://localhost:81/test.cgi,如果看不到”Hello world!”,请检查前面的步骤是否执行正确。

    四、配置 mercurial server

    1. 在网站的根目录下添加 hgweb.config 文件,内容如下:

    [collections]
    C:\repos = C:\repos
    
    [web]
    push_ssl = falseallow_push = *

    2. 在网站的根目录下添加 hgweb.cgi 文件,内容如下:

    #!/usr/bin/env python
    # Path to repo or hgweb config to serve (see ‘hg help hgweb‘)
    config = "xxxxx\hgweb.config"from mercurial import demandimport; demandimport.enable()
    from mercurial.hgweb import hgweb, wsgicgi
    application = hgweb(config)
    wsgicgi.launch(application)

    注意,请按实际情况配置 config 的路径。

    这就 OK 了,让我们在 c:\repos 目录下初始化一个库然后访问 http://localhost:81/hgweb.cgi 看看:

    五、配置 URL 重定向

    每次都要在 URL 中输入 /hgweb.cgi,一来不方便,二来总感觉怪怪的。能不能输入 http://localhost:81 就可以正常访问呢?当然可以,只需添加一个重定向的配置就可以了。

    首先,需要下载并安装IIS的插件:http://www.iis.net/downloads/microsoft/url-rewrite

    然后,在 web.config 文件中添加 rewrite 元素,新的 web.config 文件内容为:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="Python" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u &quot;%s&quot;" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <rewrite>
          <rules>
            <rule name="rewrite to hgwebdir" patternSyntax="Wildcard">
              <match url="*" />
              <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              </conditions>
              <action type="Rewrite" url="hgweb.cgi/{R:1}" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>

    好了,现在访问下 http://localhost:81 试试,和访问 http://localhost:81/hgweb.cgi 是一样的。

    六、设置匿名访问权限

    默认情况下我们已经可以使用匿名权限从服务器克隆库并进行操作了,但是当你执行 hg push 命令时会收到一个 HTTP Error 502: Bad Gateway 的错误。出现这个错误,是因为匿名用户没有修改服务器上文件的权限,所以我们需要给匿名身份验证设置一个有修改文件权限的用户。

    现在就可以正常执行 push 操作了。

    总结,相比其他工具的一键式安装与配置,mercurial server 的安装和配置稍显复杂。我们这里只是配置了最简单的匿名访问,并不支持 ssl,不过这在局域网中基本也够用了。

    时间: 2024-11-11 20:22:00

    如何在 IIS 上搭建 mercurial server的相关文章

    在Win7的IIS上搭建FTP服务及用户授权

    FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有很多服 务器提供FTP服务,用来存放大量的文件供他人下载.FTP服务的主要作用是让远程用户可以连接上来,查看服务器上有哪些文件,然后下载,当然用户也可以 将本地文件上传到服务器,共享给其他人以便下载.FTP服务提供上传下载服务的同时,管理员也可以设置不同用户对不同文件夹的访问权限(读.写). 在Wi

    如何在github上搭建一个免费的 无限流量的静态网页博客Github pages

    前言: 看到很多相关的教程,但是在实际操作的时候还是遇见了不少问题,这里记录分享一下我的操作流程.免费空间用过很多,博客也用过一些,听说了github后就想试着玩一下这个静态库,感觉挺不错的,操作也比较简单,可以放些demo觉得挺不错的,看自己的喜好来搭建吧~本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com) 1.注册github.com账户,具体操作不描述了,英文如果不是很好可以使用翻译软件 2.新开一个一个仓库(N

    在Win7的IIS上搭建FTP服务及用户授权——转载!!

    原文地址:http://blog.sina.com.cn/s/blog_6cccb1630100q0qg.html FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有很多服务器提供FTP服务,用来存放大量的文件供他人下载.FTP服务的主要作用是让远程用户可以连接上来,查看服务器上有哪些文件,然后下载,当然用户也可以将本地文件上传到服务器,共享给其他

    如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享

    如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享 实现环境:VMware workstations.RHEL7.0 第一步:配置网卡IP及yum软件仓库 命令:vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 命令:vim /etc/yum.repos.d/aria.repo(这里的yum.repo是需要自己创建的,文件名自定即可) 第二步:设置挂载点并挂载本地ISO文件 将ISO文件连接上线 创建挂载点并挂

    【转】在Win7的IIS上搭建FTP服务及用户授权

    [转]在Win7的IIS上搭建FTP服务及用户授权 [转]在Win7的IIS上搭建FTP服务及用户授权 FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有很多服务器提供FTP服务,用来存放大量的文件供他人下载.FTP服务的主要作用是让远程用户可以连接上来,查看服务器上有哪些文件,然后下载,当然用户也可以将本地文件上传到服务器,共享给其他人以便下载.

    在Windows上搭建Git Server

    Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用. 那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器.一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢? 对于很多.NET用户来说,代码编写的工具是Visual Studio,该工具是不支持SSH协议的,通过搜索和对比,发现Gitblit可以很方便的搭建服务,他是用Jav

    在IIS上搭建WebSocket服务器(三)

    编写客户端代码 1.新建一个*.html文件. ws = new WebSocket('ws://192.168.85.128:8086/Handler1.ashx?user=' + $("#user").val());这个地方的IP和端口号对应着我们搭建在IIS上的WebSocket服务器 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <

    mac 教你如何在Mac上搭建自己的服务器——Nginx

    WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器. 我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透. 有兴趣的朋友可以自行google或者baidu. WHY 为什么要搭建自己的服务器呢. 好处肯定多多,这儿说一条--模拟数据. 很多时候,我们在前端开发的过程中,API接口没有做好. 当我们要铺界面时,如果等待API的开发完成,无疑是件很耽误工作的事情. 还有一点,即使API完成了,我们开发完项目时,需要自测各种极限的数据.例如 约定好返回的是

    教你如何在Mac上搭建自己的服务器——Nginx

    原帖地址:https://blog.csdn.net/qq_22383951/article/details/53019034 WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器.   我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透.   有兴趣的朋友可以自行google或者baidu. WHY 为什么要搭建自己的服务器呢.   好处肯定多多,这儿说一条--模拟数据.     很多时候,我们在前端开发的过程中,API接口没有做好.   当我们要铺