window下,Subversion应用在Apache HTTP服务器上(http://)

来源:互联网 发布:无线增强软件 编辑:程序博客网 时间:2024/04/30 06:34

1、软件:

Subversion:Setup-Subversion-1.6.13.msi(http://subversion.apache.org/packages.html);

Apache HTTP Server服务器:httpd-2.2.17-win32-x86-no_ssl.msi(http://httpd.apache.org);

2、安装软件时注意:

安装Apache HTTP Server服务器完毕后,使用浏览器打开网址http://localhost 检查安装是否成功完成。

如果Apache无法启动请检查是否机器上已经装有IIS,把IIS停掉后再启动Apache服务进行测试。

 

使用跟Apache HTTP服务器结合的方式,你如果只想通过http进行访问则无需再启动SVNService服务!

3、配置apache http

首先将Subversion的bin目录下的intl3_svn.dll、libdb44.dll、libeay32.dll、ssleay32.dll、mod_dav_svn.so和mod_authz_svn.so拷贝到Apache安装目录下的modules子目录里。

 

然后打开httpd.conf,在该配置文件中通过LoadModule指令来加载Subversion的DAV模块:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

 

注意的是,因为Apache本身带有mod_dav模块,如果你的Apache中这个模块是动态加载的而不是直接编译进Apache的可执行文件中的话,你应该确保上面的指令在mod_dav模块后面进行加载,默认的情况下mod_dav模块是不启用的,你必须把它前面的注释去掉

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

 

为Apache本身带有mod_dav模块,如果你的Apache中这个模块是动态加载的而不是直接编译进Apache的可执行文件中的话,你应该确保上面的指令在mod_dav模块后面进行加舒服点

接着通过Location指令来配置资源库所在的路径,使用SVNParentPath指令来指定存放所有项目的路径,使用SVNPath为每个项目进行单独的设置

<Location /home>
DAV svn
SVNParentPath E:/svnhome
</Location>

 

<Location /project>
DAV svn
SVNPath E:/svnhome/project
</Location>

 

<Location /share>
DAV svn
SVNPath E:/svnhome/share
</Location>

 

配置结束后,然后启动apache服务,通过http://localhost/project或http://localhost/share/就可以访问到了。而直接访问http://localhost/home是不可以的,因为SVNParentPath指令是来指定存放所有项目的路径(E:/svnhome),可以访问其中的某个项目:http://localhost/home/project或http://localhost/home/share。project和share都要进行创建要提交项目的资源库,命令是:svnadmin create e:/svnhome/project和svnadmin create e:/svnhome/share。

注意的是:再配置/home时,必须同时配置具体的某个项目,如/project和/share;可以不配/home,单独配具体的项目。

 

导入文件到某资源库:进入要导入的文件目录,输入命令:svn import http://127.0.0.1/project -m "test"  (-m为message )

 

提醒:以上所有的访问都是匿名的,任何用户只要能访问这台机器都可以访问你所设定的资源库,他可以对项目进行浏览、检出或者是提交。

 

4、访问权限配置

最简单的身份验证方式是使用Basic HTTP Authentication机制,该方式通过用户名和口令对访问用户进行身份验证。我们可以直接通过Apache提供的支持进行设置。Apache提供一个htpasswd工具来管理用户名和口令。接下来我们利用这个工具来添加两个用户。

 

在命令行窗口中转到Apache的bin目录下:

首先,创建一个passwd文件,然后生成两个用户:

使用apache的htpasswd命令,-c是创建新的文件,-m使用md5对密码进行加密(htpasswd help)。

master用户:htpasswd -cm e:/svn/svn_auth-passwd master

命令窗口提示输入密码:111111

master2用户:htpasswd -m e:/svn/svn_auth_passwd master2(注意:此时就不要输入-c了);

同样输入密码:111111

 

文件建好后,可以查看一下svn_auth_passwd 文件内容:

master2:$apr1$HKUWAshM$lCdlTrwe4T/o6z3iYrPLf0
master:$apr1$Rxob9sOt$/RLRx9azfGML1euWKabYX.

 

然后告诉apache指向这个文件,打开其httpd.conf文件,再上面添加的location里加入下面内容:

AuthType Basic
AuthName "Subversion repository"
AuthUserFile e:/svn/svn_auth_passwd
Require valid-user

例如:

<Location /project>
DAV svn
SVNPath E:/svnhome/project
</Location>

<Location /share>
DAV svn
SVNPath E:/svnhome/share
AuthType Basic
AuthName "Subversion repository"
AuthUserFile e:/svn/svn_auth_passwd
Require valid-use
</Location>

<Location /home>
DAV svn
SVNParentPath E:/svnhome
AuthType Basic
AuthName "Subversion repository"
AuthUserFile e:/svn/svn_auth_passwd
Require valid-user
</Location>

 

重新启动Apache HTTP服务器后,再次访问http://127.0.0.1/share或http://127.0.0.1/home/project时就需要输入用户名和密码了。

 

这就是利用Basic HTTP Authentication机制对用户进行访问控制的方法。还可以使用SSL证书管理来加强Subversion的安全性(HTTPS的配置属于Apache HTTP服务器的范畴,请参照Apache的文档),甚至可以对设置对某些操作才需要验证用户的身份以及赋予不同用户对不同目录的操作权限,以及如何使用Windows的域帐号进行身份的验证。这些内容可以参考Subversion提供的文档svn-book.pdf的第六章——服务器配置。

 

原创粉丝点击