1. 软件环境
1. 版本
软件 版本 说明
Linux redhat 2.6.9-5.EL 
APR APR-1.2.12 Apache可移植运行库
APR-util APR-util-1.2.12 
Apache httpd-2.2.6.tar.gz 
Subversion subversion-1.4.5.tar.gz 
Subversion-deps subversion-deps-1.4.5.tar.gz svn编译时需要的程序
2. 下载
* Subversion相关软件下载http://www.tigris.org/servlets/NewsItemView?newsItemID=1940
* Apache相关软件下载:http://httpd.apache.org/download.cgi

安装(完全按以下命令配置即可)
安装APR-1.2.12APR-util-1.2.12

1.
# tar zxvf apr-1.2.12.tar.gz
# cd apr-1.2.12
# ./configure
# make
# make install

2.
# tar zxvf apr-util-1.2.12.tar.gz
# cd apr-util-1.2.12
# . /configure --with-apr=/usr/local/apr
# make
# make install

安装apache 2.2.6
1. 解包 httpd-2.2.6.tar.gz

# tar xzvf httpd-2.2.6.tar.gz
# cd httpd-2.2.6

2. 生成配置文件

# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-dav --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-maintainer-mode MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

     

      3. 生成make文件,并安装

# make
# make install

4. 编辑配置文件httpd.conf

# vi /usr/local/apache2/conf/httpd.conf

修改内容:

      Listen localhost:80     

      ServerName localhost:80
保存退出

* apache的默认端口为80
* Svn的默认端口为3690
5. 启动Apache服务:

# /usr/local/apache2/bin/apachectl start

6. 浏览网站:
用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

需要将linux的防火墙关闭,否则其他IP地址无法访问
关闭防火墙命令:service iptables stop
7. 停止Apache服务:

# /usr/local/apache2/bin/apachectl stop

8. 设置启动系统后,自启动Apache服务
编辑etc/rc.d/rc.local
# vi /etc/rc.d/rc.local

在最后加上一句:
/usr/local/apache2/bin/apachectl start

Subversion1.3.2安装以及配置
1.Subrsion安装

# tar xvzf Subversion-1.3.2.tar.gz
# cd Subversion-1.3.2
# ./configure --with-apxs=/usr/local/apache2/bin/apxs 

--with-ssl  --with-zlib

--prefix=/usr/local/subversion
# make
# make install

 

查看subversion两个动态库有没有安装成功
# 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

 

FAQ: configure可能存在的问题及解决方法
1. configure: error: could not find library containing RSA_new
解决方法: yum install openssl-devel
2. configure: error: no XML parser was found: expat or libxml 2.x required
解决方法: # yum install expat-devel
3. configure: error: --with-zlib requires an argument.
解决方法: 去掉此选项

* httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
answer make sure you have your apache compiled with the dav options:
--enable-dav   --enable-dav-fs   --enable-dav-lock

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

