一,安装必须的软件包
yum 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/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -m "初始化SVN目录"
# rm -rf project (删除临时建立的目录)
4,添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password"的条目就可以了.为了测试,我添加了如下内容:
[users]
wanglu = test
5,修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:
[groups]
devops = wanglu
[/]
@devops = rw
6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
7,启动服务器
# svnserve -d -r /home/svn
8,测试服务器
# svn co svn://192.168.149.128/project
Username: wanglu
Password for 'wanglu':
Checked out revision 1. ( 测试提取成功 )
三,配置SVN服务器的HTTP支持
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作.
脚本内容如下:
# cd /home/svn/project/conf/
# cat PtoWP.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 $_`;
}
}
# ./PtoWP.pl ( 先给该脚本加可执行权限,然后执行以转换密码 )
Adding password for user wanglu
现在目录下会多一个webpasswd文件。
2,修改httpd.conf,添加关于SVN服务器的内容
编辑/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,启动HTTPD服务器
# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
=========================================
其中遇到的问题:
1.配置好后,只能本地通过浏览器访问,局域网内无法访问。 后来检测配置无误,是防火墙问题。
2.通过配置的账户登录,验证不通过。查看httpd的err_log,显示user could not found。检查后发现,粗心把httpd的配置中,passwd文件的配置写成了svn原有的,改成了生成的webpasswd,解决。
3.通过配置的账户登录,验证不通过。查看httpd的err_log,显示permission denied could not open password file。
查资料后,可能是SELinux引发的问题。chcon -R -h -t httpd_sys_content_t /home/svn 解决。