在网上找了很多资料,每篇都有不同的说法,我认为的是:版本的不同,导致安装步骤的不同。我的系统采用的是centos 5.3,安装subversion1.4.5可以一路./configure…,make,make install下去,但是subversion1.5.6,subversion1.6.5等等,在configure的时候都通不过,说缺少依赖。其实最简单的方法是使用yum进行安装,可以不用编译的。最终还是成功地在centos5.3上编译安装了subversion1.5.6,步骤总结如下:
第一步 服务器安装
一、安装apache
1. http://httpd.apache.org/ Download httpd-2.2.13.tar.gz
2. #./configure --enable-dav --enable-so --prefix=/usr/local/apache
3. #make
4. #make install
5. 拷贝源码包module里面的所有到 /usr/local/apache/module里面, 如果 已经有了就不用拷了,不然的话编译Subversion会通不过
6. 修改配置文件,开启ServerName(本机IP)
7. 启动#/usr/local/apache/bin/apachectl start
8. 在浏览器输入地址http://localhost/,如果浏览器出现It works. 说明 apache安装成功
注:我们使用的是svnserve的,但是网上很多都是用的apache,所以也列下其安装方法。
二、安装Subversion
1. 安装前的准备(Prerequisite)
1) 安装gcc编译器(没有这个不能进行编译)
将系统光盘放入光驱,分别找到以下包:(名字类似即可)
cpp-4.1.2-42.el5.i386.rpm
kernel-headers-2.4-9.1.98.el.i386.rpm
glibc-headers-2.5-24.i386.rpm
glibc-devel-2.5-24.i386.rpm
libgomp-4.1.2-42.el5.i386.rpm
gcc-4.1.2-42.el5.i386.rpm
按照以下顺序安装,必须以以下顺序,否则会出现报错:
rpm -ivh cpp-4.1.2-42.el5.i386.rpm
rpm -ivh kernel-headers-2.4-9.1.98.EL.i386.rpm
rpm -ivh glibc-headers-2.5-24.i386.rpm
rpm -ivh glibc-devel-2.5-24.i386.rpm
rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
rpm -ivh gcc-4.1.2-42.el5.i386.rpm
安装成功后:gcc如果提示中有文件目录那么就成功了
注意:以上是虚拟机种安装包,服务器的安装包是i386更改为x86,其中gcc-4.1.2-42.el5.i386.rpm仍然是i386。
2) 安装libapr 和 libapr-util
* libapr and libapr-util (REQUIRED for client and server)
A.Go to http://apr.apache.org/ to download the lastest version of apr
and apr-util.
apr-1.3.2.tar.gz
apr-util-1.3.2.tar.gz
B. 解压缩
#tar zxvf apr-1.3.2.tar.gz*.bz2
#tar zxvf apr-util-1.3.2.tar.gz*.bz2
C. 编译安装
#./configure -–prefix=/usr/local/apr
#./configure --prefix=/usr/local/apr –with-apr=/usr/local/apr
#make
#make install
3) 安装expat (XML Parser)
http://expat.sourceforge.net/ Download expat-2.0.1.tar.gz
#./configure
#make
#make install
4) 安装libneon (for http://)
http://www.webdav.org/neon/ Download neon-0.28.2.tar.gz
#./configure --prefix=/usr/local/neon
#make
#make install
5) 安装openssl
http://www.openssl.org/source/ Download openssl-0.9.8h.tar.gz
#./config --prefix=/usr/local/openssl
#make
#make install
2. 安装Subversion
1) http://subversion.tigris.org/
Download subversion-1.5.6.tar.gz 和subversion-deps-1.5.6.tar.gz
2) 解压
#tar zxvf subversion-1.5.6.tar.gz
#tar zxvf subversion-deps-1.5.6.tar.gz
3) 进入解压后的目录
#./configure --prefix=/opt/svn --with-apr=/usr/local/apr --with-apr-
util=/usr/local/apr --with-apxs=/usr/local/apache/bin/apxs --with-
neon=/usr/local/neon
#make
#make install
4) 运行#svnserve --version看是否安装成功,如果安装成功则可以看到其 版本信息
5) 运行svnserve
# svnserve -d -r /opt/svndata/project1
如果svn服务器运行成功,则可以使用netstat -ntlp查看服务的端口, 如果3690号端口正在被使用,则表示开启成功,要卸载此服务只要kill p id即可。
6)自动启动svnserve:/ect/rc.local svnserve -d -r /opt/svndata
第二步 服务器配置
1. 建立版本库目录,可建多个:
mkdir -p /opt/svndata/repos1
2.建立版本库:
svnadmin create /opt/svndata/repos1
3.修改版本库配置文件:
版本库1:
vi /opt/svndata/repos1/conf/svnserve.conf
内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos1
4.配置允许访问的用户:
vi /opt/svn/conf/pwd.conf
为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。
注意:对用户配置文件的修改立即生效,不必重启svn。
文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan = password
king = hello
5.配置用户访问权限:
vi /opt/svn/conf/authz.conf
为了简化配置,3个版本库共用1个权限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。
注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/occi, ,表示对版本库2中的occi项目设置权限
repos2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/occi/aaa]
king = rw
[repos2:/pass]
king =
删除无用文件:
rm /opt/svndata/repos1/conf/authz
rm /opt/svndata/repos1/conf/passwd
rm /opt/svndata/repos2/conf/authz
rm /opt/svndata/repos2/conf/passwd
权限的管理:
需要增加用户的话,只要在/opt/svn/conf下增加用户名和密码即可
u Svn版本库的自动同步处理:
l 源机:
要备份的版本库: /opt/svndata/project1
源机IP: **.**.2.87
l 目标机:
备份到目标机的版本库 /opt/svndata/backup
目标机IP: **.**.2.92
u 说明:在源机上的project1版本库修改后,自动将project1版本库备份到目标机的backup版本库中
u 处理步骤:
-------------------------------------
步骤 1 :首先是在目标机上建立普通的版本库,用来备份源机版本库:
# mkdir -p /opt/svndata/backup
# svnadmin create /opt/svndata/backup
-------------------------------------
步骤 2 :在目标机的backup下的hook下:
# cp pre_revprop-change.tmpl pre_revprop-change
将pre_revprop-change文件夹置空,并设置权限(重要):
# chmod 755 pre_revprop-change
-------------------------------------
步骤 3 :执行初始化(svnsync或要加全路径):
# svnsync init svn://localhost/backup svn://**.**.2.87/project1 --username **** -- password hello
注:源机管理员****,密码hello
执行完后会提示输入目标机和源机的用户名和密码,这个在conf文件中已经配置了。输入完成后会显示“复制版本***的属性”或者“***已经和***同步”,这代表初始化完成。
-------------------------------------
步骤 4 :执行同步的工作可以分为两种类型:
1.手动同步:
在目标机的终端输入:
# svnsync sync svn://localhost/backup
(svnsync sync 目标库)
执行后,如果目标库中有内容,就显示如下:
已提交版本一
复制版本一的属性
如果目标版本库中没有内容就不显,目标版本库中内容较多时会显示“正在传输……”
2.自动同步
在源库的hook文件夹下,拷贝post-commit.tmpl为post-commit:
# cp post-commit.tmp1 post-commit
替换post-commit最后两行为
svnsync sync --non-interactive svn://**.**.2.92/backup --username **** -- password ****
注:最后为目标机用户名和密码
设置权限为755(重要)
# chmod 755 post-commit