前言

SVN服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊,独立SVN服务器不结合Apache安装使用,连接独立SVN服务器也不用HTTP协议。这是比较快捷的SVN服务器配置方法。以Apache的模块方式运行详解http://developer.51cto.com/art/201006/203438.htm。本次安装时使用的是独立用品方式。

SVN存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据所以还是FSFS方式更安全一点,我安装时也使用的是FSFS方式。

      版本库数据存储对照表

特性 Berkeley DB FSFS
对操作中断的敏感 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 不敏感。
可只读加载 不能 可以
存储平台无关 不能 可以
可从网络文件系统访问 不能 可以
版本库大小 稍大 稍小
可扩展性:修订版本树的数量 数据库,没有限制 许多古老的本地文件系统在处理单一目录包含上千个条目时出现问题。
可扩展性:文件较多的目录 较慢 较快
速度:检出最新的代码 较快 较慢
速度: 大的提交 较慢,但是时间被分配在整个提交操作中 较快,但是最后较长的延时可能会导致客户端操作超时
组访问权处理 对于用户的umask设置十分敏感,最好只由一个用户访问。 对umask设置不敏感
功能成熟时间 2001年开始使用 2004年开始使用

 安装说明

  系统环境:CentOS 6.5

  安装方式:yum install (源码安装容易产生版本兼容的问题)

  安装软件:系统自动下载SVN软件 

  #检查是否安装了低版本的SVN
  [root@localhost /]#rpm -qa subversion

  #如果存储旧版本,卸载旧版本SVN
  [root@localhost modules]#yum remove subversion

验证安装

  检验已经安装的SVN版本信息
  [root@localhost modules]# svnserve --version

  svnserve,版本 1.6.11 (r934486)
  编译于 Jun 23 2012,00:44:03

  版权所有 (C) 2000-2009 CollabNet。
  Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
  此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。

  下列版本库后端(FS) 模块可用:

  * fs_base : 模块只能操作BDB版本库。
  * fs_fs : 模块与文本文件(FSFS)版本库一起工作。

  Cyrus SASL 认证可用。

添加环境变量

  [root@localhost /]# vim /etc/profile

代码库创建

  SVN软件安装完成后还需要建立SVN库
  [root@localhost modules]#mkdir -p /opt/svn/             #创建SVN根目录
  [root@localhost modules]#svnadmin create /opt/svn/repo         #创建repo测试库
  执行上面的命令后,自动建立repo测试库,查看/opt/svn/repo 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

配置代码库

  进入上面生成的文件夹conf下,进行配置
  [root@localhost modules]#cd /opt/svn/repo/conf

用户密码passwd配置

  [root@localhost password]#cd /opt/svn/repo/conf
  [root@admin conf]#vim passwd

  内容如下:[users]

            # harry = harryssecret
            # sally = sallyssecret

             hello = 123

   这样我们就建立了hello用户, 123密码

权限控制authz配置

  [root@admin conf]#vim authz
  目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

  [groups]            #组

  admin = hello,www   #创建一个admin组,将用户加入到组

  [/]                 #根目录权限设置(就是“svn”这个文件夹)

  aaa = rw            #aaa对svn下的所有版本库有读写权限

  [repo:/]            #repo:/,表示对repo版本库下的所有资源设置权限

  @admin = rw         #admin组的用户对repo版本库有读写权限

  [repo2:/occi], ,表示对版本库repo2中的occi项目设置权限

  [repo2:/occi/aaa], ,表示对版本库2中的occi项目的aaa目录设置权限  权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和 空,空表示没有任何权限。

  以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

服务svnserve.conf配置

  [root@admin conf]#vim svnserve.conf

  追加以下内容:

  [general]
  #匿名访问的权限,可以是read,write,none,默认为read
  anon-access = none
  #使授权用户有写权限
  auth-access = write
  #密码数据库的路径
  password-db = passwd
  #访问控制文件
  authz-db = authz
  #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字

  realm = /opt/svn/repo

  以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

配置防火墙端口

  [root@admin conf]#vim /etc/rc.d/rc.local

    添加  iptables -I INPUT -p tcp --dport 3690 -j ACCEPT

    保存后重启防火墙
  [root@localhost conf]#service iptables restart

停止重启SVN

  [root@localhost password]# killall svnserve //停止
  [root@localhost password]# svnserve -d -r /opt/svn/repo // 启动

  如果已经有svn在运行,可以换一个端口运行
  svnserve -d -r /opt/svn/ --listen-port 3391

