`

linux(centos)搭建独立SVN服务器

 
阅读更多

svn介绍

svn服务器有2种运行方式:
1. 独立服务器 (例如:svn://xxx.com/xxx)
2. 借助apache。(例如:http://svn.xxx.com/xxx)
svn存储版本数据也有2种方式:
1. bdb
2. fsfs。
因为bdb方式在服务器中断时,有可能锁住数据,所以还是fsfs方式更安全一点,我也选择这种方式。

svn安装linux

安装演示:

svn服务器安装操作系统: centOS
1.tar安装包安装
获取svn安装包:

# wget “http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz”
# wget “http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz”

编译svn以root用户登录:

# tar xfvz subversion-1.6.6.tar.gz
# tar xfvz subversion-deps-1.6.6.tar.gz
# cd subversion-1.6.6
# ./configure –prefix=/opt/svn –without-berkeley-db
# make && make install

(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
在/etc/profile最后加入 svn path 以方便操作:

# vi /etc/profile
path=$path:/opt/svn/bin
export path
2.yum在线安装
sudo yum install subversion

测试安装是否成功:

svnserve –-version

假如显示如下,svn安装成功:

svnserve, version 1.6.6 (r40053)
compiled dec 2 2009, 22:37:15
copyright (c) 2000-2009 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.
cyrus sasl authentication is available.

svn配置建立版本库
建立svn版本库:

svnadmin create /opt/svndata/repos

修改svn版本库配置文件版本库:具体可以看后面补充

# vi /opt/svndata/repos/conf/svnserve.conf

启动svn
svnserve -d -r /opt/svndata –listen-host 127.0.0.1 –listen-port 3690

在开机时启动SVN服务
vi /etc/rc.local
svnserve -d -r /opt/svndata


TortoiseSVN使用简介

参见文档:http://downloads.wuchuanjiang.com/2011-09/TortoiseSVN使用教程.doc

文档摘要:
安装及下载client 端
1. 下载Windows 端程序:http://tortoisesvn.net/downloads。一般而言,如果是32-bit的Windows XP 应该使用TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi 这个档案。如果是64-bit 的操作系统,则应该使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi 这个档案。
2. 执行下载回来的TortoiseSVN 安装程序,就会进行TortoiseSVN 的安装。正确安装后,应该进行一次的重开机,以确保TortoiseSVN 的正确无误。
3. 安装成功后,在档案管理员内按下鼠标右键,应该可以看到如右图所示:

大部分的TortoiseSVN的操作都是透过档案管理员及鼠标右键就可以完成了。如果您之前使用过TortoiseCVS,应该会对这种操作方式感到十分亲切。


启动两个svn:

svnserve -d --listen-port 3690 -r /opt/svndata1
svnserve -d --listen-port 3691 -r /opt/svndata2

启动与停止subversion
启动subversion:

/usr/local/subversion/bin/svnserve -d -r /usr/local/subversion/

-d表示以daemon方式运行(后台运行)
-r /usr/local/subversion/repository/指定根目录是/usr/local/subversion/
停止subversion:
找到svnserve的进程号

ps -ef | grep svnserve

再kill掉: kill “subversion的进程号”(或者kill svnserve)

客户单连接地址项目目录
当svnserve开始运行时,它将会暴露所有的Repository到网络上。不过,当客户端需要获取一个Repository的内容时,需要指定Reopsitory的绝对路径。例如:一个Repository放在文件路径
C:/Project Repository/Project1
那么当客户端访问时,需要指定绝对路径:
svn://host/C:/Project Repository/Project1
所以,为了增加保密性,你可以使用参数-r指定需要暴露的Repository的路径,当用户访问时,只需指定Repository的名称即可。例如上面的Repository,当启动服务时,使用如下的方法:
svnserve -d -r C:/Project Repository
那么当客户端访问时,则使用
svn://host/Project1
就可以获取数据了。


搭建独立SVN服务器遇到的问题:

svn登陆时出现:Authorization failed
解决:1.anthz文件配置有问题,重新配置
2.TortoiseSVN客户端版本较老,升级版本


补充:配置文件说明

内置的验证和授权

当客户端连接到一个svnserve进程时,下面的流程就会触发:
1、客户选择一个指定的Repository;
2、服务处理Repository的配置文件 conf/svnserve.conf文件,并且开始执行在其中定义的所有验证和授权策略;
3、依赖与情形和授权策略:
a)客户端也许允许匿名访问而不需要验证,或者
b)客户但也许需要在任何时候被要求验证,或者
c)假如处于”隧道模式”中,客户端将声明自己已经可以被外部验证。

很显然,如上所说,用户文件是一个名为svnserve.conf的,放在conf目录下的文件。
现在我们来看看如何配置这个文件:
这个配置文件放置在Repository的目录中的conf目录下,它有两个节点:

[general]
[users]

其中,[general]的配置信息有:

anon-access = read
auth-access = write
其中表示对于验证有效的以及没通过验证的用户可以做什么事情。分别有read, write和none
[users]的标签的配置内容有:
USERNAME = PASSWORD
password-db = passwd
realm = My First Repository
其 中表示,用户名对应的密码是什么,或者指定一个存储用户名和密码的文件的相对或绝对路径以及指定了Repository的验证领域。如果两个 Repository有相同的验证领域,那么它们应该有相同的密码数据库,反之亦然。默认的领域就是指向当前的Repository的路径,与服务器的 Repository的根目录相关。

svnser配置实例

svnserve是SVN自带的一个轻型服务器,客户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。 svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限。 1) svnserve配置文件概述 svnserve配置文件通常由以下3个文本文件组成: svn服务配置文件,该文件版本库目录的conf目录下,文件名为svnserve.conf。 用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的passwd。 权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的authz。 2) svn服务配置文件 svn服务配置文件为版本库目录中的文件conf/svnserve.conf。该文件仅由一个[general]配置段组成。 [general]配置段中配置行格式如下: = 配置项分为以下5项: anon-access 控制非鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。 即”write”为可读可写,”read”为只读,”none”表示无访问权限。 缺省值:read auth-access 控制鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。 即”write”为可读可写,”read”为只读,”none”表示无访问权限。 缺省值:write password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf 目录的相对路径。 缺省值:passwd authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值:authz realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。 【说明】版本库认证域 在使用svn客户端访问svnserve服务器时,若需要用户登录,则提示信息如下:

[root@test root]# svn list svn://192.168.3.45/test
Authentication realm: 0d545a49-4038-0410-99b4-c66dc73f754e
Password for 'root':

在上述第2行”Authentication realm: “之后显示的字符串为认证域名称。如果在配置文件中为设定认证域,就会提示一个UUID,如上述所示。
如果在配置文件中指定了如下配置项:

realm = test

将在svn客户端提示如下:

[root@test root]# svn list svn://192.168.3.45/test
Authentication realm: test
Password for 'root':

例1:svn服务配置文件conf/svnserve.conf的内容如下:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz
realm = test

上述配置文件设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为相对版本库conf目录的文件”../../conf /passwd”;权限配置文件为相对版本库conf目录的文件”../../conf/authz”;版本库的认证域为”test”。

3) 用户名口令文件

用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。该文件仅由一个[users]配置段组成。

[users]配置段的配置行格式如下:
=
注意:配置行中的口令为未经过任何处理的明文。

例2:用户名口令文件conf/passwd的内容如下:

[users]
admin = admin
thinker = 123456

该文件中配置了两个用户,用户名分别为”admin”和”thinker”。其中”admin”用户的口令为”admin”;”thinker”用户的口令为”123456″。

4) 权限配置文件

权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。

[groups]配置段中配置行格式如下:
=
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号”,”分隔,引用用户组时要使用前缀”@”(如:引用用户组”all”要使用字符串”@all”)。

版本库路径权限段的段名格式如下:
[:]
如版本库abc路径/tmp的版本库路径权限段的段名为”[abc:/tmp]“。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:段名为”[/tmp]“的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录”/tmp”的访问权限。

版本库路径权限段中配置行格式有如下三种:
=
=
* =
其中,”*”表示任何用户;权限的取值范围为”、’r'和’rw’,”表示对该版本库路径无任何权限,’r'表示具有只读权限,’rw’表示有读写权限。
注意:每行配置只能配置单个用户或用户组。

例3:权限配置文件conf/authz的内容如下:

[groups]
g_admin = admin,thinker

[admintools:/]
@g_admin = rw
* =

[test:/home/thinker]
thinker = rw
* = r

在 上述配置文件中,定义了一个用户组”g_admin”,该用户组包含用户”admin”和”thinker”。然后定义了2个版本库路径权限段。其中,版 本库”admintools”只有用户组”g_admin”可读写,其他用户无任何权限;版本库”test”中路径”/home/thinker”只有用 户”thinker”有读写权限,其他用户只有可读权限。

5) 总结

在本文中,详细介绍了svnserve程序的3个配置文件。SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。
需要强调的是本文介绍的配置文件只对svnserve服务有效,即客户端通过前缀为svn://或svn+ssh://的URL访问版本库有效,而对通过前缀http://、https://或file:///的URL无效。


分享到:
评论

相关推荐

    centos 7.9服务器 离线 搭建svn服务器

    centos 7.9服务器 离线 搭建svn服务器 ,该文章适用于 开发人员 实施人员 项目经理用于项目文档管理 代码管理,而不指定如何在centos7.9环境下离线搭建svn服务器,因为大多数的网站只是介绍yum install 的方式,但是...

    centos离线搭建svn服务器(含教程,源码包)

    把手一步步离线搭建svn服务器,centos离线搭建svn服务器,linux离线搭建svn服务器。

    百度云服务器系列:centos7搭建svn服务器

    百度云服务器centos7.3.4搭建svn服务器,过程比较简单,里面包含新增用户授权用户

    Centos搭建SVN服务器

    在centos linux环境下快速搭建SVN服务器环境的文档教程

    linux(centos)搭建SVN服务器(简洁到位)

    linux(centos)搭建SVN服务器(简洁到位) 清晰明了,一看就会。

    基于CentOS Linux搭建svn服务器在研发产品时的应用.pdf

    基于CentOS Linux搭建svn服务器在研发产品时的应用.pdf

    linux(centos7)搭建SVN服务器的思路

    那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! 虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos...

    linux(centos)下SVN服务器如何搭建

    linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路!

    Linux下的SVN服务器搭建步骤

    本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始*********/ 系统环境:Centos 6.5 第一步:通过yum命令安装svnserve,命令如下: yum -y install...

    CentOS上SVN服务器搭建步骤

    本文档记录了在linux操作系统CentOS5.3上搭建SVN服务器所需软件及相关配置的详细步骤

    Linux之centos7环境搭建SVN服务器.docx

    SVN是subversion的缩写,是一个开放源代码的版本控制系统,本文介绍了安装SVN服务的环境要求,介绍了centos7环境下安装SVN服务的步骤,介绍了svn Edge访问规则配置,svn服务器配置和window客户端的安装及配置。

    centos svn 搭建教程

    svn可以不仅可以帮助我们记录历史代码,还可以用于团队开发。而centos是linux系统的主流。为大家献上centos下部署svn服务器的教程,并附上svn服务端和客户端(小乌龟)的安装包,希望可以帮助大家。

    LINUX-离线搭建服务器文件

    此为CENTOS 离线搭建SVN服务器所需要的文件,包括 GCC,一些服务器上没有GCC,我也打包在里面了

    Linux下搭建SVN服务器遇到的问题及解决方法

    1、checkout时,提示:URL svn://IP/svntest doesn't exist…  奇怪,怎么会提示库不存在呢?肯定是哪里配置问题。后来尝试了半天,也在网上搜索了很久,终于发现问题所在。  如果你的svn库的路径为:/home/svn/...

    百度云服务器系列:centos7安装oracle11G全过程记录

    搭建百度云服务器,部署基础应用服务包括svn、oracle、redis、mencache,根据网上的教程把碰到的问题重新做了下整理。

    PHP程序员玩转Linux系列 自动备份与SVN

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转Linux系列-备份还原MySQL 我的代码经常在开发修改,为了代码...

    PHP程序员玩转Linux系列 Linux和Windows安装nginx

    5.PHP程序员玩转Linux系列-自动备份与SVN 如何以最简单的方式安装nginx,我在查找了N多方法只后,发现还是nginx官网的方法最简单啊.在此我也来搬运一下官网的安装方式  在CentOS中安装nginx  当然是以包的安装方式最...

    Centos开发环境配置手册.pdf

    2.4. Svn+Apache 程序管理系统搭建........................................................................ 7 远程桌面的配置 ................................................................................

Global site tag (gtag.js) - Google Analytics