Chinaunix首页 | 论坛 | 博客
  • 博客访问: 595352
  • 博文数量: 142
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 1835
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-10 14:30
个人简介

工作中~

文章分类

全部博文(142)

文章存档

2009年(25)

2008年(117)

我的朋友

分类: LINUX

2008-08-27 11:39:00


Subversion是新一代的开源版本控制系统,用以取代CVS。有关Subversion最详尽的资料就是官方的了。它是由开源社区编写的自由图书,已通过O'Reilly Media出版。下面简单介绍一下Subversion在Debian下的安装和配置过程。


1.安装
debian:/# aptitude install subversion subversion-tools apache2 libapache2-svn
2.创建一个新的空的版本库:
debian:/# mkdir -p /home/svn/lxq
debian:/# svnadmin create /home/svn/lxq  #版本名称lxq
在/home/svn/lxq 此路径上创建一个新的空的版本库,如果提供的路径不存在,它会为你创建。数据储存方式默认采用Berkeley DB。


3.修改apache的svn设定文档:/etc/apache2/mods-available/dav_svn.conf

配置文件位于/etc/apache2/mods-enabled/目录下,配置文件共有两个,分别是dav_svn.conf和dav_svn.load.
dav_svn.load文件负责装载必要的模块,内容如下:
# Depends: dav
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

在装载mod_dav_svn.so前,必须先装载mod_dav.so模块。它由dav.load文件控制,内容如下:
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
dav_svn.conf是mod_dav_svn.so模块的配置文件,内容如下:
# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
#
# NOTE: for a setup with multiple vhosts, you will want to do this
# configuration in /etc/apache2/sites-available/*, not here.

# ...
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as
# Note, a literal /svn should NOT exist in your document root.
#设置访问路径

# Uncomment this to enable the repository,
DAV svn #启用

# Set this to the path to your repository
SVNPath /home/svn #设置版本存储库路径,仅支持单个储存库,该路径要可被Apache进程访问。
# Alternatively, use SVNParentPath if you have multiple repositories under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
# You need either SVNPath and SVNParentPath, but not both.
#SVNParentPath /data/subversion #如果subversion下有多个储存库,则用SVNParentPath

# Access control is done at 3 levels: (1) Apache authentication, via
# any of several methods. A "Basic Auth" section is commented out
# below. (2) Apache and , also commented out
# below. (3) mod_authz_svn is a svn-specific authorization module
# which offers fine-grained read/write access control for paths
# within a repository. (The first two layers are coarse-grained; you
# can only enable/disable access to an entire repository.) Note that
# mod_authz_svn is noticeably slower than the other two layers, so if
# you don't need the fine-grained control, don't configure it.



# Basic Authentication is repository-wide. It is not secure unless
# you are using https. See the 'htpasswd' command to create and
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
AuthType Basic #启用Apache基础验证
AuthName "Subversion Repository" #设置验证框标题
AuthUserFile /etc/apache2/dav_svn.passwd #指定验证用户文件名

# To enable authorization via mod_authz_svn
# AuthzSVNAccessFile /etc/apache2/dav_svn.authz #启用目录级别授权,dav_svn.authz是
授权配置文档

# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').

#允许匿名访问,不允许Commit,不能
与AuthzSVNAccessFile同时使用
Require valid-user



4.更改该目录的拥有者为网页读取
修改/目录访问权限使它可被Apache进程访问,我的Apache是用www-data启动的,所以设置方法如下:
debian:/# chown -R www-data.www-data /home/svn/lxq

5.设定使用人的权限:修改/etc/apache2/dav_svn.authz
   通过Apache的用户验证功能可以区别匿名用户和验证用户,从而赋予匿名用户读权限和验证用户读/写的权限。这些权限只能在全局范围内设置,不能设置具体的某个目录是否能被某个用户操作。要实现目录级别的授权,就要使用mod_authz_svn.so模块提供的AuthzSVNAccessFile指令。它会指定一个授权文档,该授权文档设置具体的目录权限。根据上面的配置,授权文档名叫dav_svn.authz,它的内容如下:
[groups]              #定义组
 admin=lxq001,lxq007
 tests=test1,test2


[lxq:/] #定义lxq版本库根目录的访问权限
 @admin=rw #admin组有读写权限
 tests=r #test用户只有读权限


[lxq:/test] #定义oa版本库下test目录的访问权限
 *= #禁止所有用户访问,星号代表所有用户,权限为空代表没有任何权限
 lxq=rw #打开lxq001用户的读写权限


6.增加apache连接进来的使用者帐号 
/etc/apache2/dev_svn.passwd
debian:/# htpasswd -c /etc/apache2/dav_svn.passwd lixueq
New password:
Re-type new password:
Adding password for user lixueq

debian:/# htpasswd -c /etc/apache2/dev_svn.passwd test1

7.重启apache2

在/etc/apache2/sites-available/default中添加:


    DAV svn
    SVNListParentPath on
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/dav_svn.passwd
   
        Require valid-user
   


然后重启apache2

debian:/# nano /etc/init.d/apache2 restart

8.导入你的源码:
debian:/# svn import /var/www/web1
file:///home/svn/lxq

9.显示储存库内容:
debian:/# svn list file:///home/svn/lxq
index.php
a.php

显示web1目录内容,成功导入。


使用svn://访问,需开启此服务:

debian:/# svnserve -d -r /home/svn/lxq/


上面我使用了file:///形式的URL来访问Subversion库,这表示在本地通过文件系统访问。但我们的Subversion库可能需要通过网络被其它用户访问,这就需要用到其它的协议,下表是Subversion支持的各种访问协议:

Table 访问协议

协议 访问方法
file:/// 通过本地磁盘访问。
http:// 与Apache组合,通过WebDAV协议访问。
https:// 同上,但支持SSL协议加密连接。
svn:// 通过svnserve服务自定义的协议访问。
svn+ssh:// 同上,但通过SSH协议加密连接。
阅读(3546) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~