zoukankan      html  css  js  c++  java
  • 01-svn安装部署

    一、svn介绍

    Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年;Subversion作为新一代的版本管理系统,以其目录版本化、原子提交、版本化的元数据、更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站、论坛的代码文件;Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库,还可以通过SSL协议传输加密,保证数据的安全性;Subversion是Apache软件基金会的发展的一个项目,并且也是一个丰富的开发人员和用户社区的一部分。

    常见的版本控制软件
    1,CVS,逐渐被SVN取代,是CVX重写版和改写版
    2,SVN,Subversion
    3,Git,Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

    svn的服务器常见有3种运行访问方式:
    1、独立服务器(例如:svn://IP/sadoc);
    2、借助apache(例如:http://IP/sadoc);
    1)单独安装Apache+svn (不建议)
    2)csvn是一个单独的整合的软件,带web界面管理的svn软件。
    3、本地直接访问(例如:file://IP/sadoc)

    客户端访问方式
    Subversion可以通过多种方式访问--本地磁盘访问,或各种各样不同的网络协议,但一个版本库的地址永远都是一个URL,URL方案反映了访问方法
    file://直接版本访问(本地磁盘或者网络磁盘)
    http://通过WebDAV协议访问支持Subversion的Apache服务器
    https://与http://相似,但是用的SSL加密
    svn://通过未认证的TCP/IP自定义协议访问svnserver服务器
    svn+ssh://通过认证并加密的TCP/IP自定义协议访问svnserver服务器

    SVN数据格式
    Subversion存储版本数据方式2种:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点;那么在创建Subversion版本控制仓库的时候,可以指定存储版本数据为FSFS方式;

    优缺点
    集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:


    开始新一天的工作:
    1、从服务器下载项目组最新代码
    2、进入自己的分支,进行工作,每隔一小时向服务器上自己的分支持提交一次代码(很多人都有这个习惯。因为有时候自己对自己代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
    3、下班时间快到了,把自己的分支合并到服务器的主分支上,一天的工作完成,并反映给服务器
    这就是经典的svn工作流程,从流程上看,有缺点,也有优点。

    缺点:
    1、服务器压太大,svn数据库容量暴增
    2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等
    3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用SVN的)。但一般集中式管理的有非常明确权限管理机制(例如分支访问限制),可以实现分层管理,从而很好解决开发人数众多问题

    优点:
    1、管理方便,逻辑明确,符合一般人思维习惯
    2、易于管理,集中式服务器更能保证安全性
    3、代码一致性非常高
    4、适合开发人数不多的项目开发

    二、svn 服务端搭建部署

    Ubuntu系统环境:

    Apt-get安装subversion

    root@ningmi: apt-get install subversion -y

    检测是否安装成功

    root@ningmi:/application/svndata# svnversion --version

    svnversion, version 1.8.8 (r1568071)

    配置并启动SVN

    建立svn版本库数据存储根目录(svndata)及用户,密码权限目录(svnpasswd)

    root@ningmi: mkdir -p /application/svndata

    root@ningmi: mkdir -p /application/svnpasswd

    启动SVN服务指定服务的SVN根目录:

    root@ningmi: svnserve -d -r /application/svndata/

    查看SVN进程:

    root@ningmi: ps -ef|grep svn

    root 2579 1 0 09:32 ? 00:00:00 svnserve -d -r /application/svndata/

    root 2586 2487 0 09:35 pts/0 00:00:00 grep --color=auto svn

    查看SVN端口:

    root@ningmi: netstat -lntup|grep 3690

    tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2579/svnserve

    到此,SVN服务端安装完毕,以下为服务端的配置:

    建立项目版本库

    创建一个新的subsersion项目test.com,其实类似test.com这样的项目可以创建多个每个项目对应不同的代码,以此为例:

    root@ningmi: svnadmin create /application/svndata/test.com

    root@ningmi: ls -ld /application/svndata/test.com/

    drwxr-xr-x 6 root root 80 Apr 9 09:53 /application/svndata/test.com/

    调整SVN配置文件及权限文件

    配置允许用户ningmi读写:

    root@ningmi: cd /application/svndata/test.com/conf/

    [root@YII conf]# cp svnserve.conf svnserve.conf.ori

    修改配置文件

    sed -i ’s/# anon-access = read / anon-access = none /’ svnserve.conf

    sed -i ’s/# auth-access = write / auth-access = write /’ svnserve.conf

    sed -i ’s%# password-db = passwd % password-db = /application/svnpasswd/passwd%’ svnserve.conf

    sed -i ’s%# authz-db = authz % authz-db = /application/svnpasswd/authz%’ svnserve.conf

    检查:

    [root@YII conf]# diff svnserve.conf svnserve.conf.ori

    19,20c19,20

    < anon-access = none

    < auth-access = write

    ---

    > # anon-access = read

    > # auth-access = write

    27c27

    < password-db = /application/svnpasswd/passwd

    ---

    > # password-db = passwd

    34c34

    < authz-db = /application/svnpasswd/authz

    ---

    > # authz-db = authz

    把密码认证文件模板考到相关目录,并设置只有root才能看。

    [root@YII conf]# cp passwd authz /application/svnpasswd/

    [root@YII conf]# cd /application/svnpasswd/

    [[root@YII svnpasswd]# chmod 700 authz passwd

    [root@YII svnpasswd]# ll

    total 8

    -rwx------ 1 root root 1080 Apr 9 10:20 authz

    -rwx------ 1 root root 309 Apr 9 10:20 passwd

    编辑passwd添加用户ningmi:

    [users]

    # harry = harryssecret

    # sally = sallyssecret

    ningmi = 888888

    hejianping = 111111

    提示:

    1)等号前为SVN账号,等号后为SVN密码,密码是明文,注意密码权限。

    2) 更改svnserve.conf时,需要重启svn,更改authz,passwd文件时不需要重启。

    Kill –USR1 `cat /application/svndata/svn.pid`

    Svnserve –d –r /application/svndata/ --pid-file=/application/svndata/svn.pid

    配置authz文件:

    # [repository:/baz/fuz]

    # @harry_and_sally = rw

    # * = r

    [test.com:/]

    ningmi = wr #读写权限

    hejianping = r #只读权限

    [<项目库>:/项目/目录]

    @<用户组名> = <权限>

    <用户名> = <权限>

    重启服务:

    [root@YII svnpasswd]# pkill svnserve

    [root@YII svnpasswd]# ps -ef|grep svn

    root 2916 2487 0 10:47 pts/0 00:00:00 grep --color=auto svn

    [root@YII svnpasswd]# svnserve -d -r /application/svndata/

    [root@YII svnpasswd]# ps -ef|grep svn

    root 2918 1 0 10:47 ? 00:00:00 svnserve -d -r /application/svndata/

    root 2920 2487 0 10:47 pts/0 00:00:00 grep --color=auto svn

    至此服务端配置完成。

  • 相关阅读:
    宽度高度sizeWithFont:constrainedToSize:lineBreakMode的使用
    端口错误安卓模拟器不能启动:The connection to adb is down, and a severe error has occurred的解决办法
    树磁盘[HBase] LSM树 VS B+树
    请求方法Jsp&servlet面试题
    数组最小(百度面试题目)对升序数组,求数组中绝对值最小的元素
    类代理java设计模式动态代理(简单笔记)
    数据插入difference between count(*) and count(col) in the query
    跟踪查看oracle 执行计划获取的几种方式
    类型字节oracle 增强型时间类型以及postgresql时间类型
    类方法[笔记]Java基础加强(57天)2010年Java高新技术_张孝祥
  • 原文地址:https://www.cnblogs.com/hejianping/p/10949356.html
Copyright © 2011-2022 走看看