linux 下svn配置

SVN有2种安装方式 :Apache 和非 Apache

httpd是web服务器,用来通过web访问subversion

svn:// 需要用svn的方式对用户权限配置

http:// 需要用http的方式对用户权限配置,

安装前须知:

1,关于mod_dav_svn模块
      由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展,关于WebDAV的规范和工作原理,可以参考IETF RFC 2518
mod_dav_svn模块就是作为Subversion与Apache之间的接口,通过它,Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问.

# rpm -qa|grep svn
mod_dav_svn-1.4.2-2.1AX

Mod_dav_svn的版本要和svn版本一致

下载依赖库

如果没有zlib的话,要安装zlib

下载依赖的库(安装之前需要的库),版本一定要对上,要不然编译通不过安装apr依赖库

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

(Apache Portable Runtime Module)
http://archive.apache.org/dist/apr/apr-1.2.12.tar.gz

http://archive.apache.org/dist/apr/apr-util-1.2.12.tar.gz

http://archive.apache.org/dist/httpd//httpd-2.2.6.tar.gz
./configure --enable-dav --enable-dav-fs
make
make install
检查已安装的 Apache2 是否已经安装了 mod_dav .
如果已经成功安装了Apache,使用 httpd -M 来查看有没有安装 dav_module,如果没有的话 必须附加 ‘–enable-dav’ ‘–enable-dav-fs’ 两个参数重新编译 Apache,否则即使编译通过了svn,apache也会启动不起来.

下载apache

 注意:安装附加参数 dav

./configur-prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config -enable-modules=so --enable-dav --enable-maintainer-mode --enable-rewrite

安装 Subversion 源码安装

注意:安装附加参数 

./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl --with-zlib --enable-maintainer-mode

配置集成在apache配置文件里面

配置 apache 与 Subversion 集成

vi /usr/local/apache/conf/httpd.conf  在末尾添加

<Location /svn> 

DAV svn 

SVNParentPath /svn/project

AuthType Basic

AuthName "Hello welcome to here"  

AuthUserFile /svn/passwd

AuthzSVNAccessFile /svn/auth.conf 

Require valid-user  

</Location>

说明

<Location /svn> 

DAV svn 

SVNParentPath /svn/project (此处配置你的版本库根目录) 

AuthType Basic (连接类型设置 基本验证) 

AuthName "Hello welcome to here" (此处字符串内容修改为提示对话框标题) 

AuthUserFile /svn/passwd (访问版本库用户的文件,用apache 的htpasswd命令生成) 

AuthzSVNAccessFile /svn/auth.conf (此处修改为访问版本库权限的文件) 

Require valid-user ("Require valid-user"告诉apache在authfile中所有的用户都可以访问) 

</Location>重启 apache  /usr/local/apache2/bin/apachectl –k restart

注意,如果用apache集成的话,这里配置的版本权限文件可以和svn的不是一个,则这个生效,svn的就可以不用配置了,当然配置了也没有用,

 

配置SVN(所有的配置文件里面的文字都要定行首不留空格!要不然不识别,)

svnbin目录加到环境变量中去

[root@BlackGhost /]# PATH=$PATH:/usr/local/svn/bin
[root@BlackGhost /]# export PATH

目录控制文件authz

[root@BlackGhost conf]# vi authz
[groups]

admin= zhangy

[repos:/]
@admin = rw     =》看见没,定行首,@前面不能有空格,要不然不识别
* = r

1,新建一个目录用于存储SVN所有文件

# mkdir /home/svn

2,新建一个版本仓库
# svnadmin create /home/svn/project

3,初始化版本仓库中的目录(最好初始化成标准目录即,trunk,branches,tags三个目录)

//当前目录下新建一个临时目录
[root@gitserver ~]# mkdir project  project/trunk project/branches project/tags

//把刚才新建的临时目录import版本库里面

# svn import project/ file:///home/svn/project -m “初始化SVN目录”

// svn import作用: 递归提交一个路径的拷贝到版本库。 

//以前临时目录没用了,可以删除了

[root@gitserver ~]# svn import project/  file:///opt/svn/project -m "init the dir"

Adding         project/trunk

Adding         project/branches

Adding         project/tags

# rm -rf project (删除临时建立的目录)

4,添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[project:/]
@project_p = rw
* =

[project:/server]
@project_p = rw
@project_s = rw
* =

[project:/client]
@project_p = rw
@project_c = rw
* =

[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
注意:subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件
[general]
anon-access = none  ==》anon前面不要留空格,
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz
7,启动服务器
# svnserve -d -r /home/svn(d 代表隐藏, r 后面接目录)
注意:如果修改了svn配置,需要重启svn服务,步骤如下:
# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /home/svn

8,测试服务器
# svn co svn://192.168.10.166/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group没用根目录的访问权 )

# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A project/test
A project/server
A project/client
Checked out revision 1. ( 测试提取成功 )

# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m “测试一下我的C程序,看什么看,不行啊??”
Adding main.c
Transmitting file data .
Committed revision 2. ( 测试提交成功 )

三,配置SVN服务器的HTTP支持(svn的用户验证就失效了,因为你是通过http访问的,而不是svn协议)

Httpd.conf配置文件由如下代码

<Location /svn>

    DAV svn

    #SVNListParentPath on

    SVNParentPath /opt/svn/repositys

    # how to authenticate a user

    AuthType Basic

    AuthName "Subversion repository"

    AuthUserFile /usr/local/svn/apache_authz

    Require valid-user

    # our access control policy

    AuthzSVNAccessFile /usr/local/svn/svn_authz

</Location>

1,转换SVN服务器的密码由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作. 脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl

#!/usr/bin/perl

# write by huabo, 2009-11-20

use warnings;

use strict;

#open the svn passwd file

open (FILE, "passwd") or die ("Cannot open the passwd file!!!n");

#clear the apache passwd file

open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!n");

close (OUT_FILE);

#begin

foreach (<FILE>) {

if($_ =~ m/^[^#].*=/) {

$_ =~ s/=//;

`htpasswd -b webpasswd $_`;

}

}

# chmod +x PtoWP.pl
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。

2,修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>

3,修改svn目录的属主为apache帐号:chown -R apache.apache /home/svn/project/
(注意:原文少了这一步,会出权限问题。)
4,重启Web服务器:
# /etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]

5,用浏览器访问http://192.168.60.10/project/server/测试

下面建立可访问用户文件
# htpasswd -c /home/svn/authfile 用户名
要增加用户,则使用下面命令
# htpasswd /home/svn/authfile 用户名

补充知识

启动目录决定访问路径

由上面可知道,启动目录为./opt/svn/repositys,那么访问路径就应该是

svn://192.168.10.25/eos4bank

SVN标准目录结构

2.1 目录结构概述

 

2.1.1 目录 trunk 

trunk是主分支,是日常开发进行的地方,一般包含 : 

0-Src 源码

1-DevelopDoc 开发文档

2-ProductDoc 产品文档

3-ThirdPartyTools 第三方工具(插件)

4-Testing 测试

5-DeployDoc 部署文档

2.1.2 目录branches

ranches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。

又比如为不同用户客制化的版本,也可以放在分支中进行开发。

2.1.3 目录 tags 

tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

2.2 权限分配:修改authz文件

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值