五.支持http访问
经过以上配置,svn服务基本上就算配置完成了,不过此时只能通过svn://192.168.xx.xx/project的方式访问,如果希望通过http的方式访问,则还需进行如下配置。
上面安装工具时已经安装了Apache和Perl。
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。可以写了一个Perl脚本完成这个工作.
cd /home/svn/project/conf/
vi PtoWP.pl
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 $_`; #核心语句就这个,如果以后添加或者修改用户密码,可以使用 htpasswd -nb username password ,加密后的信息会被显示在屏幕上,复制内容到webpasswd文件即可。
}
}
perl PtoWP.pl #执行脚步后会在当前路径下生成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 #这里一定要使用webpasswd AuthzSVNAccessFile /home/svn/project/conf/authz Satisfy all Require valid-user </Location>需要加载三个模块,如果是手工编译Apache时应该加上--enable-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
3,启动HTTPD服务器service httpd restart
4,授予txn-current-lock文件777权限
原因是svn目录是使用root用户创建,而Apache可能不是root用户启动的,所以在提交svn时Apache用户没有/home/svn/project/db/txn-current-lock文件的访问权限
chmod 777 /home/svn/project/db/txn-current-lock
5,测试使用svn客户端工具,或者找一台安装了subversion的linux服务器进行测试
svn co http://192.168.xx.xx/project