您的位置:首页 > 运维架构 > Apache

搭建APACHE+HG-权限控制

2014-03-07 11:48 309 查看
软件安装

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

下载地址:

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

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

XAMPP v1.8:http://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文件夹

<xampp install>\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
<Directory"E:/xampp /htdocs/hg">
  Options ExecCGI FollowSymLinks
#去掉#号使用ssl来访问
 #SSLRequireSSL
</Directory>
 

到这里配置基本完成,重启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末尾作如下配置,目录需要修改为自己的目录。

 

 

<Location"/hg">

     Order Allow,Deny

     Allow from all

     AuthType Basic

     AuthName "Mercurialrepositories"

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

     <limit GET>

        Require valid-user

    </limit>

</Location>

 

 

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

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

<Directory"E:/xampp/htdocs/hgweb">

    Order Allow,Deny

    Allow from all

    AuthType Basic

    AuthName "Mercurial repositories"

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

    <limit GET>

        Require valid-user

    </limit>

</Directory>

 

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

# 目录配置
ScriptAliasMatch^/hg(.*) D:/xampp/htdocs/hg/hgwebdir.cgi$1
<Directory"E:/xampp /htdocs/hg">
  Options ExecCGI FollowSymLinks
#去掉#号使用ssl来访问
 #SSLRequireSSL
</Directory>

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

Tortoise使用密码,

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



这种方式拉取完成后,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、克隆完项目后,如下图操作:



保存(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读取推送。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息