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

    至此服务端配置完成。

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/hejianping/p/10949356.html
Copyright © 2011-2022 走看看