实现版本库与服务器WEB项目同步

  利用SVN钩子实现代码同步到WEB目录

  思路:找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹。在该文件夹中添加一个post- commit文件;当有commit动作发生时(提交到SVN Server时)就会执行这个post-commit文件,在该文件实现数据的复制。

  实例:

    [root@localhost /] # cd  /opt/svn/repo

    [root@localhost repo] # vim post-commit

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

        #!/bin/sh

        export LANG=zh_CN.UTF-8

        SVN=/usr/bin/svn

        WEB=/usr/local/apache2/htdocs/www.example.com

        #默认无需输入账号密码

        #USERNAME=user01

        #PASSWORD=123456

        # SVN update $WEB --username $USERNAME --password $PASSWORD --no-auth-cache

        $SVN update $WEB

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

    注:该脚本会在客户端执行svn commit同时被触发,从而将版本库的数据同步到apache虚拟目录

    设置脚本可执行权限

        # chmod -R 755 post-commit

    使用checkout建立一个工作复本,到网站根目录下

        # svn co svn://127.0.0.1/repo   /usr/local/apache2/htdocs/www.example.com/

  重启SVN

Linux远程服务器上安装SVN的更多相关文章

  1. 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器

    #!/bin/bash # # 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器: # # .安装服务 # .创建svn版本库 # .创建svn用户 # .配置sv ...

  2. Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序

    我试图做什么:把我的破代码放到服务器上运行,并成功与客户端进行 socket通信. 预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(Debian 8)一台. 主要有如下几个步骤: ...

  3. 如何在Lunix云服务器上安装Mysql进行远程连接

    说说这个服务器上安装mysql真是一个大坑啊 ! 我也不知道自己怎么心血来潮就买一个百度云服务器,然后就想着吧自己做的一些小项目都跑上去.嘿嘿...其实就是想显摆下,写点小应用给不是编程的朋友们使用 ...

  4. Linux下一键安装包的基础上安装SVN及实现nginx web同步更新

    Linux下一键安装包的基础上安装SVN及实现nginx web同步更新 一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install sub ...

  5. 在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式

    (一)MySQL多实例概述 实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务 ...

  6. MySQL 8.x 新版本特性赶紧学!!Linux 服务器上安装 MySQL 8.x

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 引言 ...

  7. 在阿里云Linux服务器上安装MySQL

    申请阿里云Linux服务器 昨天在阿里云申请了一个免费试用5天的Linux云服务器. 操作系统:Red Hat Enterprise Linux Server 5.4 64位. CPU:1核 内存:5 ...

  8. CentOS 6.5系统上安装SVN服务器

    有效地管理源代码的方式是使用工具去帮助我们管理 , SVN(Subversion)就是目前主流的源代码管理工具 , 也称为版本控制工具. 本文主要介绍CentOS6.5上安装SVN服务器,配置SVN服 ...

  9. ORA-12538;ORA-12154;使用PL/SQL dve无法连接远程服务器上的oracle数据库,同时本机上也安装了一个oracle数据库

    问题描述:本人使用PL/SQL dve连接远程服务器上的oracle数据库,一直是没有问题的.我想提高下自己在数据库方面的能力就在自己的笔记本上安装了一个oracle数据库实例,安装并配置好之后,使用 ...

随机推荐

  1. TypeScript 素描-基础类型

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 TypeScript官网文档中的基础类型, T ...

  2. 基于Dubbo框架构建分布式服务(三)

    我们将上面开发的服务提供方服务,部署到2个独立的节点上(192.168.14.1和10.10.4.125),然后可以通过Dubbo管理中心查看对应服务的状况,如图所示: 上图中可以看出,该服务有两个独 ...

  3. 关于Array的map方法中回调函数参数的问题

    开门见山,我们先来看两个例子. var arr=['1','4','9','16']; var r=arr.map(Math.sqrt); 猜猜r的结果会是多少? 没错就是 [1,2,3,4] 我们再 ...

  4. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

  5. jquery理财贷款计算器

    先放效果图,如下: 需要引入jquery ,bootstrap jq代码如下: function pCalculator(amount,term,rating,repayway){ var zhong ...

  6. SVN服务器搭建

    一.SVN下载:https://tortoisesvn.net/downloads.html,下载安装步骤百度一下,基本上都是一路点击next即可安装完成. 服务端安装文件: 二.测试是否安装成功,在 ...

  7. Linux虚拟机中配置JDK环境变量

    前提准备: 1,安装好Linux系统 2,下载好可以将文件传输到Linux系统工具例如:WinSCP 3,在windows中下载Linux版JDK: http://download.oracle.co ...

  8. ORA-01438: 值大于为此列指定的允许精度

    Number的数据声明如下:表示        作用        说明Number(p, s)        声明一个定点数        p(precision)为精度,s(scale)表示小数点 ...

  9. A*寻路算法探究

    A*寻路算法探究 A*算法常用在游戏的寻路,是一种静态网路中求解最短路径的搜索方法,也是解决很多搜索问题的算法.相对于Dijkstra,BFS这些算法在复杂的搜索更有效率.本文在U3D中进行代码的测试 ...

  10. 使用sublime一键格式化XML文件

    1 sublime简介 sublime是一款代码编辑和阅读软件,体积小,运行快,界面非常简洁漂亮.官方地址:https://www.sublimetext.com/ 2 在sublime上安装插件 使 ...