原文网址:http://www.cnblogs.com/candle806/archive/2012/12/20/2826280.html

环境描述: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。

【转】Ubuntu下搭建SVN环境-Apache的更多相关文章

  1. deepin/ubuntu下搭建Jekyll环境

    title: deepin/ubuntu下搭建Jekyll环境 最近用github搭建了个博客,正好也学习一下markdown语法,由于markdown写完后不是立即可见,所以每次写完文章都要经过在线 ...

  2. ubuntu下搭建svn服务器

    [ubuntu下搭建svn服务器] 1.创建目录 mkdir ~/svn/repository/ 2.创建仓库 svnadmin create repository 3.进入 repository/c ...

  3. Linux之旅-ubuntu下搭建nodejs环境

    .NET Core也开源了,并且可移植到Linux下,而ubuntu作为linux发行版的翘楚,极大的方便了初学者的入门,搭建完ASP.NET Core运行环境后,作为半前半后的开发人员,就继续着搭建 ...

  4. Ubuntu下搭建WordPress环境

    WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用.WordPr ...

  5. Ubuntu下搭建Mininet环境

    Mininet环境搭建分为两个步骤,如下: 1.从GITHUB上获取mininet源码到本地的opt目录下 打开Linux终端,切换目录到根目录 cd / 切换到Linux的opt目录下 cd opt ...

  6. Centos 下搭建SVN + Apache 服务器(转载)

    安装软件包 ? 1 # yum install httpd ? 1 # yum install mod_dav_svn ? 1 # yum install subversion 2.  验证安装 ? ...

  7. ubuntu下搭建LAMP环境

    本文参考:http://www.linuxdiyf.com/linux/21265.html 请支持原创. 步骤一:安装apache root@mrwang:~$ sudo apt install a ...

  8. Ubuntu下搭建ryu环境

    RYU环境搭建总共四步: step1:首先下载相应的python套件,并且更新pip $ sudo apt-get install python-pip python-dev build-essent ...

  9. Centos7 下搭建SVN + Apache 服务器

    1. 安装httpd 安装httpd服务: $ sudo yum install httpd 检查httpd是否安装成功: $ httpd -version Server version: Apach ...

随机推荐

  1. pc机安装centos6.5,提示sda必须有一个GPT磁盘标签处理

    1.在进入安装界面,也就出现图形界面时,对它命令首先创建gpt --按ctrl+alt+f2的组合键,然后进入命令行 --进行如下操作输入parted输入mklabel gpt /dev/sda在提示 ...

  2. Asp.net简单三层+Sqllite 增删改查

    新建项目à新建一个空白解决方案 在Model新建一个实体类 using System; using System.Collections.Generic; using System.Linq; usi ...

  3. 利用jQuery npoi插件 asxh一般处理文件实现excel的下载

    最近开发的过程中遇到这么一个问题,利用ajax和ashx文件实现下载功能.发现代码调试走完之后并没有弹出下载框. 研究了一段时间之后发现解决这种问题有两种方法,1.ajax获取数据集在前台做处理实现导 ...

  4. 解决Flash挡住层用z-index无效的问题

    有时我们要用flash做透明背景结果发现加好之后下面的文字连接点击不了了,div下拉也给flash档住了,后来百度发现我们只要设置wmode参数就可解决了.   在HTML中,如果嵌入Flash,默认 ...

  5. java的真相

    所谓编译,就是把源代码“翻译”成目标代码——大多数是指机器代码——的过程.针对Java,它的目标代码不是本地机器代码,而是虚拟机代码. 编译原理里面有一个很重要的内容是编译器优化.所谓编译器优化是指, ...

  6. C# 展开和折叠代码的快捷键

    C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M +  ...

  7. 面向报文(UDP)和面向字节流(TCP)的区别

    转载:http://blog.csdn.net/wanghaobo920/article/details/11877589 面向报文(UDP)和面向字节流(TCP)的区别 面向报文的传输方式是应用层交 ...

  8. shell脚本学习之$0,$?,$!等的特殊用法

    变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 ...

  9. 通过css实现文本超出部分以省略号(......)代替

    一.单行溢出 1,固定宽度(非常容易) text-overflow: ellipsis; 2,不固定宽度 思路:想让这个区域成为块元素,然后不换行,溢出隐藏. display: block; whit ...

  10. 169. Majority Element(C++)

    169. Majority Element Given an array of size n, find the majority element. The majority element is t ...