Centos7 下的SVN安装与配置

发布时间 2023-03-22 21:14:04作者: song宁静致远
```
Centos7 下的SVN安装与配置
1.关闭防火墙

    临时关闭防火墙
    systemctl stop firewalld
     
    永久防火墙开机自关闭
    systemctl disable firewalld
     
    临时打开防火墙
    systemctl start firewalld
     
    防火墙开机启动
    systemctl enable firewalld
     
    查看防火墙状态
    systemctl status firewalld

2.关闭SELinux

    临时关闭SELinux
    setenforce
     
    临时打开SELinux
    setenforce
     
    查看SELinux状态
    getenforce
     
    开机关闭SELinux
    编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。

3.安装svn

    yum install subversion  -y

查看版本

    [root@heyong ~]# svn --version
    svnserve, version 1.7. (r1542130)
    compiled Apr  , ::
     
    Copyright (C)  The Apache Software Foundation.
    This software consists of contributions made by many people; see the NOTICE
    file for more information.
    Subversion is open source software, see http://subversion.apache.org/
     
    The following repository back-end (FS) modules are available:
     
    * fs_base : Module for working with a Berkeley DB repository.
    * fs_fs : Module for working with a plain file (FSFS) repository.
     
    Cyrus SASL authentication is available.

4.创建SVN版本库

    4.1单版本库管理案例
    在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面会多出几个文件夹。

    [root@heyong ~]# mkdir -p /home/svn
    [root@heyong ~]# svnadmin create /home/svn
    
    [root@heyong ~]# ls /home/svn
    conf  db  format  hooks  locks  README.txt
    [root@heyong ~]# cd /home/svn/conf/
     
    [root@heyong conf]# ll
    total
    -rw-r--r--  root root  Oct  : authz
    -rw-r--r--  root root   Oct  : passwd
    -rw-r--r--  root root  Oct  : svnserve.conf
     
    其中:
    authz 是权限控制文件
    passwd 是帐号密码文件
    svnserve.conf 是SVN服务配置文件
    
    
    
    4.2多版本库管理案例(一个项目一个仓库)
    [root@heyong ~]# mkdir -p /home/svn/myproject   仓库保存总目录,以后总目录可以对应其下面的项目
    [root@heyong ~]# mkdir -p /home/svn/myproject/ts3000    在总目录创建多个仓库
    [root@heyong ~]# mkdir -p /home/svn/myproject/ts4000    在总目录创建多个仓库
    [root@heyong ~]# svnadmin create /home/svn/myproject/ts3000    使用命令创建版本库
    [root@heyong ~]# svnadmin create /home/svn/myproject/ts4000    使用命令创建版本库
    
    [root@localhost conf]# pwd    进入对应项目仓库目录下将authz passwd文件拷贝到myproject目录下
    /home/svn/myproject/ts3000/conf
    [root@localhost conf]# cp authz passwd ../../   总仓库使用统一配置
    修改ts3000/conf下的svnserve.conf文件,将其中的passwd文件、authz文件指定路径修改,其他按正常svn配置。
    (ts4000同样设置一遍)

    [root@localhost conf]# pwd
    /home/svn/myproject/ts3000/conf
    [root@localhost conf]# grep -v "^#" svnserve.conf
    [general]
    anon-access = none    #默认是read,不修改会有问题,show log也有问题
    
    auth-access = write
    password-db = ../../passwd
    authz-db = ../../authz
    realm = /home/svn/myproject/ts3000
    
    
5.配置passwd(创建用户)
    5.1单仓库
    [root@heyong conf]# vim passwd
    [users]
    test1=
    test2=

    5.2多仓库  修改刚复制出来的authz、passwd文件
    [root@localhost ~]# cd /home/svn/myproject/
    [root@localhost myproject]# ls
    authz  passwd  ts3000  ts4000
    [root@localhost myproject]# grep -v "^#" passwd
    [users]
    wangqs = abc/123
    test1 = abc/123
    test2 = abc/123
    
6.配置authz

    [root@heyong conf]# vi authz
     
    [/]
    admin=rw    #对/home/svn/下所有文件具有可读可写权限;
    test1=r    #只有只读权限;
    test2=r    #只有只读权限
    *=        #其它用户均无任何权限

7.使用用户分组

    [root@heyong conf]# vi authz
     
    [groups]
    group1 = admin
    group2 = test1,test2
     
    [/]
    @group1 = rw      #对/home/svn/下所有文件具有可读可写权限;
    @group2 = r      #只有只读权限;
    * =      #其它用户无任何权限
    
    多仓库分组
    [root@localhost myproject]# grep -v "^#" authz
    [groups]
    admin = wangqs
    dev = test1,test2
    
    [/]
    @admin = rw
    @dev = r
    * =


8.配置svnserve.conf
    8.1单仓库
    [root@heyong conf]# vim svnserve.conf
     
    打开下面的5个注释
    anon-access = read   #匿名用户可读   read改为none否则报错
    auth-access = write   #授权用户可写
    password-db = passwd     #使用哪个文件作为账号文件
    authz-db = authz       #使用哪个文件作为权限文件
    realm = /home/svn    # 认证空间名,版本库所在目录
    8.2多仓库
    详见4.2
    

注意:

最后一行的realm记得改成你的svn目录

打开注释时切记前面不要留有空格,否则可能有问题
9.启动与停止

    [root@heyong conf]# svnserve -d -r /home/svn(启动)
    [root@heyong conf]# svnserve -d -r /home/svn/myproject  多仓库案例启动到总仓库,不是到库目录
     
    [root@heyong conf]#killall svnserve(停止)

注意:

上述启动命令中,-d表示守护进程, -r 表示在后台执行。停止还可以采用杀死进程的方式
10.客户端连接

    TortoiseSVN中使用地址svn://你的IP ,输入用户名和密码就能连接成功。(这里只输入到IP,不输入后面的库名,否则会报错)
     
    默认端口3690,如果你修改了端口,那么要记得加上端口号。

    多仓库案例访问及检出
    仓库1的检出地址:svn://ip地址/ts3000
    仓库1的检出地址:svn://ip地址/ts4000
     

修改默认端口

    第一种方法:
    svnserve -d -r /mnt/svn --listen-port 端口号
     
    第二种方法:
    svnserve -d -r /mnt/svn --listen-host IP+端口号
    
开机自启动   ##重点关闭防火墙和selinux 否则报错权限不足
    # chmod u+x /etc/rc.d/rc.local   这个文件需要先加上可执行权限
    # systemctl start rc-local
    # systemctl enable rc-local
    # systemctl status rc-local.service
# vi /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
...
...
svnserve -d -r /home/svn/myproject   添加此行   也可以/usr/bin/svnserve
touch /var/lock/subsys/local

第二种方法:
1、查看下面文件得知/etc/sysconfig/svnserve
[root@localhost ~]#  vi  /lib/systemd/system/svnserve.service
2、[root@localhost ~]# vi /etc/sysconfig/svnserve
OPTIONS="-r /home/svn/myproject"   #-r 后面指定svn库的目录 (这个路径最好从配置文件拷贝,要兼容字符编码问题)

3、[root@localhost ~]# systemctl enable svnserve   设定开启自启动

# netstat  -ntlp | grep svnserve    重启系统验证是否自动启动


11.启动时遇到的问题

1.启动svnserve时出现cannot bind server socket:address already in use

解决方法:

    方法一:找出svnserve id 杀死掉进程
    netstat -ntlp
    kill - id
     
    方法二:重新指定一个端口号(默认端口3690)
    svnserve -d --listen-port 端口号 -r /opt/svndata/repos

2.启动svnserve时出现svnserve.conf:12: Option expected的问题解决方法

svnserve.conf:12: Option expected

解决方法:

    因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,删除前置空格即可;
    如:anon-access = read

3.检查是否启动成功:(查看是否存在svnserve 进程)

    [root@heyong svn]# ps -ef|grep svnserve
    root               : ?        :: svnserve -d -r /home/svn
    root          : pts/    :: grep --color=auto svnserve

12.svn常见路径说明

1.查询安装的包

    [root@heyong svn]# rpm -qa|grep subversion
    subversion-libs-1.7.-.el7.x86_64
    subversion-1.7.-.el7.x86_64

2.svn几个常用目录

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

3.列出某些包的具体文件

    [root@heyong svn]# rpm -ql subversion-1.7.-.el7.x86_64
    /etc/subversion
    /etc/sysconfig/svnserve
    /run/svnserve
    /usr/bin/svn
    /usr/bin/svnadmin
    /usr/bin/svndumpfilter
    /usr/bin/svnlook
    /usr/bin/svnrdump
    /usr/bin/svnserve
    /usr/bin/svnsync
    /usr/bin/svnversion
    /usr/lib/systemd/system/svnserve.service


```