Windows环境下Apache+TortoiseSVN版本控制配置

一、        安装程序下载

1、  Apache2.2版本下载:

http://labs.xiaonei.com/apache-mirror/httpd/binaries/win32/apache_2.2.11-win32-x86-openssl-0.9.8i.msi

2、  SVN1.6.3版本下载:

http://subversion.tigris.org/files/documents/15/46163/Setup-Subversion-1.6.3.msi

3、  Tortoise SVN1.6.3下载:

http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi

PSSVN的版本与Tortoise SVN的版本最好一致,这样可以在命令行与界面同时操作SVN Repository

4、  Tortoise SVN语言包下载:

http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/LanguagePack_1.6.3.16613-win32-zh_CN.msi

二、        安装

1、  安装Apache2.2

按照提示安装,一直按Next即可安装完毕。安装目录中不能出现中文,并且必须出现‘/’或‘/’符号,比如D:/Path/。安装完毕后,看Apache是否启用,通过“开始”找到快捷方式启动可以对Apache进行操作。Apache启动后,在浏览中输入http://localhost ,网页中显示“It Works”说明Apache安装成功。

2、  安装SVN1.6.3

运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么安装成功。如果它不能,那么你要做一些额外的步骤。

a)       进入Subversion的安装目录,将/Subversion/bin/目录下的mod_authz_svn.somod_dav_svn.so拷贝到Apache安装目录/Apache2.2/modules/下;

b)       进入Subversion的安装目录,拷贝文件libdb44.dllApachemodules目录;(注:这个不是必须的,文件名跟版本有差异如libdb43.dll

c)       使用文本编辑器编辑Apache的配置文件(/Apache2.2/conf/httpd.conf),修改以下内容:

l  去掉以下两行的#号:

#LoadModule dav_module modules/mod_dav.so

#LoadModule dav_fs_module modules/mod_dav_fs.so

l  LoadModule节的最后添加以下两行:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

3、  安装Tortoise SVN1.6.3

运行Tortoise SVN安装程序,一直下一步即可完成安装,安装后必须重起计算机。

三、        配置

需要告诉mod_dav_svn模块,使用什么路径作为版本库目录,使用什么文件来进行认证。下面是一个典型的配置:(注意下面的//作为路径均是允许的,还有<Location /svn>的副作用,配置代码放在httpd.conf文件末尾)

<Location /svn/>

DAV svn

                  

SVNListParentPath on

SVNParentPath "D:/source/SVN"

# SVNIndexXSLT "/svnindex.xsl"   //使用列表模板

                  

AuthName " Subversion repositories 版本控制中心"

AuthType Basic

# AuthBasicProvider file                     //似乎subversion 1.4.5不支持此项

AuthUserFile "D:/source/SVN/htpasswd"

AuthzSVNAccessFile "D:/source/SVN/authz"

                  

require valid-user

                  

#<LimitExcept GET PROPFIND OPTIONS REPORT> //下面表示允许匿名读取

#Require valid-user

#</LimitExcept>

</Location>

 

RedirectMatch ^(/svn)$ $1/

 

说明:

            

<Location /svn>

意味着可以通过像这样的URL(http://MyServer/svn/)来访问Subversion版本库

DAV svn

告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块SVNListParentPath on

Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

第一行的<Location /svn/>,最后的反斜扛必须加上,否则可能访问失败!

若要使用http://MyServer/svn访问,最后需要加上RedirectMatch ^(/svn)$ $1/

SVNParentPath D:/source/SVN

告诉Subversion在目录D:/source/SVN下寻找版本库

AuthType Basic

启用基本的验证,比如用户名/密码对

AuthName " Subversion repositories 版本控制中心"

当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile "D:/source/SVN/htpasswd "

指定D:/source/SVN/ htpasswd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile "D:/source/SVN/ authz"

指定D:/source/SVN/ authz来限定各个用户或组在版本库中目录的访问权限

Require valid-user

限定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是IE还是Tortoise,只有通过密码验证才能访问)。

下面表示允许匿名访问,对于读操作,不需要用户验证。

#<LimitExcept GET PROPFIND OPTIONS REPORT>

#Require valid-user

#</LimitExcept>

 

AuthUserFileAuthzSVNAccessFile 的工作原理是,先使用Apache用户机制进行验证,通过之后将请求提交给mod_authz_svn.so进行认证,最后使用mod_dav_svn.so提供的功能。

 

a)       Apache的密码文件制作方法、利用cmd进入目录apache2.2/bin/

htpasswd -cm 文件路径 用户名(-c表示创建新文件 -m表示md5加密)

文件路径必须与AuthUserFile参数指定路径一致

b)       添加新用户

htpasswd -m 文件路径 用户名

可以用htpasswd  --help 查看命令帮助。

c)       使用svnadmin  create D:/source/SVN/GPTLog创建库,建立Subversion数据库,当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDBBerkeley Database)。在命令行下输入svnadmin create --fs-type bdb TestRepository建立BDB格式的数据库(确保当前目录已经切换到E:/SVN/),在命令行下输入svnadmin create --fs-type fsfs TestRepository建立FSFS格式的数据库(确保当前目录已经切换到E:/SVN/)。

d)       权限:AuthzSVNAccessFile文件格式

[groups]

developers = user1,user2,user3,user4

docs = user5,user6,user7

#to allow everyone read access

[/]

* = r

#allow all developers complete access

@developers = rw

#give the doc people write access to the docs folder

[/project/trunk/doc]

@docs = rw

首先定义了两个group,一个是developer,代表开发组,另外一个是docs,代表文档撰写组,然后

[/]

* = r

意思是对于所有的用户开放可读的权限。注意这里的[/],表示是对根目录下的所有代码仓库赋予权限。接着是

@developers = rw

[/project/trunk/doc]

@docs=rw                                                                                                                                                                                                                                                                  这这里的@应该代表的是group的意思注意这里对于docs这个组,一样指定了目录路径,而不是对于整个代码仓库。

                  

                   接下来,重启Apache服务。若重起过程中出现了“the requested operation has failed”提示:

a)    重起计算机,再次启动服务。

b)   运行àCMD 进入到apachebin目录。输入httpd.exe -w -n "Apache2.2" -k start会提示配置文件的具体那行出错。

注:命令里的"Apache2.2"是系统服务里apache服务的名称。

c)    若出现错误提示“Could not reliably determine the server's fully qualified domain name”,则需要在httpd.conf中加入一句

ServerName 192.168.18.3:80

其中IP地址为本机IP

d)   若出现错误提示“make_sock: could not bind to address 0.0.0.0:80”,可以在CMD中利用命令

netstat –anb

查看所有程序对端口号的占用,关闭占用80端口的程序再重起即可。

你可能感兴趣的:(apache,windows,SVN,Module,subversion,tortoiseSVN)