2.安装svn

yum -y install subversion


3.配置


建立版本库目录

mkdir /home/svn


svnserve -d -r /home/svn


4.建立版本库


创建一个新的Subversion项目

svnadmin create /home/svn/17tou


配置允许用户rsync访问

cd /home/svn/17tou/conf


vi svnserve.conf

anon-access=none

auth-access=write

password-db=passwd


注:修改的文件前面不能有空格,否则启动svn server出错


vi passwd

[users]

#<用户1> = <密码1>

#<用户2> = <密码2>

user=123456


5.客户端连接

svn co svn://192.168.1.7/17tou

用户名密码:user (123456)

-----------------------------------------------------------------


在使用amazone的ec2服务器时需要在控制台打开安全设置inbound中将svn的默认端口3690打开


===============================================================


6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中


yum install httpd

mkdir -p /home/webroot


1)设置WEB服务器根目录为/home/webroot


2)checkout一份SVN


svn co svn://localhost/17tou /home/webroot


修改权限为WEB用户

mkdir -p /home/webroot/17tou


chown -R apache:apache /home/webroot/17tou


3)建立同步脚本


cd /home/svn/17tou/hooks/


cp post-commit.tmpl post-commit


编辑post-commit,在文件最后添加以下内容


export LANG=en_US.UTF-8

SVN=/usr/bin/svn

WEB=/home/webroot/

$SVN update $WEB -username user -password 123456

chown -R apache:apache $WEB


增加脚本执行权限


chmod +x post-commit



=========================================到这里结束。edit by ljf


另外插入:


三,配置SVN服务器的HTTP支持

        1,转换SVN服务器的密码

                由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作.

                脚本内容如下:

                # cd /home/svn/17tou/conf/

                # cat PtoWP.pl 

                #!/usr/bin/perl

                # write by huabo, 2009-11-20

                

                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 () {

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

                        $_ =~ s/=//;

                        `htpasswd -b webpasswd $_`;

                    }

                }


                # ./PtoWP.pl ( 先给该脚本加可执行权限,然后执行以转换密码 )

                Adding password for user pm

                Adding password for user server_group

                Adding password for user client_group

                Adding password for user test_group

                现在目录下会多一个webpasswd文件。


        2,修改httpd.conf,添加关于SVN服务器的内容

                编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:

   DAV svn

   SVNPath /home/svn/17tou/

   AuthType Basic

   AuthName "svn for 17tou" 

   AuthUserFile /home/svn/17tou/conf/webpasswd 

   AuthzSVNAccessFile /home/svn/17tou/conf/authz

   Satisfy all

   Require valid-user


        3,启动HTTPD服务器

                # service httpd restart

                Stopping httpd:                                            [FAILED]

                Starting httpd:                                            [  OK  ]

与 SVN 协同工作

启动 Apache 报错:Unknown DAV provider: svn

解决方法

没有这个动态链接库

Unknown DAV provider: svn 这是因为系统没有安装mod_dav_svn 运行,yum install mod_dav_svn 就行了。

LoadModule dav_svn_module modules/mod_dav_svn.so

直接运行这个命令,Linux会报错说没有 LoadModule 这个命令。

将这两句话,添加到 vi /usr/local/apache2/conf/httpd.conf 的末尾

LoadModule dav_svn_module modules/mod_dav_svn.so 

LoadModule authz_svn_module modules/mod_authz_svn.so



        4,用浏览器访问http://192.168.1.7/17tou/server/测试

                测试结果如下图所示:


 

                ( 测试成功 )


四,配置邮件提醒支持

        1,安装Perl模块Module::Build

                # wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz

                # tar xvf Module-Build-0.36_11.tar.gz 

                # cd Module-Build-0.36_11

                # perl Build.PL 

                # ./Build 

                # ./Build test

                # ./Build install

                # cd ..


        2,安装Perl模块Authen::SASL

                # wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz

                # tar xvf Authen-SASL-2.15.tar.gz 

                # cd Authen-SASL-2.15

                # perl Makefile.PL 

                # make test

                # make install

                # cd ..


        3,安装Perl模块Net::SMTP_auth

                # wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz



===========另外插入结束。insert by ljf.













---------------------------------------------------------------------------------------------

在Linux下,SVN服务器的权限配置


     言归正传,按照前面的教程装完1.5.5版以后,当svnadmin create /home/svn/17tou创建仓库后,应该在仓库目录下的config目录有3个文件——authz、passwd、svnserve.conf。


     下面对3个文件进行说明:


svnserve.conf是基础的配置,用于控制访问的权限将[general]前的注释与空格去掉,一定要去掉空格,否则到时客户端登录会出现"Section header must start in the first column的”的告警!亲身体会啊!!最后此文件内容至少包含以下内容:


[general]


anon-access = none


auth-access = write


password-db = passwd


authz-db = authz


其中,anon-access = none禁止匿名登录,auth-access = write为署名登录获得写权限,password-db = passwd指定用户配置文件,authz-db = authz指定权限配置文件


————————————————


passwd是用户配置文件,用于设置用户名以及密码


格式为:


[users]


<用户1> = <密码1>


<用户2> = <密码2>


其中用户名,密码不能为中文,至少我设中文登录时提示没有该用户


[users]是必须的。下面列出要访问svn的用户,每个用户一行。


示例:


[users]


alan = password


king = hello


这个里面的user表示当前test版本库的成员


——————————————————


authz是详细的用户授权文件


格式如下(以下内容转载,感谢原创):


  用户组格式:


[groups]




<用户组名> = <用户1>,<用户2>


  其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在passwd文件里能找到,它是给那个里面的user赋权限.


  版本库目录格式:


[/目录]




@<用户组名> = <权限>




<用户名> = <权限>


  示例:


  [groups]


  admin = alan


  [/]


  @admin = rw


  [/svn/p1/WebProject]


  king = rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)


  [/svn/p1/web]


  zp=r(表示zp能够读/svn/p1/web目录下的所有信息)


————————————


以下是自己的体会:


注意:@admin代表整个组,king 在这里只是一个用户


关于访问路径[/目录],其完整格式[repos-name:path]或者[path],repos-name是版本库的名字


注意:在authz中如果要设定中文文件夹的路径,例如[/测试],请在linux在双击文件用默认记事本打开,然后另存为,注意将编码格式改为UNICODE UTF-8,否则在windows下用TortoiseSVN进行操作时,该中文路径的权限设置会有问题!此乃我的实际测试


当你用的中文svn客户端,并且又出现[璁よ瘉澶辫触]的错误不能够签入和签出,那么请检查authz的[path]权限等是否正确