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

     

    官网下载: 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号;再启动

  • 相关阅读:
    cmd命令操作Mysql数据库
    可编程作息时间控制器设计
    博客第一天
    PRML 1: Gaussian Distribution
    KMP String Matching Algorithm
    Reinstall Ubuntu 14.04
    Computability 4: Decidability and R.E. Sets (I)
    Consumer-Producer Problem
    Compile the Linux Kernel
    Introduction to Linux Kernel
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/10620058.html
Copyright © 2011-2022 走看看