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.12和APR-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服务器】
一、迁移方案<<>>
工作机制: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
使用与Apache模块的方式运行
首先,把我们需要的SVN模块加载上,修改Apache的配置文件httpd.conf:
#然后配置仓库:
建立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