之前写过一个关于SVN的笔记,本来不想再弄这个东西,因为项目原因,被逼继续使用SVN进行配置管理。花费了几个小时总算搞清楚了具体细节,整理一份文档出来今后备用。
环境:
FreeBSD 6.2 Released C1
Apache 2.2.3
Subversion 1.4.0
目标:
通过Apache的WebDAV方式访问SVN进行日常研发和代码管理
一、安装:
1、Apache安装
不用多说,进入到 /usr/ports/www/apache22目录下,运行make install即可安装默认方式搞定,假如您更有别的apache的应用和需求,自己研究。
2、Subversion安装
#cd /usr/ports/devel/subversion
#make install WITHOUT_BDB=yes WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs
说明:WITHOUT_BDB=yes 这是我不使用BerkleyDB才加上的,您愿意使用能够去掉,WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs 两个参数是为了支持Apache的WebDAV方式
到此就安装完了,剩下的就是建库和配置权限
二、建库
假设我创建两个项目(库),分别为test和toplee,一个用于练习和测试,一个用于保存toplee.com的代码
#mkdir /var/SVN (创建svn库存放的根目录,能够随便选择目录)
#svnadmin create /var/SVN/test
#svnadmin create /var/SVN/toplee
搞定
三、配置权限
在达到最终目标前(使用apache的webDav方式访问),先简单说一下通过svn自带的轻量级svnserve的方式搭建环境的方法,假如您不感兴趣,就直接看后面apache的webDav部分吧
1、配置svn自带的svnserve
#vi /etc/rc.conf 加入下面几行
svnserve_user="www"
svnserve_group="www"
svnserve_flags="-d --listen-host=xxx.xxx.xxx.xxx --listen-port=3690"
svnserve_data="/var/SVN"
#/usr/local/etc/rc.d/svnserve start
搞定,此时就能够通过 svn info svn://xxx.xxx.xxx.xxx/test 访问test库了
但是这时使用了默认权限,大家都能访问和修改库里面的东西,需要配置权限
权限配置方法:
在/var/SVN/test下和/var/SVN/toplee下都有个conf目录,进入到conf目录,能看到authz、passwd、svnserve.conf三个文档,这三个文档就是用来配置svnserve方式权限的,分别配置如下:
a) 配置 svnserve.conf
在文档中写入类似下面的内容
anon-access = none
auth-access = write
password-db = passwd
大概意思是,不允许匿名访问,全部需要使用密码验证,对于通过验证的用户,给和write权限,同时用于密码验证的文档是passwd文档
b) 配置passwd文档
这个文档打开后,一看就明白,就是写用户名和口令,不爽的是密码是明文的,哪怕加个md5也好。写入类似这样的东西
test=testdb
lee=abc
配置了三个用户,分别是michael、test、lee
c)配置authz文档
这个文档用于配置用户访问库中文档或目录的具体策略,基本上默认文档里面就有说明和范例了,我的authz文档大概如下:
g_w = michael,lee #意思是创建一个组,包含两个用户
g_r = test #第二个组,包含一个用户
[/abc] #目录名
@g_w= rw #g_w组的用户都能read和write
@g_r=rw #g_r组的用户也能read和write
[/xyz]
michael=rw
lee=r
@g_r=r
上面的内容大概根据内容就能看懂意思,不多解释
至此,配置完成,运行/usr/local/etc/rc.d/svnserve restart重启服务即可生效,现在使用 svn info svn://xxx.xxx.xxx.xxx/test 则需要您进行身份验证了。
2、配置基于Apache的WebDAV方式访问SVN
这是我今天的最后目标,有一些类似的文档能够找到,但是总感觉要少点什么。
关键的两个地方,配置httpd.conf和svn的权限文档
a)配置httpd.conf
在httpd.conf文档里面加入下面一堆东西
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/SVN
AuthType Basic
AuthName "Subversion in toplee.com"
AuthUserFile /var/SVN/.svnpasswd
AuthzSVNAccessFile /var/SVN/.svnaccess
Satisfy Any
Require valid-user
</Location>
啥意思呢?
其实最前面两行,apache安装好后基本上默认就有了,不用管,但是您要确定一下是不是真的有了,没有的话不行,检查/usr/local/libexe/apache22/下是否有相应so或重新编译安装apache,并且激活相应的选项。
第三四行是安装svn时增加 WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs 这两个参数时也会自己默认加上的,假如没有就自己手动加上。
后面那一堆
b)配置svn的用户权限文档
这回我们不会继续使用前面svnserve方式下的那三个文档了,而是使用httpd.conf文档里面配置的.svnpasswd和.svnaccess两个文档来配置,当然这两个文档的名字和路径您都能够根据自己喜好修改。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




