搭建APACHE+HG-权限控制

软件安装

下载TortoiseHGMercurial v2.9Python v2.7XAMPP v1.7.3(比较简单的apache服务),

下载地址:

Mercurial v2.9http://mercurial.selenic.com/

Python v2.7http://www.python.org/downloads/

XAMPP v1.8http://www.apachefriends.org/index.html

说明:Mercurial 不同版对应不同版本Python,原因是Python一个版本编译放到其它版本没办法编译,所以下载Mercurial看好对应的Python版本,这里使用的是Mercurial v2.9 for python2.7,下载的时候看好。

这里安装的Mercurial v2.9,是在Python里面安装一个支持的包,安装到这个目录下Python27/Lib/site-packages,安装包如下图。


下图是Mercurial v2.9安装文件。


上面两种选择一种安装,记住路径即可。

User/Python27/Lib/site-packages

或User/Mercurial

上面的软件安装好后可以进行下面的操作。

注意事项

最好是使用没有空格的路径!例如c:\ProgramFiles这样的路径最好不要用,不然可能出现错误。

Apache启动不了可能是端口号被占用,修改xampp/apache/conf/httpd.conf 将所有80修改为一个指定端口号。

Ssl端口号被占用修改\xampp\apache\conf\extra\httpd-ssl.conf,默认是443,如果被占用可以进行修改

 

创建仓库

使用TortoiseHG在某个目录创建repositorie,我的目录是F:\workspace\myhg

新建这个目录F:\workspace\myhg,选中myhg,右键->Create repositorie here

 

相关配置

在xampp安装目录htdocs下,建立一个hg文件夹

\htdocs\hg

在hg目录下,建立一个hgwebdir.cgi文件,把下面的内容拷贝进去

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!E:/Python27/python.exe

#

# An example hgweb CGI script, edit as necessary

# See also http://mercurial.selenic.com/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')

config = "hgweb.config"

# Uncomment and adjust if Mercurial is not installed system-wide:

importsys;sys.path.insert(0, "E:/Python27/Lib/site-packages")

# Uncomment to send python tracebacks to the browser if an error occurs:

importcgitb;cgitb.enable()

frommercurialimportdemandimport; demandimport.enable()

from mercurial.hgweb importhgweb, wsgicgi

application = hgweb(config)

wsgicgi.launch(application)

 

hgwebdir.cgi配置的时候路径用“/.

 

配置说明::

第1行中的#!E:/Python27/python.exe改为你python.exe所在的路径

第8行sys.path.insert(0, "E:/Python27/Lib/site-packages")这句中的"E:/Python27/Lib/site-packages",是上面安装的mercurial对python支持的包。

再建立一个hgweb.config文件

 

1

2

3

4

5

6

7

[paths]

/projectName = F:/workspace/hgproject

 

[web]

allow_push = *

allow_pull = *

allow_read = *

 

[paths]说明,等号右侧是项目仓库目录,等号左侧是显示或者clone的时候的项目名称。

例如:http://ip:port/hg/projectNmae

上面的F:/workspace/hgproject请换为你自己的项目的存放目录

 

修改apache服务器配置

打开xampp/apache/conf/httpd.conf文件,在最末尾加入

 

1

2

3

4

5

6

7

# 目录配置

ScriptAliasMatch ^/hg(.*) D:/xampp/htdocs/hg/hgwebdir.cgi$1

"E:/xampp /htdocs/hg">

  Options ExecCGI FollowSymLinks

#去掉#号使用ssl来访问

 #SSLRequireSSL

 

到这里配置基本完成,重启apache通过https://localhost:port/hg/访问port是监听的端口号。

 

 

 

下面是权限控制

htpasswd.exe建立用户密码文件

htpasswd.exe在这个E:\xampp\apache\bin目录下

E:

Cd  E:\xampp\apache\bin

htpasswd -c 文件名 用户名               //参数-c创建密码文件,输入后会提示你输入密码

已经有密码文件执行下面命令:

htpasswd 文件名 用户名 

可以连续执行命令创建多个用户。              

举例:

htpasswd -c hguseruser1

htpasswd hguser user2

这时会得到一个hguser的文件,把它拷贝到conf目录下

 

修改httpd.conf配置

在httpd.conf末尾作如下配置,目录需要修改为自己的目录。

 

 

     Order Allow,Deny

     Allow from all

     AuthType Basic

     AuthName "Mercurialrepositories"

     AuthUserFile " E:/xampp/apache/conf/hguser"

    

        Require valid-user

   

 

 

除了可以写在Location段以外,也可以写在Directory段:

ScriptAlias /hg"E:/xampp/htdocs/hgweb/hgweb.cgi"

    Order Allow,Deny

    Allow from all

    AuthType Basic

    AuthName "Mercurial repositories"

    AuthUserFile " E:/xampp/apache/conf/hguser"

   

        Require valid-user

   

 

hg的访问方式可以设置在apache的httpd.conf配置文件中配置:

# 目录配置

ScriptAliasMatch^/hg(.*) D:/xampp/htdocs/hg/hgwebdir.cgi$1

"E:/xampp /htdocs/hg">

  Options ExecCGI FollowSymLinks

#去掉#号使用ssl来访问

 #SSLRequireSSL

上面的配置是https访问方式,如果改成http访问就注释掉ssl那行。

Tortoise使用密码,

http方式:1、url设置用户名密码。在第一次克隆的时候,在url里面设置了用户名密码如图2:

搭建APACHE+HG-权限控制_第1张图片

这种方式拉取完成后,url中只是保存了用户名,在之后拉取和推送的时候还需要需要输入密码。

2.第一次拉取完修改hgrc文件,hgrc位置,项目右键->explore“项目/.hg/hgrc”,记事本打开编辑,UpdatePomXML项目为例,做如下配置

[paths] default = https://192.168.99.117:443/hg/UpdatePomXML

[auth]UpdatePomXML.prefix=https://192.168.99.117:443/hg/UpdatePomXML

UpdatePomXML.username=root

UpdatePomXML.password=sa

这样只有第一次克隆是需要输入用户名密码,以后就不需要再输入用户名密码。 https方式: 1、url中设置方式和http情况一样。

2、克隆完项目后,如下图操作:

搭建APACHE+HG-权限控制_第2张图片

保存(save)后用户名密码就保存了,之后在拉取提交的时候就不在需要输入用户名密码。

以上是对Tortoise的http和https两种方式密码设置的测试。

 

在hgweb.config中是做得如下配置,控制了库里的所有项目为不可见:

 

Java代码 

[collections] 

/projectName = F:/workspace/projectname

 

[web] 

allow_push =false 

allow_pull =false 

allow_read =false 

push_ssl =false 

 

具体每一个项目进行控制的配置文件hgrc文件的内容如下:

Java代码 

[web] 

allow_pull = user1,uesr2..

allow_push = user1,uesr2..

allow_read = user1,uesr2..

 

参数是*或者用户名列表,列表用逗号间隔,如用户名中包含逗号,需要把用户名用双引号括起来。

特别说明:单个项目的配置优先级大于hgweb.config中的配置,例如

Hgweb.config中配置所有项目均不可见,test这项目hgrc做了配置,云需用户aaa操作该项目,那么只有该项目可以被用户aaa读取推送。

你可能感兴趣的:(环境搭建)