zoukankan      html  css  js  c++  java
  • 华为云、Linux 下安装SVN 服务端。

    日常学习,Linux 下的 SVN服务器搭建,并记录。

    win端,请移步。网络其他教程:WebStorm配置使用SVN(从服务端到客户端)

    1. 安装subversion :

      使用yum安装非常简单:

    1 #安装subversion
    2 [root@-linux-byx ~]# yum install subversion

      运行命令后,与svn 有依赖关系的软件 都会被安装。

      最后显示 “完毕”  。subversion 就安装完成了!!! 

    1 .......
    2 已安装:
    3   subversion.x86_64 0:1.7.14-11.el7_4                                                             
    4  
    5 作为依赖被安装:
    6   apr.x86_64 0:1.4.8-3.el7_4.1                          apr-util.x86_64 0:1.5.2-6.el7             
    7   subversion-libs.x86_64 0:1.7.14-11.el7_4             
    8  
    9 完毕!

     2. 查看一下SVN的版本:

      安装完成后,可以查看一下SVN的版本。这样,自己的心里也有个数。

     1 #查看svn版本
     2 [root@-linux-byx ~]# svn --version
    svn,版本 1.7.14 (r1542130)
       编译于 Apr 11 2018,02:40:28
    
    版权所有 (C) 2013 Apache 软件基金会。
    此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。
    Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。
    
    可使用以下的版本库访问模块: 
    
    * ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。
      - 处理“http”方案
      - 处理“https”方案
    * ra_svn : 使用 svn 网络协议访问版本库的模块。  - 使用 Cyrus SASL 认证
      - 处理“svn”方案
    * ra_local : 访问本地磁盘的版本库模块。
      - 处理“file”方案

     3. 创建仓库

      我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面多了几个文件夹。

    1 #创建仓库目录 
    2 [root@-linux-byx ~]# mkdir -p /home/svn/
    3 [root@-linux-byx ~]# cd /home/svn/ 
    4 #创建svn仓库 
    5 [root@-linux-byx svn]# svnadmin create project 
    6 [root@-linux-byx svn]# ll 
    7 总用量 0
    8 drwxr-xr-x 6 root root 4096 1月   8 10:31 project

    4. 配置服务端svn

      上一步,创建好svn仓库后,就会发现 project 仓库下多了很多文件。其中 conf文件夹,这个是存放配置文件的。(蓝色代表的是文件夹)

        进入conf 后,会看到 svnserve配置文件通常由3个文本文件组成:

     1 [root@-linux-byx svn]# cd project
     2 [root@-linux-byx project]# ll
     3 总用量 24
     4 drwxr-xr-x 2 root root 4096 1月  13 18:27 conf
     5 drwxr-sr-x 6 root root 4096 1月  13 19:22 db
     6 -r--r--r-- 1 root root    2 1月   8 10:31 format
     7 drwxr-xr-x 2 root root 4096 1月   8 10:31 hooks
     8 drwxr-xr-x 2 root root 4096 1月   8 10:31 locks
     9 -rw-r--r-- 1 root root  229 1月   8 10:31 README.txt
    10 [root@-linux-byx project]# cd conf
    11 [root@-linux-byx conf]# ll
    12 总用量 12
    13 -rw-r--r-- 1 root root 1333 1月  13 17:18 authz
    14 -rw-r--r-- 1 root root  383 1月  13 18:20 passwd
    15 -rw-r--r-- 1 root root 3590 1月  13 18:27 svnserve.conf

      其中:

      (1.) 权限配置文件,在conf目录下,文件名为 authz (权限控制文件)

      (2.) 用户名口令文件:在conf目录下,文件名为 passwd (帐号密码文件)

      (3.) svn服务配置文件:在conf目录下,文件名为 svnserve.conf  (SVN服务配置文件)

     
     操作如下:

      1.) passwd文件:

      建议先从修改 passwd文件开始,先创建用户再进行权限配置。

        该文件由一个[users] 配置段组成。

       格式:<用户名>=<口令>  (注:口令为未经过任何处理的明文。)

      我们创建 4个用户,admin,test,test1,test2

    1 [root@-linux-byx conf]# vi passwd 
    2 [users]
    3 admin = admin
    4 test = test
    5 test1 = 123456
    6 test2 = 123456

      2. )authz 文件:

       该文件由[groups]配置段 和 若干版本库路径权限段 组成。详情可查看 authz文件。

    1 [root@-linux-byx conf]# cat authz

      
         当中,可看到:

        [groups]配置段格式为

        <用户组>=<用户列表>

    1 [groups]
    2 # harry_and_sally = harry,sally
    3 # harry_sally_and_joe = harry,sally,&joe

      用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"  

      拓展:使用用户分组-----

      这个我一般不用,但是记录下来:(最终配置修改,请看下方黄色部分)

      下面的配置中创建了2个分组,分组1 的用户 可读可写分组2 的用户 只读

    1 [root@-linux-byx conf]# vi authz
    2 [groups]
    3 group1 = admin
    4 group2 = test1,test2
    5 [/]
    6 @group1 = rw
    7 @group2 = r
    8 * =

      版本库路径权限段格式:

           [<版本库名>:<路径>]

      例如:版本库abc路径 /tmp的版本库 、路径权限段的段名为 "[abc:/tmp]" 。

          可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:[/tmp]

      版本库路径权限段中配置行格式有如下三种:
           <用户名> = <权限>
           <用户组> = <权限>
            * = <权限>
          

    • 其中," * " 表示任何用户;权限的取值范围为' 空 '、'r'和'rw';
    • ' 空 ' 表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。
    • 注意:每行配置只能配置单个用户或用户组。
    1 # [/foo/bar] ----->(section name)
    2 # harry = rw ----->(option name = option value)
    3 # &joe = r
    4 # * =
    5 
    6 # [repository:/baz/fuz]
    7 # @harry_and_sally = rw
    8 # * = r

      每一个 section 都命名了一个版本库(repository)和其对应的路径(path),

      option name是已认证的用户名(即在passwd文件中定义的用户),而 option value 是用户对仓库指定路径的访问级别,分为 r(read-only)只读rw(read/write) 读写这两种。

      注意下,特别强调每一部分配置的名称可以是 [repos-name:path] 或 [path] 这两种格式。 

      搞清楚了这些概念后,修改配置文件 加如下内容即可: 

    ###在最后面增加如下内容,[/] 是相对svn库src目录下的访问路径,可根据路径分配目录访问权限:
    [/]
    admin = rw
    test1 = r
    test2 = r
    * =
      
    ###如下是配置test用户只有对svn/project的目录,具有可读写权限
    [/project]
    test = rw

      上面配置的含义详解: 

    1 [/]    -----------(仓库下所有文件)
    2 admin = rw  --------(admin用户:可读可写)
    3 test1 = r  ------ (test1用户:只读)
    4 test2 = r  ------(test2用户:只读)
    5 * =    ------(其他用户无任何权限)
    6  
    7 [/project]  ------(project仓库)
    8 test = rw  ------ (test用户:可读写)

      admin 对/home/svn/下所有文件具有可读可写权限,除此之外,其它用户均无任何权限,最后一行 *= 很重要不能少。

      test1,test2 对/home/svn/下所有文件 只有只读权限。

       test 对/home/svn/project/权限。

      总结:
         SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。

       这些配置文件保存后就立即生效,不需要重启svnserve服务。

      

      3.) svnserve.conf文件: 

       该文件由一个 [general]配置段 组成。(也就是说所有的配置都在[general] 段内 )

      格式:<配置项>=<值>

      配置项分为以下5项:(先大概了解一下,详细配置看下面的黄色部分)

      1. anon-access 控制非鉴权用户访问版本库的权限。

        取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read

      2. auth-access 控制鉴权用户访问版本库的权限。

        取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write

      3. password-db 指定用户名口令文件名。

        除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd

      4. authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

        除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz

      5. realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。

        缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

       以下是一个详细的配置文件:(打开下面的5个注释 ,配置文件默认是被注解掉的。)

     1 [root@-linux-byx conf]# vi svnserve.conf  
     2 
     3 #匿名用户可读 
     4 anon-access = read 
     5 
     6 #授权用户可写 
     7 auth-access = write 
     8 
     9 #使用哪个文件作为账号文件 
    10 password-db = passwd 
    11 
    12 #使用哪个文件作为权限文件 
    13 authz-db = authz 
    14 
    15 # 认证空间名,版本库所在目录
    16 realm = /home/svn/project

       上方 注意 两点:

    • 最后一行的realm 记得改成你的 svn目录
    • 打开注释时切记前面 不要留有空格,否则可能有问题

     5. 启动SVN

      以上都配置完毕后,就可以启动运行 SVN了。

    1 [root@-linux-byx  conf]# svnserve -d -r /home/svn/project/

       (上述启动命令中,-d表示守护进程, -r 表示在后台执行。)

    6. 查看SVN进程

    1 [root@-linux-byx  conf]# ps -ef|grep svn|grep -v grep
    2 root     19275     1  0 1月13 ?       00:00:00 svnserve -d -r /home/svn/project/

    7.检测SVN端口

    1 [root@-linux-byx conf]# netstat -ln |grep 3690
    2 tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN     

    (这里还是要说一下。为什么要检查一下svn端口呢? 因为 不管你买的什么云 ,安装SVN之前都需要自己 放行 3690端口。不然肯定是访问不了的。

      如果安装了 宝塔。同样也需要宝塔内放行3690端口。) 

    8.停止SVN

    1 [root@-linux-byx conf]# killall svnserve

    总结:

      总的来说,如果只是自己一个人用的话,并不需要杂七杂八的权限配置。安装配置还是比较简单的。我也是对于实践操作中问题以及网上方法的大总结。

      毕竟网上的信息还是比较乱,自己整理以后用起来还是比较方便。

    9.客户端测试SVN

      点击查看SVN的具体操作步骤。

    10. 拓展:yum安装路径(也是网上看到的,写下做学习用)

      以svn为例:

    1 [root@-linux-byx ~]# rpm -qa|grep subversion 
    2 subversion-libs-1.7.14-14.el7.x86_64 
    3 subversion-1.7.14-14.el7.x86_64

      说明:

    • rpm -qa 查询所有安装的rpm包,可以配合grep命令。
    • rpm -qi 查询某个具体包的介绍。
    • rpm -ql 列出某个具体包的所有文件
     1 [root@-linux-byx ~]# rpm -ql subversion-1.7.14-14.el7.x86_64
     2 /etc/subversion
     3 /etc/sysconfig/svnserve
     4 ...
     5 /usr/bin/svn
     6 ...
     7 /usr/lib/systemd/system/svnserve.service
     8 /usr/lib/tmpfiles.d/svnserve.conf
     9 ...
    10 /usr/share/doc/subversion-1.7.14/xslt/svnindex.css
    11 /usr/share/doc/subversion-1.7.14/xslt/svnindex.xsl
    12 ...
    13 /usr/share/man/man5/svnserve.conf.5.gz
    14 /usr/share/man/man8/svnserve.8.gz

      由上面结果 可以看出 rpm几个默认安装路径:

    /etc            一些设置文件放置的目录
    /usr/bin        一些可执行文件
    /usr/lib64      一些程序使用的动态函数库
    /usr/share/doc  一些基本的软件使用手册与帮助文档
    /usr/share/man  一些man page文件

    这篇文章就到这里啦!!!

    希望可以帮助到你。

    by不言谢

    不要和别人比,要赢得是自己。(ง •̀_•́)ง
  • 相关阅读:
    编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –> 12345,要求使用递归,并且函数体代码不超过8行
    java中两种单例模式
    springMVC配置freemarker 二(问题讨论篇)
    springMVC配置freemarker
    java中@value的环境配置
    java环境log4j日志环境的配置。
    websocket协议
    http报文和浏览器缓存机制
    详解网络连接
    编码总结
  • 原文地址:https://www.cnblogs.com/byx1024/p/12190137.html
Copyright © 2011-2022 走看看