前言

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. Java时间类型转换

    String转Long Long long=new SimpleDateFormat("yyyyMMddHHmmss").parse(String).getTime(); Long ...

  2. django文件上传和序列化

    django实现文件上传 使用form表单上传文件 html页面 <html lang="en"> <head> <meta charset=&quo ...

  3. (转)C# Enum,Int,String的互相转换 枚举转换

    Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...

  4. lucene+IKAnalyzer实现中文纯文本检索系统

    首先IntelliJ IDEA中搭建Maven项目(web):spring+SpringMVC+Lucene+IKAnalyzer spring+SpringMVC搭建项目可以参考我的博客 整合Luc ...

  5. 【原】小搞一下 javascript算法

    前言:在前端大全中看到这句话,以此共勉.基础决定你可能达到的高度, 而业务决定了你的最低瓶颈 其实javascript算法在平时的编码中用处不大,不过不妨碍我们学习它,学习一下这些算法的思想,锻炼一下 ...

  6. Selenium+python 配置

    1. 安装python, www.python.org. 下载最新的python,应该是32位的.注意配置环境变量. 2. 安装PIP(pip是一个以Python计算机程序语言写成的软件包管理系统). ...

  7. @Column

    @Column标记表示所持久化属性所映射表中的字段,该注释的属性定义如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface ...

  8. 【转】Ubuntu 16.04安装配置TensorFlow GPU版本

    之前摸爬滚打总是各种坑,今天参考这篇文章终于解决了,甚是鸡冻\(≧▽≦)/,电脑不知道怎么的,安装不了16.04,就安装15.10再升级到16.04 requirements: Ubuntu 16.0 ...

  9. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' heade

    XMLHttpRequest cannot load http://10.164.153.37:8050/WebService/WebService.asmx/wsGetStreetData. Res ...

  10. 语言模型kenlm的训练及使用

    一.背景 近期研究了一下语言模型,同事推荐了一个比较好用的工具包kenlm,记录下使用过程. 二.使用kenlm训练 n-gram 1.工具介绍:http://kheafield.com/code/k ...