环境

Linux version 2.6.9-89.ELlargesmp  (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Mon Apr 20 10:43:12 EDT 2009

安装篇

一、安装Apache

安装脚本如下:

mkdir /usr/svn/ && cd /usr/svn/

下载 httpd-2.2.17.tar.gz

tar xvzf httpd-2.2.17.tar.gz  &&  cd httpd-2.2.17

安装 apr

现在在httpd-2.2.17目录下。

cd srclib/apr

./configure -prefix=/usr/local/apr

make

make install

安装 apr-util

cd srclib/apr-util

./configure -prefix=/usr/local/apr-util -with-apr=/usr/local/apr

make

make install

回到httpd-2.2.17目录下

./configure  -enable-dav -enable-so --prefix=/usr/local/apache2/ -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

make

make install

说明:

其中--enable-dav允许Apache提供DAV协议支持,--enable-so允许运行时加载DSO模块,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。这里我们使用最简的安装模式.

启动:/usr/local/apache2/bin/apachectl  start

二、安装SVN

下载 sqllite

tar xvzf sqlite-amalgamation-3.6.13.tar.gz  &&  cd sqlite-3.6.13

./configure --prefix=/usr/local/sqlite

make

make install

下载 subversion-1.6.15.tar.gz

tar xvzf subversion-1.6.15.tar.gz  &&  cd subversion-1.6.15

./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl  --enable-maintainer-mode --with-sqlite=/usr/local/sqlite

make

make install

说明:

其中,--with-apxs 用于生成apache httpd的mod_dav_svn和mod_authz_svn模块

三、创建 repository

假设我们把版本库建立在/home目录下,那么执行mkdir repository新建版本库文件夹,通过svnadmin create repository/test命令可创建名为test的版本库。若创建成功,则subversion的安装便已成功完成。

具体操作步骤:

groupadd svnroot

useradd -g svnroot svnroot           (红色表示用户组,黑色表示用户名)

passwd svnroot (键入svnroot的口令)

# cd /home && mkdir svnroot && cd svnroot

# mkdir repository

# /usr/local/subversion/bin/svnadmin create repository/test

发现就会自动生成如下的几个文件:

conf  dav  db  format  hooks  locks  README.txt

四、导入源代码

现在我们有了自已的一个版本库了。现在就可以导入源代码进来

目前我的目录是:/home/svnroot/repository

# ls

Test

在这里面我们再运行:mkdir -p import/{trunk,branches,tags} 此命令

就可以创建新的文件目录层次出来即import目录下面再包含三个子目录出来!

下面的语句:

/usr/local/subversion/bin/svn import /home/svnroot/repository/import file:///home/svnroot/repository/test/ -m "Init repository"

这条语句将把路径/home/svnroot/repository/import下的目录和文件导入到你创建的Subversion 仓库中去,

运行此语句之后的输出:

新增           /root/repository/import/trunk

新增           /root/repository/import/branches

新增           /root/repository/import/tags

提交后的版本为 1。

五、版本库所有者与权限修改

目前,repository目录依然为root用户所有,默认权限为755,为了让用户能够通过apache正常读写该目录,我们需要先将该目录以及该目录的上层目录svnroot的所有权交给svnroot用户,然后为了安全起见,将repository和svnroot目录的权限都改为700。

操作步骤:

第一步:打开apache配置文件/usr/local/apache2/conf/httpd.conf,确保将User和Group 设置为

User svnroot

Group svnroot

在最后新加

<Location /svn>

DAV svn

SVNParentPath /home/svnroot/repository/

AuthType Basic

AuthName "Subversion Repository"

AuthUserFile /home/svnroot/repository/pwdfile

AuthzSVNAccessFile /home/svnroot/repository/authz

Satisfy Any

Require valid-user

</Location>

其中/svn表示一个url的模式,匹配形如http://host/svn的url;SVNParentPath 指定的目录下的所有项目都被subversion 认为是合法的版本库;AuthzSVNAccessFile为授权文件;AuthType 则制定了客户端身份认证机制,Basic表示http基本认证机制;AuthUserFile就是先前创建的密码文件;Satisfy Any 和Require valid-user告诉apache所有用户先使用匿名方式访问版本库,只有当访问控制策略要求一个真实的用户名时,apache才会对客户端进行身份验证,这是使用得最多的一种授权方式。

第二步:进入/home目录,修改svn仓库的所有者

chown -R svnroot:svnroot svnroot

chmod 700 root

chmod 700 svnroot/repository

 

六、生成身份认证文件

身份认证文件保存用户的用户名和密码,用于确定用户身份。

命令: /usr/local/apache2/bin/htpasswd -cm /home/svnroot/repository/pwdfile test

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile daiyanfei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile guolei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhouwenming

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile daishuwei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhangwu

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhangyueshan

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile yuhaidong

说明: 其中-c表示创建身份认证文件,-m则表示密码使用md5加密。

这样就可以创建了一个用户test

最后将pwdfile文件的所有者改为svnroot并将其权限设置为700

chown -R svnroot: svnrootpwdfile

chmod 700 pwdfile

七、创建授权文件

其中,trunk表示主干,branches则为项目的分支,tags存放某个版本的快照。习惯上来说,大多数开发人的本地拷贝都来自truck目录,所以每个开发人员都应有trunk目录的读写权限,这样他们才能正常的进行日常的开发;而分支目录一般在,如某些开发人员需要大幅修改代码以增加新功能,或者代码进入较为稳定的阶段,开始bug去处工作等情况下使用,尽管这意味着这些代码总是有固定的一个或几个开发人员维护,但是基于“源代码共同拥有”的原则,我们还是可以将其设置为所有用户具有读写权限;tags目录则一般用于某个版本的发布,比如当项目到达版本1834时,release1已经完成,那么就可以将它复制到tags目录,作为一个快照存放,取一个好记得多的名字,比如release1(似乎应该只让某些人有写入权限,这样可以防止快照被破坏,可是即使被破坏了又怎么样呢,不要忘了我们在使用一个版本管理软件)。

根据authz文件的语法,我么可以把上述的设置表达成这样:(注意每个有效配置行的前面都不能有空格)

vi /home/svnroot/repository/authz 把下面内容贴进去 (去掉//和注释)

[groups]                                          //群组设置

g_pm = micheal                                    //某群组里的成员

g_dev = harry,sally

[test:/]                             //仓库test的根目录的访问权限

@g_pm = r                            //g_pm组用户具有读和写权限,’@’开头的表示群组设置

@g_dev = r                               //g_dev用户具有读写权限

[test:/trunk]                       //仓库test的trunk目录的访问权限

@g_pm = rw                       //g_pm组用户具有读和写权限,’@’开头的表示群组设置

@g_dev = rw                       //g_dev用户具有读写权限

[test:/branches]               //仓库test的branches目录下的访问权限

@g_pm = rw                   //g_pm组用户具有读和写权限,’@’开头的表示群组设置

@g_dev = rw                 //g_dev用户具有读写权限

[test:/tags]                  //仓库test的tags目录下的访问权限

@g_pm = rw                   //g_pm组用户具有读和写权限,’@’开头的表示群组设置

@g_dev = rw                  //g_dev用户具有读写权限

如果需要对某个用户授权,可以这么写:

[test:/branches]               //仓库test的branches目录下的访问权限

sally = r                       //sally用户具有读权限

编辑完成之后将此文件的权限变更过来

不要忘记将authz文件的所有者改为svnroot,并且将其权限设为700。

八、修改Apache配置文件

vi /usr/local/apache2/conf/httpd.conf

确保以下两行已被subversion正确添加

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

最后,使用如下命令重启apache httpd,打开浏览器访问http://localhost/svn/test/这个URL便可访问版本库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限的目录。

安装配置过程中常见的BUG:

添加一个我们的权限控制配置文件进来。这样的话就可以限制哪个账号对哪些目录具备了什么样的操作权限了。非常方便哦!到时我们可以给一个开发的账号与一个其上管理员的账号信息出来!

在安装软件时,可能出现各种库文件找不到的情况。。

如果是内部错误 vi /usr/local/apache2/logs/error_log 看看是否这里不对

转载于:https://blog.51cto.com/daiyanfei/491860

redhat下svn服务器搭建相关推荐

  1. Linux centos7 下 svn 服务器搭建

    摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...

  2. linux下svn服务器搭建及使用

    文章目录 1. 安装svn客户端 2. 安装svn服务器 3. 在svn目录下创建版本库 4. 修改版本库配置文件 4.1 修改 authz 文件 4.2 设置密码 passwd 4.3 修改 svn ...

  3. Linux下SVN服务器搭建(CentOS+Subversion)

    svn(subversion)是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件.svn服务器有2种运行方式:独立服务器和借助apache等web服务 ...

  4. linux svn 面板,Linux下SVN服务器搭建(CentOS+Subversion)

    安装 (centos下yum即可方便的完成安装) # yum install subversion 测试安装是否成功: # svnserve --version 回车显示版本说明安装成功 建立版本库 ...

  5. linux系统下SVN服务器搭建

    linux新手,整了好几天才搞好,做下笔记以备后续使用: 1.下载svn服务器 yum -y install subversion 2.创建仓库 svnadmin create /opt/svn/pr ...

  6. 2Ubuntu/RedHat下nfs服务器搭建,Linux多台电脑共享目录

     1安装nfs(网络文件系统)服务器 共享的原理: 安装命令: sudo apt-get install nfs-kernel-server 2设置/etc/exports配置文件 添加以下这行配 ...

  7. linux下 svn服务器搭建及使用

    1.安装svn 命令:sudo apt-get install subversion 2.创建目录和svn仓库 1) mkdir /home/zx/test_svn 2)svnadmin create ...

  8. svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用

    1.安装Subversion Server Subversion server binaries maintained by the Ubuntu Project. Packages include ...

  9. centos7下SVN服务器搭建

    1,安装 yum install subversion 2,输入rpm -ql subversion查看安装位置 3,创建svn版本库目录 mkdir -p /var/svn/svnrepos 4,创 ...

