zoukankan      html  css  js  c++  java
  • linux下搭建SVN

    来自:https://www.cnblogs.com/zhongyehai/p/10620058.html

     

    官网下载: http://subversion.apache.org/packages.html

    SVN客户端:TortoiseSVN :https://tortoisesvn.net/downloads.html

     

    查看系统下有没有安装过老版本的svn:rpm -qa subversion,如果没安装过则什么都不显示

     

    如果有老版本先运行一下yum -y  remove subversion,删除老版本。

    第一步:通过yum命令安装svnserve,命令:yum -y install subversion

    此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

    若需查看svn安装位置,可以用命令:rpm -ql subversion

    第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置,subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里):mkdir /var/svn/svnrepos

    第三步:创建svn版本库

    在第二步建立的路径基础上,创建版本库:svnadmin create /var/svn/test(test为目录(项目或版本库)名称,后面checkout项目时会用到。)

    创建成功后,进入test目录下,可以看见如下文件信息:cd /var/svn/test

    conf:是这个仓库配置文件(仓库用户访问账户,权限)

    format:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号

    hooks:放置hook脚步文件的目录

    locks:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端

    第四步:配置修改

    进入conf,conf目录下,一共存放三份重要的配置文件,如下:

    authz:负责账号权限的管理,控制账号是否读写权限

    passwd:负责账号和密码的用户名单管理

    svnserve.conf:svn服务器配置文件

    修改svnserve.conf:vim svnserve.conf

    原始文件内容,都被注释掉的,我们只需要去掉指定内容前注释即可,如下:

    [general]

    anon-access = none                #控制非鉴权用户访问版本库的权限

    auth-access = write                 #控制鉴权用户访问版本库的权限

    password-db = passwd           #指定用户名口令文件名,即访问时要输用户名和密码

    realm = test                    #指定版本库的认证域,即在登录时提示的认证域名称,改成自己的版本库

    修改authz文件信息:vim authz

    在文件内容的末尾,添加如下:

    rw表示赋予此账号可读写的权限,r为读,w为写,注意[/]中的斜杠,这里如果斜杠反了,authz-db = authz 一直会提示“认证失败”

    第一种方式:单个添加:

    # 按账号分权限

    [test/]

    admin = rw

    test = r

    第二种方式(后面采用此方式配置):用户分组,再设权限

    [groups]
    # 按用户组分权限
    admin = admin,admin1 # admin为用户组,等号之后的为用户
    test = test1, test2 # test为用户组,等号之后的为用户

    [/] # 表示svn仓库目录(/var/svn/test),test: 对应前面配置的realm = test
    @admin = rw # 表示admin组对仓库(/var/svn/test)目录有读写权限,r为读,w为写
    @test = r # 表示test组的用户对对仓库(/var/svn/test)目录只有读的权限

    [/test1] # 表示test1目录(/var/svn/test/test1)
    @test = rw # 表示test组对test1目录有读写权限
    * =

    备注:版本库的目录格式如下:

    [<版本库>:/项目/目录]

    @<用户组名> = 权限

    <用户名> = 权限

    其中[]內容有許多写法:

    [/],表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:/svn/svndata([/]=/svn/svndata).[/]就是表示对全部版本设置的权限

    [test:/],表示对版本库test设置权限;

    [test:/svnadmin],表示对版本库test中的svnadmin项目设置权限;

    [test:/svnadmin/second],表示对版本库test中的svnadmin项目的目录设置权限;

    权限的主体可以是用户组,用户或者*,用户组在前面要以@开头,*表示全部用户

    权限分为:r ,w, rw和null ,null空表示没有任何权限。

    auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。

     

    修改passwd文件信息vim passwd

    直接将账号和密码信息追加到文件中即可,格式为:账号 = 密码,这里上面如果是设的分组,仍需设置每个角色对应的密码

    例如:admin = 123@qwe

    到此,配置已经全部完成,账号信息已经添加成功

    更改svnserver.conf时需要重启SVN服务才生效,更改authz,passwd文件时则不需要重启服务

    第五步:防火墙开启

    多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题

    配置防火墙端口

    首先要明确CentOS7的默认防火墙为firewallD。subversion的默认端口为3690,如果没有打开会报错:

    1: sudo firewall-cmd --permanent --add-service=telnet
    2: sudo firewall-cmd --permanent --add-port=3690/tcp
    3: sudo firewall-cmd --reload

    centOS 7 防火墙开启、关闭与查看状态:
    systemctl start firewalld
    systemctl stop firewalld
    systemctl status firewalld

    出现以下情况则代表防火墙没启动用systemctl status firewalld查看防火墙状态

    启动防火墙

    配置

    六:启动svn服务器

    # -d : 守护进程  -r : svn数据根目录

    svnserve -dr /var/svn            #用root权限启动

    查看SVN服务:

    ps aux|grep svnserve               #默认端口为:3690

    设置开机启动

    在centos7, 设置开机启动:

    sudo systemctl enable svnserve.service  #注意:根目录必须是/var/svn 这样才能设置成功!!

    设置开机启动后就可以按下面的方式开启或停止服务了

    systemctl start svnserve.service 

    systemctl stop svnserve.service

    7:检出项目
    进入windows 检出项目 地址栏输入 svn://项目ip:3690/test
    项目ip可以通过 ip addr 或者 ifconfig 查看 inet,test 为当初建立的SVN版本库 可以从上文寻找

    注释掉:authz-db = authz

    再次检出(admin,有读写权限)

    在检出目录下新建个文档提交,成功

    清除SVN记录的账号信息:SVN设置_已保存数据_清除

    如果报这样的错:svn: E204900: Can't open file '/var/svn/wangwa/format': Permission denied的错误。那就是与SELinux有关系,这里有两种处理方式:

    1、把SELinux关闭

      临时关闭:sudo setenforce 0

      永久关闭:sudo vim /etc/sysconfig/selinux

      修改:SELINUX = disable               #值修改为disable.

    2、svn与SElinux的设置(未测试)

      [root@localhost root]# chcon -R --reference=/var/svn /var/svn

      [root@localhost root]# restorecon -v -R /var/svn

     

    异常及解决:

    如果提示:svnserve: Root path '/var/svn' does not exist or is not a directory.目录不存在

    修改etc/sysconfig/svnserve配置文件将OPTIONS="-r /var/svn"改成自己的svndata目录 如"-r/svndata/test"

    如果提示:svnserve: E000098: Can't bind server socket: Address already in use 端口被占用

    先用命令 >netstat -ntlp列出所有端口占用情况,找到端口3690的PID,结束掉些进程: kill PID号;再启动

    讨论群:249728408
  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/zhenyu1/p/12845463.html
Copyright © 2011-2022 走看看