您的位置:首页 > 运维架构

<<svn服务配置和维护常用命令>>

2012-04-16 17:01 726 查看
<<svn服务配置和维护常用命令>>

~/bin/svn-create-repos.sh

1. Svn独立服务安装

操作系统: Redhat Linux AS3 AS 4 ContOS AS 4

安装包获取:

下载:

http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz

http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz

编译:

以root用户登录.

将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器.

$ tar xfvz subversion-1.4.0.tar.gz

$ tar xfvz subversion-deps-1.4.0.tar.gz

subversion-deps包有四个目录zlib apr apr-util neon这四个目录都是依赖包, 编译subversion所必须的代码

$ cd subversion-1.4.0

$ ./configure -prefix=/opt/svn -without-berkeley-db -with-zlib

(注: 以svnserve方式运行, 不加apache编译参数. 以fsfs格式存储版本库, 不编译berkeley-db)

$ make clean

$ make

$ make install

$ vi /etc/profile,在/etc/profile

# 加入:

PATH=$PATH:/opt/svn/bin

export PATH

测试:

$ svnserve -version

# 如果显示如下, 安装成功:

svnserve, version 1.4.0 (r21228)

compiled Oct 12 2006, 10:18:56

Copyright (C) 2000-2006 CollabNet.

Subversion is open source software, see http://subversion.tigris.org/