最新文章

  1. 【Spring】BeanFactory解析bean详解
  2. 看美女有助于男士长寿
  3. 适用于 Python 的 10 大最佳 IDE,你 Pick 哪一款?
  4. 关于DOM的事件操作
  5. Python中字符串String去除出换行符(\n,\r)和空格的问题
  6. iOS对象的归档和解档-Runtime实现
  7. Mybatis笔记 - SQL标签方法
  8. winform 显示控件层级关系
  9. 使用网云穿「内网穿透」实现外网访问内网瑞友天翼等软件
  10. C9—Qt实现网络调试助手
  11. 用java怎么做微信公众号,用Java搭建微信公众号(一)构建基础请求框架
  12. PS2小车—舵机基本原理
  13. 游戏经济系统——体系设计
  14. 《可复制的领导力》——樊登书摘
  15. 《数组》包括一维数组二维数组的创建和初始化,在内存中的存储和使用方法,数组越界和作为函数参数的情况
  16. 空气颗粒度PM2.5的检测设计与实现
  17. 大数据处理与分析方向主要干什么_大数据分析_方向_方法与工具
  18. 网上买保险靠谱吗?线上保险和线下保险的区别在哪?
  19. 盘点个人信息保护方面的那些认证
  20. 原子物理与原子核物理知识结构(含链接)

热门文章

  1. 前端学java还是python_零基础应该选择学习 java、php、前端 还是 python?
  2. tps+qps+mysql_实时获取MySQL的TPS、QPS(输出到屏幕)
  3. 非功能性需求_非接触式喷射自动点胶机的优势在哪儿?
  4. Java学习笔记2.6.2 数组 - 二维数组
  5. 大数据学习笔记39:Hive - 内置函数(2)
  6. Python数据分析学习笔记05:用户画像
  7. 安卓案例:线性布局嵌套
  8. 【codevs4654】【BZOJ2442】修剪草坪,第一次的单调队列,优化DP
  9. bzoj1293 [SCOI2009]生日礼物 单调队列
  10. [SDOI2009]地图复原 递推