linux下svn服务器的搭建

 在网上找了很多资料,每篇都有不同的说法,我认为的是:版本的不同,导致安装步骤的不同。我的系统采用的是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)

AGo 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目录设置权限

  权限主体可以是用户组、用户或*,用户组在前面加@*表示全部用户。权限可以是wrwr和空,空表示没有任何权限。

示例:
[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下增加用户名和密码即可

 

Svn版本库的自动同步处理:

源机:

要备份的版本库: /opt/svndata/project1 

源机IP:  **.**.2.87

目标机:

备份到目标机的版本库 /opt/svndata/backup 

目标机IP: **.**.2.92

说明:在源机上的project1版本库修改后,自动将project1版本库备份到目标机的backup版本库中

处理步骤:

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

步骤 :首先是在目标机上建立普通的版本库,用来备份源机版本库:

# mkdir -p /opt/svndata/backup

# svnadmin create /opt/svndata/backup

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

步骤 :在目标机的backup下的hook下:

# cp pre_revprop-change.tmpl   pre_revprop-change

pre_revprop-change文件夹置空,并设置权限(重要):

# chmod 755 pre_revprop-change

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

步骤 :执行初始化(svnsync或要加全路径):

# svnsync init svn://localhost/backup svn://**.**.2.87/project1 --username **** -- password hello

注:源机管理员****,密码hello

执行完后会提示输入目标机和源机的用户名和密码,这个在conf文件中已经配置了。输入完成后会显示“复制版本***的属性”或者“***已经和***同步”,这代表初始化完成。

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

步骤 :执行同步的工作可以分为两种类型:

1.手动同步:

在目标机的终端输入:

# svnsync sync svn://localhost/backup

(svnsync sync  目标库)

执行后,如果目标库中有内容,就显示如下:

已提交版本一

复制版本一的属性

如果目标版本库中没有内容就不显,目标版本库中内容较多时会显示“正在传输……”

2.自动同步

在源库的hook文件夹下,拷贝post-commit.tmplpost-commit

# cp post-commit.tmp1  post-commit

替换post-commit最后两行为

svnsync sync  --non-interactive svn://**.**.2.92/backup --username **** -- password ****

注:最后为目标机用户名和密码

设置权限为755(重要)

# chmod 755 post-commit

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页