• SVN--subversion的五种访问方式


    SVN的访问方式

    Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:

    模式 访问方法
    file:/// 直接访问本地硬盘上文件仓库
    http:// 通过 WebDAV 协议访问支持 Subversion 的 Apache 2 Web 服务器
    https:// 类似 http://,支持 SSL 加密
    svn:// 通过自带协议访问 svnserve 服务器
    svn+ssh:// 类似 svn://,支持通过 SSH 通道 

    这里只介绍http://的多库访问,因为很有代表性,已经包含所有的基本配置了,特此记录日志。

    实现功能:

    MD5加密(使用apache的htpasswd的-m加密)

    http://访问 (apache的mod_dav_svn.so  和mod_authz_svn.so)

    多版本库共存  和易于管理的独立配置文件(subversion.conf)

    库文件内的任意一个文件的权限操作(这是单svn://无法达到的)

    不需要开放多余端口

    ---------------------------------------------------安装-----------------------------------------------------

    yum install subversion  httpd  mod_dav_svn    

    #只需要以上的三个,配置源,下载最新的。这里的apache可以因人而异自行修改,主要文件还是Apache的mod_dav_svn模块的支持

    --------------------------------------------------配置----------------------------------------------------

    首先说明库的根目录是/home/svn,在根目录下会创建多个库

    #第一个库:

    mkdir /home/svn/datesvn

    svnadmin create /home/svn/datesvn 

    #第二个库:

    mkdir /home/svn/datesvn1

    svnadmin create /home/svn/datesvn1

    #这里为了统一管理,所有的配置在第一个库datesvn里配置,然后通过apache来指向配置文件位置,就不用写两份配置文件了

    vi  /home/svn/datesvn/authz

    [groups]        #通过分配群组来实现目录访问权限
    admin = ch
    docs = test2


    #datesvn的库
    [datesvn:/]
    ch = rw        

    [datesvn:/Test]    #这里是datesvn库里边的Test文件夹的权限
    @docs = r                   # @指的是代表群组docs所有成员,上边的是独立一个成员ch

     #datesvn1的库

    [datesvn1:/]        #  这里[/]  [datesvn:/]  [datesvn1:/]其实分别意思为,/home/svn,/home/svn/datesvn/,/home/svn/datesvn,当然这里是不推荐放出[/]目录的
    @docs = rw

    #权限有r,w,rw,还有none,最好不要做出* =r或者* = rw等的事情。如果你配过防火墙,那么应该知道原则是先封闭,后开放。那么为了更加安全,默认subserve是只有写在配置文件的目录才能被访问,没有写上去的不能被访问。也就是说,默认不写东西是无法被访问的,也就是封闭的,那么再写下目录和权限,这样的话就不会有冲突的访问规则。例如根目录下你的默认访问权限是r,也就是* = r,那么你认为就算你后来设置w的时候不会有问题吗?我反正是无论如何都是写不进的,只要有* =r。有人这么写过,不过我想不通他这么写的原因,或许就是个可读库吧

    vi /etc/httpd/conf.d/subversion.conf

    <Location />
    DAV svn
    SVNParentPath /home/svn/                #这里是设置根目录,也就是所有库文件的根目录例如/home/svn/datesvn和/home/svn/datesvn1的根目录就是/home/svn
    # SVNPath /home/svn/datesvn              #这里是设置单个库的目录,如果只有一个库,可以用这个

    # <LimitExcept GET PROPFIND OPTIONS REPORT>
    # Require SSL connection for password protection.
    # SSLRequireSSL                    

    AuthType Basic
    AuthName "验证信息"                    #svn连接时的提示信息,可手动修改
    AuthzSVNAccessFile /home/svn/datesvn/conf/authz    #文件访问的权限配置文件,需要制定文件,官网说明没有这项,需要自己补上
    AuthUserFile /home/svn/datesvn/conf/passwd        #指定密码文件
    Require valid-user                      #只有认证用户才可以访问,类似防火墙的拒绝
    # </LimitExcept>
    </Location>

    /*

    如果你乐意,也可以这样做

    <Location /datesvn>
    DAV svn
    #SVNParentPath /home/svn/                #这里是设置根目录,也就是所有库文件的根目录例如/home/svn/datesvn和/home/svn/datesvn1的根目录就是/home/svn
     SVNPath /home/svn/datesvn              #这里是设置单个库的目录,如果只有一个库,可以用这个

    # <LimitExcept GET PROPFIND OPTIONS REPORT>
    # Require SSL connection for password protection.
    # SSLRequireSSL                    

    AuthType Basic
    AuthName "验证信息"                    #svn连接时的提示信息,可手动修改
    AuthzSVNAccessFile /home/svn/datesvn/conf/authz    #文件访问的权限配置文件,需要制定文件,官网说明没有这项,需要自己补上
    AuthUserFile /home/svn/datesvn/conf/passwd        #指定密码文件
    Require valid-user                      #只有认证用户才可以访问,类似防火墙的拒绝
    # </LimitExcept>
    </Location>

    <Location /datesvn1>
    DAV svn
    #SVNParentPath /home/svn/                #这里是设置根目录,也就是所有库文件的根目录例如/home/svn/datesvn和/home/svn/datesvn1的根目录就是/home/svn
     SVNPath /home/svn/datesvn1              #这里是设置单个库的目录,如果只有一个库,可以用这个

    # <LimitExcept GET PROPFIND OPTIONS REPORT>
    # Require SSL connection for password protection.
    # SSLRequireSSL                    

    AuthType Basic
    AuthName "验证信息"                    #svn连接时的提示信息,可手动修改
    AuthzSVNAccessFile /home/svn/datesvn/conf/authz    #文件访问的权限配置文件,需要制定文件,官网说明没有这项,需要自己补上
    AuthUserFile /home/svn/datesvn/conf/passwd        #指定密码文件
    Require valid-user                      #只有认证用户才可以访问,类似防火墙的拒绝
    # </LimitExcept>
    </Location>

    由于很多文章没有详细讲述SVNParentPath,当时个人觉得还是挺方便的,推荐

    */

    #添加可访问用户

    htpasswd -c /home/svn/datesvn/conf/passwd ch

    htpasswd  /home/svn/datesvn/conf/passwd  test2

    htpasswd的使用方法请在我的另一文章查看

    service httpd restart

    #以上是个人查阅文档后写的简单模板,有更好的建议请联系我。

    /*-------------------------------------------------------------介绍篇------------------------------------------------------------------------

    /home/svn/datesvn/conf下这些文件是主要的配置文件:

    svnserve.conf: svn服务配置文件,apache有相似的功能,所以这里没有说这个文件的作用,因为不会用到。
    passwd: 用户名口令文件。
    authz: 权限配置文件。

    安装完mod_dav_svn后,默认会在apache的conf.d目录,出现以下模块的mod_dav_svn.so  和mod_authz_svn.so

    以及subversion.conf,当然你会看见,

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    已经帮你写好调用了,不需要再主配置文件httd.conf再写的了

    权限问题,由于是http访问,那么写和读都要有apache的权限操作才能完成

    # To create a new repository "http://localhost/repos/stuff" using
    # this configuration, run as root:
    #
    # # cd /var/www/svn
    # # svnadmin create stuff
    # # chown -R apache.apache stuff
    # # chcon -R -t httpd_sys_content_t stuff

    subversion里边有写到,必须是apache可以访问,如果有开selinux,那么chcon -R -t httpd_sys_content_t stuff

    */

    那么配置好后,主要是以下几个文件的增删改查:

    添加用户       htpasswd  /home/svn/datesvn/conf/passwd  用户

    修改权限       vi  /home/svn/datesvn/authz

    service httpd reload

     访问方式

    http://ip/datesvn

    http://ip/datesvn1

    当然也可以配置域名访问

    更多详情可看subversion中文网,比较简洁的版本安装,但是功能定制比较详细的就没有比较好的例子了

    http://wiki.ubuntu.org.cn/SubVersion

  • 相关阅读:
    sweetalert 1.0多次回调函数bug
    ThinkPHP添加扩展配置失败
    记一次相机内存卡数据恢复
    流量监控脚本监控网卡
    ip网关配置
    centos7【防火墙】常用规则-docker服务防火墙规则
    ssh服务及安全配置
    代码库
    linux计划任务防暴力破解脚本+免密操作
    阿里去短信接口包
  • 原文地址:https://www.cnblogs.com/waterfox/p/4073993.html
Copyright © 2020-2023  润新知