linux系统下apache+subversion搭建版本控制服务器

 

  境:Linux RedHat Enterprise Linux Server release 5

源码包:httpd-2.2.15.tar.gz  subversion-1.5.6.tar.bz2

 

 

【编译安装httpd
# tar -xvzf
httpd-2.2.15.tar.gz

# cd httpd-2.2.15

# cd srclib/apr

# ./configure /

> --prefix=/usr/local/apr /

> --enable-threads /

> --enable-other-child /

> --enable-static

# make

# make install

# cd ../

# cd apr-util

# ./configure /

> --prefix=/usr/local/apr-util /

> --with-apr=/usr/local/apr/ /

> --with-mysql=/usr/local/mysql

# make && make install

# cd ../../

# ./configure /

> --prefix=/usr/local/apache2 /

> --with-apr=/usr/local/apr

> --with-apr-util=/usr/local/apr-util

> --enable-dav /

> --enable-so
# make
# make install
# /usr/local/apache2/bin/apachectl –k start

 

* 注意:--enable-dav --enable-so参数是必须要加的,你还可以根据您的需要添加其他的参数。

* --enable-dav 启用davweb支持,是subversion+apache组合必选,缺少的话,在运行apache会出现undefined symbol: dav_register_provider的错误

* apr apr-util一般会在httpd的安装包内,subversion安装会使用到aprpar-util,如果当前系统没有,最好安装一下

 

【编译安装subversion

我在安装make install中出现如下问题,

error while loading shared libraries: /path/to/*.so: cannot restore segment prot after reloc: Permission denied

请尝试关闭 SELinux(编辑 /etc/selinux/config),如果还是不行,尝试执行chcon -t texrel_shlib_t /path/to/*.so 一般可以解决,然后重新在执行make install

 

 

# tar -jxvf subversion-1.5.6.tar.bz2

# cd subversion-1.5.6

# ./configure /

> --prefix=/usr/local/subversion /

> --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

 

* 创建版本库所在目录/var/svnroot
# mkdir -p /var/svnroot

# /usr/local/subversion/bin/svnadmin create /var/svnroot

# chwon –P apache:apache /var/svnroot

* 关于avnadminsvnserve的参数,请使用--help查询

* 修改版本库的根目录/var/svnroot的用户和组成和apache一个用户和组,否则可能会出现:Can't open '/path/to/db/txn-current-lock': Permission denied

 

 

【整合apachesvn

编辑apache主配文档(/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

 

添加下列标签

<Location /svn>

DAV svn

SVNPath /var/svnroot

    AuthType Basic

    AuthName "Welcome to MySVN"

    AuthUserFile /var/svnroot/svn.passwd

    AuthzSVNAccessFile /var/svnroot/svn.authz

    Require valid-user

</Location>

* 标签说明

* <Location /svn>   意思是Subversion版本库的URLhttp://localhost/svn

*  DAV svn  告诉Apache响应http://localhost/svn请求的是svn模块

* SVNPath       版本库目录,用于单一版本库管理

 

* SVNParentPath         版本库的根目录,用于多版本控制管理

* SVNListParentPath on  显示SVNParentPath下的版本库

* AuthType Basic        激活基本认证

* AuthName "Welcome to MySVN"   认证对话框提示信息

* AuthUserFile          指定使用的用户密码文件,由apache htpasswd命令生成

* AuthzSVNAccessFile    版本库的访问权限控制文件  

* Require valid-user    有输入了正确的用户/密码的用户可以访问

 

 

创建svn.passwd文件

# /usr/local/apache2/bin/htpasswd -cm /var/svnroot/svnpasswd user1

  New password:

  Re-type new password:

  Adding password for user user1

* 第一次添加使用 -cm 同时会创建文件,此后可使用 -m 创建。详情请参阅htpasswd --help

# /usr/local/apache2/bin/htpasswd –m /var/svnroot/svnpasswd user2

  New password:

  Re-type new password:

  Adding password for user user2

 

 

创建svn.authz

# vi /var/svnroot/svn.auzhz

[groups]

group1 = user1

group2 = user2

[/]

@group1  = rw

@group2  = r

*  =

 

补充说明:

如果使用apache+svn进行版本控制,那么在创建版本库时产生的conf目录里的配置文件时没意义的。

对版本库的访问时基于apache平台,所以无需启动svnserve,除非同时想采用svn://访问,但是svnserve默认只能开启单一版本库的访问控制,因为svnserve启动必须指向相关版本的目录。

无论是单版本库还是多版本库控制,如果开启了访问控制AuthType Basic,那么用户的管理和权限都在AuthUserFileAuthzSVNAccessFile指定的文件里。

单个版本控制时,在AuthzSVNAccessFile指定文件里使用[/path/to]配置用户在指定目录权限

多个版本库控制时,在AuthzSVNAccessFile指定文件里进行分组,使用[project_name:/path/to]配置用户在指定版本库的指定目录的权限

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值