本文详细的介绍了在centos 6 64位服务器上搭建svn服务器的详细过程。


工具/原料

  • 环境linode vps centos6 64bit

  • svn是版本管理控制工具 安装简单方便;

  • svn独立服务器安装方式

svn独立服务器的搭建

  1. 1

    环境准备

    yum groupinstall "X Software Development" "Development Libraries" "Development Tools"

  2. 2

    下载所需的源码包

    subversion-deps-1.6.17.tar.gz svn 的支持库之类的文件
    wget http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.gz
    subversion-1.6.17.tar.gz svn 的主程序
    wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz

  3. 3

    源码编译安装

    这两个要解压在同一个目录下
    tar zxvf subversion-deps-1.6.17.tar.gz
    tar xvf subversion-1.6.17.tar.gz
    cd subversion-1.6.17
    ./configure --prefix=/opt/svn
    make && make install

  4. 4

    修改环境变量

  5. 5

    vi /etc/profile , 在/etc/profile 最后加入:
    PATH=$PATH:/opt/svn/bin
    export PATH
    检测是否安装成功
    svnserve --version
    显示如下信息则表示安装成功。
    svnserve, version 1.6.17 (r1128011)
    compiled Mar 23 2012, 16:57:41

    END

配置svn

  1. 1

    系统采用为每个项目单独建一版本库的策略。配置文件,密码文件,访问控制文件等都放在
    版本库的conf 目录下。所以每次开始一个新项目都必须新建一个版本库,并重新配置各配
    置文件。还有很重要的一条,要求各组员重新配置客户端,包括服务器版本库路径,本地路
    径等信息。

  2. 2

    创建svn库testsvn

    mkdir /var/svn
    cd /var/svn
    svnadmin create testsv
    cd testsv
    [root@nagios testsv]# ls
    conf db format hooks locks README.txt
    [root@nagios testsv]# cd conf/
    [root@nagios conf]# ls
    authz passwd svnserve.conf

  3. 3

    配置版本库信息

    [root@nagios conf]# vi svnserve.conf
    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    authzauthz-db = authz
    realm = testsv(库的名字)
    [sasl]
    # use-sasl = true
    # min-encryption = 0
    # max-encryption = 256

  4. 4

    定义版本库访问权限

    [root@nagios conf]# vi authz
    [aliases]
    # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe
    Average
    [groups]
    # harryharry_and_sally = harry,sally
    # harryharry_sally_and_joe = harry,sally,&joe
    # [/foo/bar]
    # harry = rw
    # &joe = r
    # * =
    # [repository:/baz/fuz]
    # @harry_and_sally = rw
    # * = r
    #添加下面两句
    [/]
    testuser = rw
    [testsv]
    testuser = rw

  5. 5

    定义用户密码

    [root@nagios conf]# cat passwd
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    testuser = testsv123456

    END

启动svn服务

  1. 1

    建立启动svn 的用户

    useradd svn
    passwd svn
    根据提示为用户svn 设置密码
    允许用户svn 访问版本库
    chown -R svn:svn /var/svn
    启动svn
    (1)用设定帐户启动
    su svn -c "svnserve -d --listen-port 9999 -r /var/svn"
    其中:
    su svn 表示以用户svn 的身份启动svn
    -d 表示以daemon 方式(后台运行)运行
    –listen-port 9999表示使用9999 端口,可以换成你需要的端口。但注意,使用1024以下的端
    口需要root 权限
    -r /var/svn 指定根目录是/var/svn
    (2)对于单个代码仓库:

  2. 2

    启动命令:

    svnserve -d -r 文件夹路径--listen-host 192.168.100.131
    其中-d 表示在后台运行, -r 指定服务器的根目录,这样访问服务器时就可以直接用svn://
    服务器ip 来访问了。
    如果服务器有多ip 的话–listen-host 来指定监听的ip 地址.
    我们可以在svn 客户端中通过svn://192.168.100.131 来访问svn 服务器
    (3)对于多个代码仓库:
    我们在启动时也可以用-r 选项来指定服务器根目录, 但访问时需要写上每个仓库相对于svn
    根目录的相对路径.
    比如, 我们有两个代码仓库/var/svn/testsv
    svnserve -d -r /var/svn --listen-host 192.168.1.100
    来启动,
    那么在客户端访问时可以用svn://192.168.100.100/testsv 来分别访问两个项目启动完成以

    我启动的方法:
    [root@austit fabian]# svnserve -d -r /var/svn --listen-host 192.168.100.131
    注意:
    svn 默认端口是3690 ,你需要在防火墙上开放这个端口。也可以通过svnserve 的–listen-port
    选项来指定一个已经开放的其他端口, 不过这样的话客户端使用也必须家上端口, 如
    svn://192.168.100.200:8888/

  3. 3

    检查是否启动成功

    (查看是否存在svnserve 进程)
    ps -ef|grep svnserve
    如果显示如下,即为启动成功:
    svn 6941 1 0 15:07 ? 00:00:00 svnserve -d –listen-port 9999 -r /var/svn
    我是用root 帐户启动的:
    [root@austit fabian]# svnserve -d -r /var/svn --listen-host 192.168.100.131
    [root@austit fabian]# ps -ef|grep svnserve
    root 4513 1 0 21:07 ? 00:00:00 svnserve -d -r /var/svn --listen-host 192.168.100.131
    root 4515 4409 0 21:07 pts/1 00:00:00 grep svnserve

    END

svn使用


然后用户下载客户端访问即可,推荐使用TortoiseSVN。

注意事项

  • 尽量不要使用centos自带的svn版本服务器

  • 安装过程不要断掉ssh链接,否则容易出现未知错误