[转]svn服务器端源码编译安装和架设

转载自: http://wolfgangkiefer.blog.163.com/blog/static/862655032009101721627642/

一。 安装

svn服务器端依赖于apr/apr-util/sqlite,因此需要首先安装这三个库。

1. mkdir /home/xxx/soft

cd /home/xxx/soft

#apr

wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.5.tar.gz

tar xzvf apr-1.4.5.tar.gz

cd apr-1.4.5

./configure --prefix=/usr/local/apr

make && make install

#apr-util

wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.12.tar.gz

tar xzvf apr-util-1.3.12

cd apr-util-1.3.12

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make && make install

#sqlite

wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz

tar xzvf sqlite-autoconf-3070701.tar.gz

cd sqlite-autoconf-3070701

./configure --prefix=/usr/local/sqlite

#svn

wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz

tar xzvf subversion-1.6.17.tar.gz

cd subversion-1.6.17

./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite 

make && make install

通过上述步骤,svn基本就安装成功了,根据提示信息安装缺少的库文件。

2. 查看svn版本号

运行命令:

/usr/local/svn/bin/svnserve --version

如果svn安装成功,会返回svn的版本信息。

3. 运行svnserve:

/usr/local/svn/bin/svnserve -d 

如果该命令执行成功,则可以使用netstat -ntlp查看服务端口,如果3690端口正在使用,则表示启动成功,停止该服务,执行kill pid即可。

4. 自动启动svnserve

vi /etc/rc.local

增加: /usr/local/svn/bin/svnserve -d 

二。 服务器配置

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

参考文档:

1. linux下SVN服务器端安装与使用

http://blog.163.com/ruihuadesunny@126/blog/static/39026191201122845947679/

posted on 2011-09-08 19:38  DavidYanXW  阅读(484)  评论(0编辑  收藏  举报