如何在 IIS 上搭建 mercurial server

简介:

一、环境及软件安装

笔者使用的操作系统为 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 在CODE上查看代码片派生到我的代码片

  1.   

<?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,不过这在局域网中基本也够用了。




本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/1827696,如需转载请自行联系原作者
相关文章
|
3天前
25、IIS服务器搭建(win server 2003)
25、IIS服务器搭建(win server 2003)
7 0
|
9月前
|
Windows
windows server 2008 r2 IIS服务403-禁止访问访问被拒绝
windows server 2008 r2 IIS服务403-禁止访问访问被拒绝
171 0
25、IIS服务器搭建(win server 2003)
25、IIS服务器搭建(win server 2003)
60 0
25、IIS服务器搭建(win server 2003)
|
网络安全 Windows
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
257 0
|
网络安全 Windows
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
432 0
|
Web App开发 负载均衡 测试技术
使用IIS Server Farms搭建应用服务负载均衡
当公司的业务扩大, 伴随着大量的请求,应用服务器的承受能力已经不能满足不断增长的业务需求,使用IIS Server Farms搭建应负载均衡的方式,把请求分发给不同的应用服务器进行处理,这个时候就降低了应用服务器的压力。
2215 0
|
网络协议 文件存储 数据安全/隐私保护
通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题
通过客户反馈我们发现Windows Server 2016的IIS无法加载SMB文件卷的文件,显示的错误是:未能加载文件或程序集。经过我们不断研究和实验,发现在安装和配置好AD域之后,2016上IIS加载文件卷文件发生错误的问题可以得到解决。
4055 0
通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题
|
PHP
iis 访问HTTP 错误 500.0 - Internal Server Error无法在<fastCGI>应用程序配置中找到<handler> scriptProcessor
iis 访问HTTP 错误 500.0 - Internal Server Error无法在应用程序配置中找到 scriptProcessor
11645 0
|
Windows
Windows Server 2008 R2安装IIS 7.0
Windows Server 2008 R2安装IIS 7.0详细流程。 1、计算机右键 -【管理】(如图1-1)。 图 1-1 2、【角色】-【添加角色】(如图1-2)。
3807 0
|
Windows .NET 开发框架
Windows Server 2003安装IIS 6
Windows Server 2003安装IIS 6.0详细流程。 准备条件:下载【IIS 6.0】安装文件,请点击下载获取。 1、开始 — 【控制面板】 — 【添加或删除程序】(如图1-1) 图 1-1 2、在【添加或删除程序】窗口中点击【添加/删除Windows组件】,会弹出窗口【Windows组件向导】,找到【应用程序服务器】双击(如图1-2)。
1053 0

相关产品

  • 云迁移中心