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。

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/candle806/p/2826280.html
Copyright © 2011-2022 走看看