一,准备环境
RHEL6.4最小化安装(关iptables,关selinux) + ssh + yum
yum -y install subversion (svn服务器),mysql-server (用于codestriker),httpd
mod_dav_svn ,mod_perl (用于支持web方式管理SVN服务器 )
sendmail (用于配置用户提交代码后发邮件提醒)
wget gcc-c++ make unzip perl* (必备软件包)
ntsysv vim-enhanced (可选)
二,配置SVN
1,新建一个目录用于存储SVN所有文件
mkdir /home/svn
2,新建一个版本仓库
svnadmin create /home/svn/project
3,初始化版本仓库中的目录
mkdir project project/servr project/client project/test ##建立临时目录
svn import project / file:///home/svn/project -m comment ##初始化SVN目录
rm -rf project ##删除临时建立的目录
4,添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd 文件中添加一个
“username = passswd”的条目就可以了,为了测试,我添加如下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
haifeng_1 = 123456
haifeng_2 = 123456
5,修改用户访问策略
/home/svn/project/conf/authz 记录用户的访问策略 ,以下为参考:
[groups]
porject_1 = haifeng_1
project_2 = haifeng_2
[project:/]
@projice_1 = rw
* =
[project:/server]
@project_1 = rw
@project_2 = rw
* =
[project:/client]
@project_1 = rw
@project_2 = rw
* =
[prioject:/doc]
@project_1 = rw
@project_2 = rw
* =
注意:在添加内容的行首不要有空格,不然会报错:svn: 服务器报告认证错误: Username not found
6,修改svnserve.conf文件,让用户和策略配置生效,svnserve.conf内容如下:
8 [general]
12 anon-access = none
13 auth-access = write
20 password-db = /home/svn/project/conf/passwd
27 authz-db = /home/svn/project/conf/authz
7,启动服务器
svnserve -d -r /home/svn
8,测试服务器
svn co svn://192.168.6.169/project
认证领域: <svn://192.168.6.169:3690> 2406b06f-d9fa-4165-ac41-e24208ba7188
“root”的密码:
认证领域: <svn://192.168.6.169:3690> 2406b06f-d9fa-4165-ac41-e24208ba7188
用户名: haifeng_1
“haifneg_1”的密码:
A project/test
A project/server
A project/client
取出版本 1。(测试提取成功)
三,配置SVN服务器的HTTP支持
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换HTTP支持的格式。
因此我写了一个perl脚本来完成这个工作:
[root@localhost conf]# vim svn.pl
#!/usr/bin/perl
use warnings;
use strict;
#open the svn passwd file
open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");
#clear the apache passwd file
open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");
close (OUT_FILE);
#begin
foreach (<FILE>) {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}
[root@localhost conf]# chmod +x svn.pl (给脚本添加执行权限)
[root@localhost conf]# ./svn.pl
Adding password for user haifeng_1
Adding password for user haifeng_2
现在目录下会多一个webpasswd文件
[root@localhost conf]# ls
authz passwd svn.pl svnserve.conf webpasswd
2,修改http的主配置文件,添加SVN服务器的信息
[root@localhost conf]# vim /etc/httpd/conf/httpd.conf
在文件最后添加:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>
3,启动HTTP服务
service httpd start
chkconfig httpd on
4,用浏览器访问http://192.168.6.169/project/server
本文出自 “Henry” 博客,谢绝转载!