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 文件的内容为:

<?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

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

[collections]
C:\repos = C:\repos [web]
push_ssl = false
allow_push = *

在网站的根目录下添加 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,不过这在局域网中基本也够用了。

用 IIS 搭建 mercurial server的更多相关文章

  1. 如何在 IIS 上搭建 mercurial server

    mercurial server 对于代码管理工具,更多的人可能更熟悉 Git 一些(Git 太火了).其实另外一款分布式代码管理工具也被广泛的使用,它就是 mercurial.多人协作时,最好能够通 ...

  2. 在iis搭建nuget server时遇到405 method not allow

    <configuration> <system.webServer> <validation validateIntegratedModeConfiguration=&q ...

  3. Nginx 在windows下配合iis搭建负载均衡过程 [转]

    因为项目遇到大量图片存储问题,虽然现在我们图片还不是很多(目前在1T上下,预计增长速度每年1.3倍的增长速度),自己在思考如何有效地存储大量图片时,查找一些资料,看到了,有人使用 Nginx搭建服务器 ...

  4. ubuntu 搭建Mercurial 服务(nginx)

    ubuntu 搭建Mercurial 服务(nginx) 环境:ubuntu 12.05  Mercurial 步骤: (1)安装nginx 和 Mercurial: sudo apt-get ins ...

  5. (转载) 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    这一篇是从0开始搭建SQL Server AlwaysOn 的第四篇,这一篇开始搭建异地机房节点 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示 ...

  6. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  7. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

随机推荐

  1. CentOS7 安装 JDK

    安装步骤 1. 将 jdk 安装包传到 用户 centos 的 home 目录 (/home/centos) 通过 Xftp 将安装包( jdk-8u161-linux-x64.tar.gz )传到用 ...

  2. Windows 常识大全【all】

    解决电脑卡顿问题 电脑常见技巧大全 电脑运行命令CMD集锦 开启Windows 7系统的“上帝模式” Win7下设置护眼的电脑豆沙绿界面 零基础如何组装电脑?装机之家手把手教您电脑组装教程图解 [Ex ...

  3. 阿里云朱照远: AI打开新视界 8K时代已来!

    2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在亚太CDN领袖峰会上 ...

  4. MySQL基础之 逻辑运算符

    mysql的逻辑运算符有四个:与.或.非.异或 我们平时在谈论的时候不考虑带有NULL的情况,今天我们就来考虑一下带有NULL值,他们的结果是怎么样的 AND(&&)运算符 mysql ...

  5. windows最常用的快捷键(windows10 )

    windows最常用的快捷键(windows10 ) [单指点击] 单击/双击,相当于鼠标左键. [单指滑动] 控制光标移动. [单指拖动] 相当于按下鼠标左键移动鼠标. [双指点击] 菜单键,相当于 ...

  6. beta冲刺————第三天(3/5)

    完善的具体内容: 前端: (1)可以进行修改文字大小背景 其中,金色的文字个人觉得很好看,点赞.(我很满意啊) (2)可以改变成夜间模式(也很不错啊) 后端: 尝试将本地的后端war文件,以及数据库传 ...

  7. 【Python求助】在eclipse和pycharm中,通过adb install安装中文名字APK时老是报错,如何解决

    # -*- coding: utf-8 -*- import os import sys import subprocess import time from uiautomator import d ...

  8. js指定范围随机整数

    js获取指定范围内随机整数,例如 6-10 (m-n) 计算公式: Math.floor(Math.random()*(n-m))+m // 6-10随机数,用循环得出一组测试随机数 var str ...

  9. Python在Win10系统的安装和使用配置

    Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等. 下载 ...

  10. Arcgis for Js之加载wms服务

    概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...