天天看点

subversion在系统管理方面涉及到的内容

<b>subversion</b><b>在系统管理方面涉及到的内容</b>

预定义:新建一个目录/home/svn,将所有的库都建在这里

安装方式

分为两种:apache扩展和独立服务器

<b>一、作为apache</b><b>的扩展</b>,

需要重新编译安装apache,支持web访问,但是这样运行svn较慢,身份验证由apache来完成,不需要给开发人员系统帐号

编译apache的参数

例:apache2.2.6

./configure --prefix=/usr/local/apache2  --enable-module=setenvif --enable-module=rewrite --with-mpm=prefork <b>  --enable-so --enable-dav-fs --enable-dav</b>

最后三个参数是必须要的

编译subversion的参数

例:subversion-1.4.5

#./configure <b>--with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion</b> --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode

因为是通过apache访问的,所以apache的运行者(nobody或者apache)要对库目录有写的权限。

如chown apache.apache /home/svn

修改apache配置文件

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

&lt;Location /svn&gt;

   DAV svn

   SVNParentPath /home/svn/ <b>//svn</b><b>库的主目录</b>

   AuthzSVNAccessFile /home/svn/authz.conf <b>//</b><b>权限配置文件</b>

   AuthType Basic 

   AuthName "Subversion.zoneyump" <b>//</b><b>输密码时候弹出的连接框提示</b>

   AuthUserFile /home/svn/authfile <b>//</b><b>用户配置文件</b>

   Require valid-user <b>//</b><b>采用何种认证</b>

&lt;/Location&gt;

创建用户svn1 ,svn2

htpasswd -c /home/svn/authfile svn1 第一次包含创建文件的操作,要带-c参数

会提示输密码

htpasswd  /home/svn/authfile svn2

不要-c参数了

建库

svnadmin create /home/svn/repos1

这样就建立了名为repos1的库

限制svn的用户权限

编辑 /home/svn/authz.conf

[repos1:/]  

svn1 = rw  

svn2 = r

[/]    

* = r

客户端访问

浏览器http://服务器IP/svn/repos1/ 输入用户名密码即可看到文件列表

客户端http://

不是svn://

<b>二、独立服务器</b>,

这种跟apache没关系,安装使用都比较简单,运行也相对较快

安装可以使用源码或者自带的rpm包。现在服务器上用的是自带的rpm包,可以进行升级。

以独立启动的方式来说,可以是两种:

1.作为一个daemon监听进程:启动后一直运行监听连接,客户端访问用svn方式,身份验证用svn自带的配置文件(用户不需要机器的帐号,权限管理也由配置文件来控制)

2.由ssh启动svn:通过ssh访问时,ssh启动一个svn进程,操作结束后,这个svn进程就结束了,客户端访问用ssh方式,身份验证用ssh(用户需要有机器的帐号,权限由系统管理)

同样建立目录/home/svn,作为存放库和配置文件的地方.

创建库

这样就自动创建了一个库repos1,所在的目录是/home/svn/repos1

目录下有一些内容

conf  dav  db  format  hooks  locks  README.txt

重要的是conf目录,存放配置文件,下面的配置文件有authz  passwd  svnserve.conf三个文件

核心是svnserve.conf,其内容一般如下

[general]

anon-access = none  不允许匿名访问

auth-access = write  授权用户访问最大的权限是写

password-db = /home/svn/conf/pwd.conf存放用户和密码的配置文件

authz-db = /home/svn/conf/authz.conf管理用户和组权限的文件

realm = repos1指定库名称

以后还建立库的话,做法也跟上面一样,只是改最后一句

realm = repos1 来指定库的名称

这样做的好处是实现集中的用户权限管理(多个库使用一套配置文件)

目录下的其他两个文件authz  和passwd(authz对应authz.conf,passwd对应pwd.conf)就不需要了,可以删掉

<b>1.</b><b>独立的daemon</b><b>方式</b>

用户和权限都是由配置文件来控制,这点与之前的apache类似,使用虚拟帐号而不是系统帐号,但是与apache相比配置要简单很多

定义用户pwd.conf文件格式如下

[users]

svn1 = password1

svn2 = password2

格式: 用户名 = 密码

定义权限authz.conf文件格式如下

[groups]

admin = svn1

[/]

@admin = rw

[repos1:/]

svn1 = rw

[repos2:/pass]

启动服务器

<b>svnserve -d --listen-port 3690 -r /home/svn</b>

一直在tcp的3690端口监听,端口可以随意指定,默认是3690

客户端访问svn://服务器ip/repos1,如果没有启动svn,访问是不行的

<b>2.ssh</b><b>方式</b>

基本上对系统什么也不用做,建库,设好权限即可

所有的用户和权限由系统控制,用户是操作系统用户,权限是操作系统设置的目录权限.

在机器上为所有的开发人员建帐号

为了方便在系统中增加一个svn组,将所有的开发人员加入到svn组

给库目录/home/svn加svn组的权限,保证开发人员可以读写文件

/home/svn/conf下的文件基本不起作用,但是还是需要有

存放用户密码的文件 pwd.conf 只需要为空

控制权限的文件authz.conf,只需要给最大的.因为更严格的权限由系统管理员来对具体目录设置,这里设了也是无效的.内容如下

* = rw

客户端的访问方式

svn+ssh://svn4@服务器ip/home/svn/repos1

不需要在服务器端启动程序

注:

svn4是用户名

/home/svn/repos1是访问路径(注意与svn://不同,这里使用的是绝对路径名)

这句话的意思也就是svn4这个用户要访问机器上的/home/svn/repos1这个路径

<b>出现问题基本是由于用户权限造成的。</b>

<b></b>

<b>本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/58414,如需转载请自行联系原作者</b>