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]权限等是否正确