This product includes software developed by CollabNet
(http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file
(FSFS) repository.

2. svn配置

2.1 建立版本库目录

建立版本库目录, 可建多个:

$ mkdir -p /opt/svndata/repos1

$ mkdir -p /opt/svndata/repos2

建立版本库:

$ svnadmin create /opt/svndata/repos1

$ svnadmin create /opt/svndata/repos2

2.2 修改版本库配置文件:

2.2.1 版本库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

2.2.2 版本库2:

$ vi /opt/svndata/repos2/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 = repos2

# 即除realm = repos2外, 其他与版本库1配置文件完全相同. 如果有更多的版本库, 依此类推.

2.3 配置允许访问的用户:

为了简化配置, 2个版本库共用1个用户配置文件. 如有必要, 也可以分开.

注意: 对用户配置文件的修改立即生效, 不必重启svn.

文件格式如下:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

其中, [users]是必须的. 下面列出要访问svn的用户, 每个用户一行.

$ vi /opt/svn/conf/pwd.conf

[users]

alan = password

king = hello

2.4 配置用户访问权限:

为了简化配置, 3个版本库共用1个权限配置文件/opt/svn/conf/authz.conf. 如有必要,

也可以分开. 文件中定义用户组和版本库目录权限.

注意:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义.

* 对权限配置文件的修改立即生效, 不必重启svn.

2.4.1 用户组格式:

[groups]

<用户组名> = <用户1>,<用户2>

其中, 1个用户组可以包含1个或多个用户, 用户间以逗号分隔.

2.4.2 版本库目录格式:

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中, 方框号内部分可以有多种写法:

/ 表示根目录及以下. 根目录是svnserve启动时指定的, 我们指定为

/opt/svndata.这样, / 就是表示对全部版本库设置权限

repos1:/ 表示对版本库1设置权限

repos2:/abc 表示对版本库2中的abc项目设置权限

repos2:/abc/aaa 示对版本库2中的abc项目的aaa目录设置权限

权限主体可以是用户组,用户或*, 前面加@表示用户组, *表示全部用户. 权限可以是

w,r,wr和空, 空表示没有任何权限.

$ vi /opt/svn/conf/authz.conf

# 示例:

[groups]

admin = alan

[/]

@admin = rw

[repos1:/abc/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

3. 启动svn

建立启动svn的用户:

$ useradd svn

$ passwd svn

# 根据提示为用户svn设置密码

允许用户svn访问版本库:

$ chown -R svn:svn /opt/svndata

$ chown -R svn:svn /opt/data

// 启动svn:

$ su - svn -c "svnserve -d -listen-port 9999 -r /opt/svndata"

其中:

su svn表示以用户svn的身份启动svn

-d 表示以daemon方式(后台运行)运行

-listen-port 9999 表示使用9999端口, 可以换成你需要的端口. 但注意, 使用1024以下的端口需要root权限

-r /opt/svndata 指定根目录是/opt/svndata

// 检查:

$ ps -ef | grep svnserve

如果显示如下, 即为启动成功:

svn 6941 1 0 15:07 ? 00:00:00 svnserve -d -listen-port 9999 -r /opt/svndata

4. svn服务与apache 整合

Subversion存储方式, 一是Berkeley DB伯克利存储方式, 二是fsfs存储方式.

1,安装APR-1.2.7和APR-util-1.2.7

下载地址: http://apr.apache.org/

tar zxvf apr-1.2.7.tar.gz

./configure

make

make install

tar zxvf apr-util-1.2.7.tar.gz

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

make

make install

2,编译安装APACHE.

tar zxvf httpd-2.2.3.tar.gz

cd httpd-2.2.3

./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

make

make install

3,安装subversion-1.4.0

tar zxvf subversion-1.4.0.tar.gz

./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

问题: 有关共享库错误

方法: echo "/usr/local/apr-util/lib" >> /etc/ld.so.c

ldconfig echo $?

make

make install

设置环境变量(可做可不做)

vi /etc/profile,在/etc/profile最后加入:

PATH=$PATH:/opt/svn/bin

export PATH

4,查看subversion两个动态库有没有安装成功

vi /opt/apache/conf/httpd.conf

看到下面两个模块说明安装成功

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

5,配置SVN

vi /opt/apache/conf/httpd.conf

配置:

<Location /svn>

DAV svn

SVNParentPath /data/svn/repos //svn父目录

AuthType Basic //连接类型设置

AuthName "Subversion repository"
//连接框提示

AuthUserFile /data/svn/passwd //用户配置文件

AuthzSVNAccessFile /data/svn/auth

Require valid-user //passwd所有的用户都可以访问

</Location>

6,建立SVN存储仓库

#mkdir -p /opt/svndata/repos

#svnadmin create -fs-type fsfs /opt/svndata/repos

备份以前的SVN库

#svnadmin dump /opt/svndata/repos > /root/repos20080328

把备份出来的数据恢复到本地

#svnadmin load /opt/svndata/repos/ < /root/repos20080328

7,建立本地访问控制文件

#/opt/apache/bin/htpasswd [-c] /opt/passwd north

//第一次设置用户时使用-c表示新建一个用户文件. #/opt/apache/bin/htpasswd passwd 用户名(加入新的用户)

8,建立本地项目控制文件

touch /opt/svndata/auth

文件内容为:

[groups]

[repos1:/]

#wxy = rw

north = rw

tom = rw

[repos2:/]

repos2 = rw

9,安装客户端, 访问服务器

http://192.168.0.180:/svn/jishu

注意: SVN是APACHE配置的时候加上去的.

10,到此安装基本结束

修改一下/data/svn/repos属性, 否则会导致文件上传失败.

chmod -R apache.apache repos

三,日常维护命令和参数

启动svn服务

svnserve -d --listen-port 20000 -r /opt/svndata

创建版本库

svnadmin create fs-type fsfs /opt/svndata/mark

查看版本库的信息

svn list file:///opt/svndata/mark

svn list --verbose file:///opt/svndata/mark

导入库的目录结构

svn import /tmp/mark/ file:///opt/svndata/mark/ --message "init"
(文件夹mark下有bo)

删除版本库mark下文件夹bo

svn delete svn://192.168.0.180:20000/opt/svndata/mark/bo -m "delete "

//导出

$svnlook youngest oldrepo

$svnadmin dump oldrepo >; dumpfile

//还原

$svnadmin load newrepo < dumpfile

停止subversion服务

ps -aux | grep svnserve

kill -9 ID号

作者:options-future

本文出自 "bo" 博客, 请务必保留此出处/article/4500420.html

100. FAQ

100.1 subversion 中修改 log message

有两个命令可以完成:

* 客户端:

[~]$ svn propset svn:log "message text" -r 48 URL --revprop

[~]$ svn propset svn:log '使得当参数不匹配时, 其能够正常打印帮助信息然后退出' -r 33 --revprop

* 服务端:

[~]$ svnadmin setlog REPOS_PATH -r REVISION FILE

NOTE:

但是, 两者都需要设定 pre-revprop-change, 仓库下 svn/hook 目录里有

pre-revprop-change.tmpl 模板, 复制一份到文件 pre-revprop-change 并 chmod a+x

就可以了.

100.2 svn 查看资源历史记录失败; 并提示"Item is not readable"

问题: svn 查看资源历史记录失败 , 并提示"Item is not readable"

solution:

在svnserve.conf 文件中,设置 anon-access = none 就可以了

100.3 SVN服务器搬家

内部服务器装上2T硬盘后, 打算把SVN服务器也搬到那台机器上. 原理就是dump一下现有

的全部数据, 再在另外一台机器上load. 过程: 在本地VisualSVN Server安装路径的

bin目录下执行:

// g:\svn\new为当前SVN库存放的位置

$ svnadmin dump g:\svn\new > g:\transfer.dmp

13个G的库, dump后有35G, 传到新机器上. 在该机器上执行:

$ svnadmin create g:\svn\new

$ svnadmin load g:\svn\new < g:\transfer.dmp

账号及授权配置文件就是g:\svn下的 authz,htpasswd, 拷到新机器库目录下即可. 版本

号为1100左右, 整个搬家过程用了近6个小时.

查看原文: http://rico.zhyh.org/?p=3368

100.4 set proxy for svn

公司上网需要用通过代理, 不能直接访问外部网络, SVN中可以通过配置文件配置代理来

下载代码, 在安装完SubVersion之后, 在 C:\Documents and

Settings\[username]\Application Data\Subversion目录下有一个servers文件(in

linux, it's ~/.subversion/servers), 其中有一些说明, 直接在最后一行加入如下配置

即可:

http-proxy-host = [代理服务器的域名或者IP]

http-proxy-port = [代理服务器的端口]

http-proxy-username = [username]

http-proxy-password = [password]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: