zoukankan      html  css  js  c++  java
  • Ubuntu下搭建SVN环境Apache

    环境描述:ubuntu server 12.04  / svn1.6  / apache2

    1、先创建svn组和用户:

    addgroud svn

    useradd svn -g svn -m  //新增svn用户名,-g并制定它所在的组svn,-m同时创建svn用户所在的home目录

    passwd svn  //设置svn用户的密码

    2、安装apache2和svn server

    sudo apt-get install apache2

    sudo apt-get install subversion

    sudo apt-get install libapache2-svn

    完成以上安装,可以直接访问apache的主页,如http://localhost/    

    3、创建svn版本库

    sudo mkdir /var/svn

    sudo svnadmin create /var/svn/repos

    此时可以在/var/svn/repos目录下看到svn版本库的所有文件夹以及配置文件,如:conf、db、format、hooks、locks、README.txt

    4、配置并导入项目

    sudo mkdir /opt/idbtest

    sudo mkdir /opt/idbtest/branches

    sudo mkdir /opt/idbtest/tags

    sudo mkdir /opt/idbtest/trunk

    导入项目到版本库:svn import /opt/idbtest file:///var/svn/repos/idbtest -m "initial import"  //  /opt/idbtest表示需要引入的项目,file:///var/svn/repos/idbtest表示svn的版本库,此处是做初始化引入

    5、将svn配置到apache中通过http web方式访问

    sudo  vi /etc/apache2/apache.conf,将如下文件粘帖到apache.conf尾部,如下:

     <Location /svn>
        DAV svn
        SVNPath /var/svn/repos
        AuthzSVNAccessFile /var/svn/repos/conf/authz
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /var/svn/repos/conf/passwd
        Require valid-user
    </Location> 

     备注:此配置文件是告诉apache关于svn的访问路径已经相关配置文件,这里注意放问的跟目录。重启apache服务器,然后就可以通过http://localhost/svn进行远程访问

    重启apache服务器:/etc/init.d/apache2 restart

    当然这里需要验证访问登录用户,接下来将介绍添加svn用户

    6、添加svn用户

    htpasswd -c /var/svn/repos/conf/passwd test1  //然后会提示你输入密码,当然第一次创建svn用户,需要通过参数-c,然后第二次创建svn用户就不需要,这里要注意。

    htpasswd /var/svn/repos/conf/passwd test2  //创建第二个svn用户

    然后就可以通过这些用户访问http://localhost/svn了,并可以在其他pc上对svn进行checkout,命令行如下:

    svn checkout http://localhost/svn --username test1 --password 123456

    当然还可以通过svn客户端工具checkout更方便

    7、遇到的问题

    当我checkout到我的客户端时,在执行commit提交操作时,svn客户端报:svn: Can't open file '/var/svn/repos/testdemo/db/txn-current-lock': Permission denied

    出现如上的错误时,此时就需要检查版本库的访问权限了,可能是版本库没有写的权限,且当前版本库的组和访问权限均是root,我们需要将版本库的组权限更改为svn组权限,如下名:

    sudo chown -R svn:svn /var/svn/repos

    sudo chmod 777 -R  repos/*

    再次进行commit提交,发现一切正常

    8、用户权限控制

    需要在apache的配置文件中增加如下配置,才能使得apache能够获取svn的权限配置,如下:

    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    svn的权限控制是通过目录结构来控制,控制权限在/var/svn/repos/conf/authz文件中,示例配置如下:

    我的版本库下引入了目录testdemo,testdemo下有三个branches、tags、trunk,其中trunk下有app、doc、testdoc、devdoc

    编辑 vi /var/svn/repos/conf/authz

    [groups]

    Admin=admin

    Develop=dev1、dev2

    Tester=test1,test2

    [/]  //表示版本库的根目录,admin拥有所有的读写权限

    @admin=rw

    [/testdemo/trunk]  //表示版本库的根目录下的trunk文件下,表示develop拥有该文件夹下的读写权限

    @develop=rw

    [/testdemo/trunk/testdoc]  //表示版本库的根目录下的trunk文件下,表示Tester拥有该文件夹下的读写权限,便是develop拥有可读权限

    @tester=rw

    @develop=r

    以上的权限配置比较灵活,自己定义觉得,然后对于每一个角色控制其访问权限

    附:为了更好的控制版本库做好配置管理,发现svn还是比较适合,所以就着手搭建了一个svn server。

  • 相关阅读:
    【原创】VNC-view配置
    【LVM】LVM自动扩容脚本
    【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
    【原】Centos 7 下创建LVM流程
    【Spring-AOP-学习笔记-7】@Around增强处理简单示例
    【转】libvirt kvm 虚拟机上网 – Bridge桥接
    【phantomjs】使用phantomjs生成highChart的图片(待完善)
    【Redis】使用Redis Sentinel实现Redis HA
    【Redis】配置redis主从复制
    【转载】优秀博文转载
  • 原文地址:https://www.cnblogs.com/candle806/p/2826280.html
Copyright © 2011-2022 走看看