( 如果./configure编译出错: 

get the sqlite 3.6.13 amalgamation from: 
http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz 
unpack the archive using tar/gunzip and copy sqlite3.c from the 
resulting directory to: 
This file also ships as part of the subversion-deps distribution. 
configure: error: Subversion requires SQLite 
按照以上提示下载sqlite-amalgamation-3.6.13.tar.gz 

#cd /usr/local/src/tarbag 
#wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz 
#tar zxvf sqlite-amalgamation-3.6.13.tar.gz -C ../software 
# mkdir /usr/local/src/software/subversion-1.6.6/sqlite-amalgamation 
# cp /usr/local/src/software/sqlite-3.6.13/sqlite3.c /usr/local/src/software/subversion-1.6.6/sqlite-amalgamation/ 

#cd /usr/local/src/software/subversion-1.6.6

#make && make install


2.Subversion的建立与使用仓库使用

//创建库文件所在的目录 (svnroot用户进行下面的操作)
MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

开始建立版本库,在/svn目录下建立仓库 test

/usr/local/svn/bin/svnadmin create /svn/test

可以用 ls /svn/test看下目录下是否多了一些目录和文件 

导入项目文件到版本库

我们可以建立 /home/test   下面建立 1到5个测试文件

mkdir /home/test 

touch 1 2 3 4 5 

/usr/local/svn/bin/svn import /home/test/ file:///svn/test/ -m "ku"

将 /home/test 下面的五个文件 导入仓库test


3、Subversion服务器的搭建配置apache支持svn
我们使用与Apache模块的方式运行。
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:

# vi /usr/local/apache2/conf/httpd.conf

加入下面2行:默认Subrsion安装成功后会自动加上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

修改apache配置文件

vi /usr/local/apache2/conf/httpd.conf

末尾加入

 MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

建立用户:

1 . 添加用户:

/usr/local/apache2/bin/htpasswd -c /svn/test/conf/passwd user1

第二次添加用户不需要带 -c 参数 可以加上 -m

/usr/local/apache2/bin/htpasswd -m /svn/test/conf/passwd user2

2 . 权限分配:

vi /svn/test/conf/authz

末行加入

Admin=admin,user1

groupA=user1

groupB=user2

[test:/]

@admin=rw

[test:/test]

*=

@admin=rw

@groupA=rw

@groupB=r

仅作测试使用   测试结果OK

备注:

[groups] /*这个表示群组设置

Admin=user1,user2       /*这个表示admin群组里的成员 user1,user2

Develop=u1, u2         /*这个表示Develop群组里的成员 u1,u2

[test:/]    /*这表示,仓库www的根目录下的访问权限

user1 = rw     /* test仓库user1用户具有读和写权限

user2 = r       /* test仓库userl用户具只有读权限

@develop=rw     /*这表示 群 develop的成员都具有读写权限

[/]          /*这个表示在所有仓库的根目录下

* = r        /*这个表示对所有的用户都具有读权限

最后测试(需要重启Apache

通过下面url请求测试:
http://localhost/test

当然,要受权限的限制,必须是合法用户才能访问且具有相应的权限
客户端的使用,可以通过许多客户端GUI软件来用。比如TortoiseSVN就很好用。
官方网址:http://tortoisesvn.tigris.org/




另外一篇文章也很详细:

【本文主要介绍SVN的迁移方案,以及如何安装部署一台SVN服务器】

一、迁移方案

<<>>

subversion for linux的安装(SVN+apache+linux)-LMLPHP

工作机制:SVN Server配置于本地机房中(内网接入),外网接入时需要通过VPN通道。

备份机制:项目进行中时,定期备份SVN服务器的版本库(可采用脚本实现);结项后,手动check out版本库,进行整体备份。

优势:保证了SVN Server的安全性,稳定性。且当SVN Server出现宕机等异常时,可立即切至备份服务器继续工作。

劣势:当 VPN通道出现异常时,导致外网则无法接入SVN Server。

自动备份方案

采用rsync文件同步方式。将SVN版本库进行同步工作,rsync教程

二、安装配置SVN服务器1.安装apr和apr-util# wget http://archive.apache.org/dist/apr/apr-1.2.12.tar.gz# wget http://archive.apache.org/dist/apr/apr-util-1.2.12.tar.gz# tar zxvf apr-1.2.12.tar.gz# cd apr-1.2.12# ./configure --prefix=/usr/local/apr# make && make install# tar zxvf apr-util-1.2.12.tar.gz# cd apr-util-1.2.12# ./configure --with-apr=/usr/local/apr# make && make install2.安装apache# wget http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.16.tar.gz# tar zxvf http-2.2.16.tar.gz# cd http-2.2.16# ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-modules=so --enable-dav --enable-maintainer-mode --enable-ssl# make && make install3.安装subversion# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.11.tar.gz# wget http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz# tar zxvf subversion-deps-1.6.11注意:删除apr与apr-util。# tar zxvf subversion-1.6.11.tar.gz# cd subversion-1.6.11# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl# make && make install

/*将svnadmin放入$PATH环境变量里*/
cp /usr/local/subversion/bin/svnadmin /usr/local/sbin

/* 你可以用以下命令检验subversion是否安装成功 */
svnadmin –version

4.subversion环境的搭建

使用与Apache模块的方式运行
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:

LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so

#然后配置仓库:

建立SVN版本库

#cd /jiunile/svn#svnadmin create test#chmod -R 777 test

建立svnaccessfile

#cd /jiunile/svn#vi svnaccessfile[test:/]xupeng = rw

然后,配置验证方式:
这里使用旦Apache的验证方式:

添加用户和密码:

cd /jiunile/svn/usr/local/apace2/bin/htpasswd –bc svnpasswd username password注意:-bc 第一次创建需要c参数,接下来就只要b这个参数即可1下面,就要写这个svnaccessfile文件说明1[svn1:/] //这表示,仓库svn1的根目录下的访问权限dl1 = rw // svn1仓库dl1用户具有读和写权限dl2 = rw // svn1仓库dl2用户具有读和写权限dl3 = r // svn1仓库dl3用户具有读权限[svn2:/] //svn2仓库根目录下的访问权限harry = r // harry用户在svn2仓库根目录下只有读权限sally = // sally用户在 svn2仓库根目录下无任何权限#[/] // 这个表示在所有仓库的根目录下#* = r // 这个表示对所有的用户都具有读权限#[groups] // 这个表示群组设置#svn1-developers = harry, sally // 这个表示某群组里的成员#svn2-developers = sally#[svn1:/]#@svn1-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置1将这个设置完成后。重启Apache1/usr/local/apache2/bin/apachect1 –k restart

就可以通过

http://localhost/svn/test

这个URL来访问仓库了

导入导出SVN版本库可以使用SVN客户端工具实现,很简单,这里就不详细说明了,客户端工具为:TortoiseSVN,图形是只乌龟

三、遇到的问题

问题1.将线上的SVN环境拷贝过来,配置好后,通过URL访问提示如下信息:Could not open the requested SVN filesystem
查看日志文件,发现:Expected FS format ’2′; found format ’3′

问题产生原因:

服务程序是1.4.x版本的svnserve或mod_dav_svn,版本库通过1.5.x版本的svnadmin或TortoiseSVN创建时,会产生这个问题

解决方法:

使用1.5以上的SVN来作为服务
或使用1.4系列的svnadmin或TortoiseSVN来创建版本库
或使用1.4.x系列创建新版本库,通过1.5.x版本备份并恢复原版本库到新版本库

问题2.

httpd: Syntax error on line 443 of/usr/local/apache2/conf/httpd.conf: Cannot load/usr/local/apache2/modules/mod_dav_svn.so into server:/usr/local/lib/libsvn_subr-1.so.0: undefined symbol:apr_memcache_add_server

问题产生的原因:

SVN依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。 由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr,apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要。

解决方法:
下载apr-1.2.12.tar.gz与apr-util-1.2.12.tar.gz。

编译安装这两个包,然后重新安装下apache与subversion即可。

问题3.

/usr/bin/ld: cannot find -lexpatcollect2: ld returned 1 exit status
make[1]: *** [test/serf_get] 错误 1
make[1]: Leaving directory `/root/build/subversion-1.6.11/serf
‘make: *** [external-all] 错误 1

解决方法:

yum install expat-devel
12-24 10:33