前言

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. linux安装maven

    一.下载maven 最新地址在:http://maven.apache.org/download.cgi 我下载的是:apache-maven-3.3.9-bin.tar.gz,是已经编译好的包 解压 ...

  2. 2 django系列之django分页与templatetags

    preface 当页面出现的条目多的时候,我们就需要使用分页功能了.Django作为一个知名的web框架,自然也提供了分页功能,下面说说它. Python-shell 练练手 在python下入手 先 ...

  3. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  4. IDF-CTF-牛刀小试-啥?

    本人属于Web安全这一块的小白,稍微了作了一下知识补充就开始了CTF,其中的有很多不懂但看多了网上大牛的解题办法和思路.便开始有了一些要想动手记录的冲动,希望大家共同进步学习,本文能对读者有所帮助~ ...

  5. REDHAT一总复习1 禁用颜色

    使用man page 研究如何在输出中禁用颜色.将ls命令的相关选项放到server上的文本文件 /home/student/lscolor.txt中. 1. 在ls(l) man page中查询相关 ...

  6. C和指针 第十六章 习题

    16.8 计算平均年龄 #include <stdlib.h> #include <stdio.h> #define MAX_LEN 512 int main() { int ...

  7. 读取图像,LUT以及计算耗时

    使用LUT(lookup table)检索表的方法,提高color reduce时对像素读取的速度. 实现对Mat对象中数据的读取,并计算color reduce的速度. 方法一:使用Mat的ptr( ...

  8. 移动端web开发的一些知识点

    整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...

  9. 一对一还是一对多? MVP设计前提

    设计MVP之前,先要确定好以下模块之间是一对多还是一对一的关系: View ---> Presenter --> Model --> Interface(URL) 就是一个View只 ...

  10. set使用方法

    set 添加一个无序的,用set方法,访问速度快,天生解决了重复问题 1.difference 指定某个元素从原来set取出,并生成新的set #difference a = set(["a ...