五.支持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代码  

  1. use warnings;  

  2. use strict;  

  3.                   

  4. #open the svn passwd file  

  5. open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");  

  6.         

  7. #clear the apache passwd file  

  8. open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");  

  9. close (OUT_FILE);  

  10.                   

  11. #begin  

  12. foreach (<FILE>) {  

  13.         if($_ =~ m/^[^#].*=/) {  

  14.                 $_ =~ s/=//;  

  15.                 `htpasswd -b webpasswd $_`; #核心语句就这个,如果以后添加或者修改用户密码,可以使用 htpasswd -nb username password ,加密后的信息会被显示在屏幕上,复制内容到webpasswd文件即可。  

  16.         }  

  17. }  

 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