zoukankan      html  css  js  c++  java
  • 版本管控工具-SVN

    版本管控工具-subversion

    一、SVN服务器搭建

    1.1 安装Subversion

    yum install -y subversion
    
    image-20210214155407665

    1.2 版本查看

    svn --version
    
    image-20210214155531500

    1.3 创建仓库

    [root@localhost ~]# mkdir -p /home/svn/
    [root@localhost ~]# cd /home/svn/
    [root@localhost svn]# svnadmin create test
    [root@localhost svn]# ll
    总用量 0
    drwxr-xr-x. 6 root root 86 2月  14 15:57 test
    

    1.4 配置SVN

    svnserve配置文件通常由3个文本文件组成:

    image-20210214155939430
    • svn服务配置文件:在conf目录下,文件名为svnserve.conf
    • 用户名口令文件:在conf目录下,文件名为passwd
    • 权限配置文件:在conf目录下,文件名为authz

    1.4.1 svnserve.conf文件

    该文件由一个[general]配置段组成。格式:<配置项>=<值>**

    配置项分为以下5项:

    • anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read

    • auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write

    • password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd

    • authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz

    • realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

    将svnserve.conf修改成如下内容:

    #匿名访问的权限,可以是read,write,none,默认为read
    anon-access=none
    #使授权用户有写权限 
    auth-access=write
    #密码数据库的路径 
    password-db=passwd
    #访问控制文件 
    authz-db=authz
    #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字 
    realm = /home/svn/test
    

    说明:

    设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为conf目录下的passwd,权限配置文件为版本库conf目录下的authz,版本库的认证域为:/home/svn/test

    1.4.2 passwd文件

    该文件由一个[users]配置段组成,格式:<用户名>=<口令> 注:口令为未经过任何处理的明文。

    修改成如下:

    [users]  
    admin = admin  
    test = test
    

    1.4.3 authz文件

    该文件由[groups]配置段和若干版本库路径权限段组成

    [groups]配置段格式:<用户组>=<用户列表>

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

    版本库路径权限段格式:

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

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

    版本库路径权限段中配置行格式有如下三种:
    <用户名> = <权限>
    <用户组> = <权限>
    * = <权限>
    其中,"*"表示任何用户;权限的取值范围为''、'r'和'rw',''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。

    注意:每行配置只能配置单个用户或用户组。

    示例:

    img

    每一个section都命名了一个版本库(repository)和其对应的路径(path),option name是已认证的用户名(即在passwd文件中定义的用户),而option value是用户对仓库指定路径的访问级别,分为r(read-only)只读和rw(read/write)读写这两种。注意下,特别强调每一部分配置的名称可以是[repos-name:path]或[path]这两种格式。

    搞清楚了这些概念后,修改配置文件如下:

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

    总结:

    ​ SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。

    1.5 启动SVN

    svnserve -d -r /home/svn/test/
    

    1.6 检测进程

    [root@localhost conf]# ps -ef | grep svn
    root      17089      1  0 16:13 ?        00:00:00 svnserve -d -r /home/svn/test/
    root      17242   8526  0 16:14 pts/0    00:00:00 grep --color=auto svn
    [root@localhost conf]#
    

    1.7 检测端口

    [root@localhost conf]# netstat -ln |grep 3690
    tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN
    [root@localhost conf]#
    

    1.8 停止SVN

    pkill -9 svn
    

    1.9 客户端测试SVN

    image-20210214161945997 image-20210214162619696

    1.10 添加文件测试

    image-20210214162859492 image-20210214162921987

    1.11 关闭SELinux

    1.11.1 查看状态

    [root@localhost svn]#  getenforce
    Enforcing
    [root@localhost svn]# /usr/sbin/sestatus -v
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Max kernel policy version:      31
    
    Process contexts:
    Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    Init context:                   system_u:system_r:init_t:s0
    /usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023
    
    File contexts:
    Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
    /etc/passwd                     system_u:object_r:passwd_file_t:s0
    /etc/shadow                     system_u:object_r:shadow_t:s0
    /bin/bash                       system_u:object_r:shell_exec_t:s0
    /bin/login                      system_u:object_r:login_exec_t:s0
    /bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
    /sbin/agetty                    system_u:object_r:getty_exec_t:s0
    /sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
    /usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
    [root@localhost svn]#
    

    1.11.2 临时关闭

    ##设置SELinux 成为permissive模式
    ##setenforce 1 设置SELinux 成为enforcing模式
    setenforce 0
    

    1.11.3 永久关闭

    #将SELINUX=enforcing改为SELINUX=disabled 
    #设置后需要重启才能生效
    vi /etc/selinux/config
    

    二、安装HTTPD支持HTTP访问

    2.1 安装httpd、mod_dav_svn

    yum install -y httpd mod_dav_svn
    
    image-20210214163207227

    2.2 检查Apache、mod_dav_svn是否安装成功

    [root@localhost conf]# httpd -v
    Server version: Apache/2.4.6 (CentOS)
    Server built:   Nov 16 2020 16:18:20
    [root@localhost conf]# find / -name mod_dav_svn.so
    /usr/lib64/httpd/modules/mod_dav_svn.so
    [root@localhost conf]# find / -name mod_authz_svn.so
    /usr/lib64/httpd/modules/mod_authz_svn.so
    [root@localhost conf]#
    

    2.3 修改配置文件

    地址为/etc/httpd/conf.d/subversion.conf(没有则新建),內容为:

    [root@localhost conf]# touch /etc/httpd/conf.d/subversion.conf
    [root@localhost conf]# cat /etc/httpd/conf.d/subversion.conf 
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    <Location /svn>
        DAV svn
        SVNParentPath /home/svn
        AuthType Basic
        AuthName "Authorization SVN"
        AuthzSVNAccessFile /home/svn/authz
        AuthUserFile /home/svn/passwd
        Require valid-user
    </Location>
    

    2.4 创建用户文件passwd

    [root@localhost svn]# touch /home/svn/passwd
    [root@localhost svn]# ll
    总用量 0
    -rw-r--r--. 1 root root  0 2月  14 16:42 passwd
    drwxr-xr-x. 6 root root 86 2月  14 15:57 test
    [root@localhost svn]# htpasswd /home/svn/passwd admin
    New password:
    Re-type new password:
    Adding password for user admin
    [root@localhost svn]# ll
    总用量 4
    -rw-r--r--. 1 root root 44 2月  14 16:42 passwd
    drwxr-xr-x. 6 root root 86 2月  14 15:57 test
    [root@localhost svn]# cat passwd
    admin:$apr1$3jlXPfui$fVb9lAnF9ttbZ0U2khvMf1
    [root@localhost svn]#
    

    htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

    语法
    htpasswd(选项)(参数)

    选项

    -c:创建一个加密文件;
    -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
    -m:默认采用MD5算法对密码进行加密;
    -d:采用CRYPT算法对密码进行加密;
    -p:不对密码进行进行加密,即明文密码;
    -s:采用SHA算法对密码进行加密;
    -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
    -D:删除指定的用户。

    参数

    用户:要创建或者更新密码的用户名;
    密码:用户的新密码。

    实例

    利用htpasswd命令添加用户
    #在bin目录下生成一个.passwd文件,用户名admin,密码:pwdadmin,默认采用MD5加密方式。

    htpasswd -bc .passwd admin pwdadmin
    

    在原有密码文件中增加下一个用户
    #去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。

    htpasswd -b .passwd test 123456
    

    不更新密码文件,只显示加密后的用户名和密码
    #不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码。

    htpasswd -nb test 123456
    

    利用htpasswd命令删除用户名和密码

    htpasswd -D .passwd test
    

    利用htpasswd命令修改密码
    #即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。

    htpasswd -D .passwd test
    htpasswd -b .passwd test 123456
    

    2.5 创建权限文件authz

    [root@localhost svn]# cp /home/svn/test/conf/authz /home/svn/
    [root@localhost svn]# ll
    总用量 8
    -rw-r--r--. 1 root root 1333 2月  14 16:44 authz
    -rw-r--r--. 1 root root   44 2月  14 16:42 passwd
    drwxr-xr-x. 6 root root   86 2月  14 15:57 test
    [root@localhost svn]#
    

    2.6 配置apache对SVN目录权限

    [root@localhost svn]# chown -R apache:apache test/
    [root@localhost svn]# ll
    总用量 8
    -rw-r--r--. 1 root   root   1333 2月  14 16:44 authz
    -rw-r--r--. 1 root   root     44 2月  14 16:42 passwd
    drwxr-xr-x. 6 apache apache   86 2月  14 15:57 test
    [root@localhost svn]#
    

    2.7 配置httpd

    # 修改 AllowOverride None改为AllowOverride All
    vim /etc/httpd/conf/httpd.conf
    

    2.8 启动Apache

    Apache常用命令如下:

    httpd -v	      #查看已经安装的httpd的版本
    rpm -qa | grep httpd  #查看是否已经安装了httpd
    ps -ef | grep httpd   #查看httpd的进程
    service httpd status  #查看httpd的运行状态
    service httpd stop    #可以停止httpd
    service httpd start   #可以启动httpd
    
    image-20210214170110018

    2.8.1 配置服务器名称

    # 将服务器名称改为localhost
    vim /etc/httpd/conf/httpd.conf
    # 重启HTTPD重启
    systemctl restart httpd
    
    image-20210214170320906 image-20210214170940002

    2.8.2 测试页面

    image-20210214171413641

    2.9 登录页面

    image-20210214171603253 image-20210214171653563

    2.10 检出项目

    image-20210214172442709 image-20210214172537810 image-20210214172638478

    参考链接

    1. centos7搭建SVN并配置使用http方式访问SVN服务器
    2. CentOS7+Apache+SVN安装配置,并通过HTTP方式访问
    3. CentOS 7 安装配置SVN服务器
    4. Centos Svn服务器搭建
    5. https://blog.csdn.net/a13568hki/article/details/103428237
    6. CentOS7关闭SELinux
  • 相关阅读:
    洛谷P2066 机器分配【dp】
    [HNOI2004]打鼹鼠【dp】
    [ZJOI2008][BZOJ1037] 生日聚会Party|动态规划]
    Java中Map<Key, Value>存储结构根据值排序(sort by values)
    LATEX如何写多个条件推导式推出一个结论
    书列荐书 |《黑天鹅&#183;如何应对不可预知的未来》【美】纳西姆 尼古拉斯 塔勒布 著
    Java | Stream流、泛型、多线程 | 整理自用
    书列荐书 |《代码整洁之道》之 类 的设计
    书列荐书 |《认知红利》 谢春霖著
    eclipse集成processing、PApplet、proclipsing 问题
  • 原文地址:https://www.cnblogs.com/shuangxinyuan/p/14410346.html
Copyright © 2011-2022 走看看