Debian下SVN安装

1、安装必要软件包

SVN最常用的方式是通过Apache2使用(其他方式本文不会涉及,最主要是我也没做过.^_^),因此需要安装apache2。在一般情况下,我的服务器上会安装php,因为我选择了apache的apache2-mpm-prefork包。安装命令:
    shell#apt-get install apache2-mpm-prefork libapache2-svn subversion
    Debian的包管理系统会自动安装缺少的包。

2、配置

svn作为apache2的一个模块,配置文件在Debian下位于/etc/apache2/mods-available/dav_svn.conf(其他发行版或许有所区别)。首先我们看一个配置文件示例:
        <Location /svn>
                DAV svn
                SVNParentPath /data/svn_repos/
                AuthzSVNAccessFile /etc/apache2/erya.authz
                AuthType Basic
                AuthName "Subversion Repository"
                AuthUserFile /etc/apache2/dav_svn.passwd
                Require valid-user
        </Location>

说明:

a)第一行:<Location /svn>表示svn仓库位于/svn虚拟目录下面(Location的作用有点类似Alias的作用)。当然你可以的目录,比如<Location /src>。那么这样配置一般您将可以通过浏览器http://hostname/svn进行浏览(如果权限足够的话)。

b)第二行: DAV svn表示dav启用svn支持。如果您想更详细了解dav是啥去baidu或者google一下,网上资料蛮多的。

c)第三行:SVNParentPath /data/svn_repos表示使用SVNParent方式,并且仓库的物理路径为/data/svn_repos.SVN支持两种对项目的管理方式,一种是SVNParent,另一种是SVN(?)。我一般更喜欢SVNParent这种方式,因为使用这种方式添加一个新项目是不需要重启 apache的,而另一种方式则需要。对于一个实际使用的服务器来说,是否需要常常重启是一件很重要的事情了。这儿的/data/svn_repos目录必须是存在而且目录的属主应该为apache的用户(Debian下一般为www-data)。mkdir -p /data/svn_repos;chown -R www-data:www-data /data/svn_repos。注意:配置文件默认的是SVNPath,即使用的后一种方式。

d)第四行:AuthzSVNAccessFile /etc/apache2/erya.authz。表示用户权限文件是/etc/apache2/erya.authz(权限文件的写法我在后面再说)。文件可以位于任意其他位置。

e)第五至八行:经常配置apache的朋友,我想一定看出来了,这个是apache的配置,使用使用apache的用户文件作为身份验证,需且要求有效用户才可以访问。如果您使用其他用户管理方式,比如pam,LDAP或者MySQL等都是一样的。其实在配置文件注释中已经说明了怎么样使用 htpasswd进行用户管理的方式。在此需要注意的是第四行的配置与此处的配置,在authz权限文件中,只配置哪个用户是什么样的权限,而判断是否已经通过密码验证却是由apache的用户管理实现的。也就是说,比如我有一个用户qsg,那么判断这个用户的密码是否正确是由此处完成的,而判断此用户对哪些项目有什么样的权限则是由authz文件完成的。

上面这个配置示例是最简单的一个配置,其实您还可以通过这个配置xlst文件,以改变通过浏览器查看的效果(我尝试过几次,不过配置出来的效果比默认更难看,所以索性作罢。)

配置完成后,进入/etc/apache2/mods_enabled查看指向dav_svn.conf和dav_svn.load的文件链接是否存在(apache据此启动模块)。

3、创建用户文件

在dav_svn.conf的注释中已经说明了创建用户文件的方法:
    htpasswd2 -c /etc/apache2/dav_svn.passwd jsz

添加用户jsz到/etc/apache2/dav_svn.passwd文件中,如果文件不存在,则创建。

4、建立项目仓库

我们假设您的配置的SVNParentPath目录是/data/svn_repos。进入/data/svn_repos,此时目录应该是空的。

创建一个项目仓库分为三个步骤:a)建立目录b)使用svnadmin初始化新项目目录c)将目录属主改为apache的用户(本文中我们都假设您使用默认为www-data用户)。

我写了一个小脚本(假设文件名为createnew):
    #!/bin/bash
  
    echo "Create a new resposity ..."
    mkdir $1
    svnadmin create $1
    chown -R www-data:www-data $1

很简单,三条命令。用法:./createnew test,则我们就建立了一个test项目。建立其他项目也一样,比如:./createnew project1

执行完以后再查看一下目录情况下。我们可以进入test目录看看,它不象CVS一样,你能够看到什么,因为svn使用了Berkeley数据库来存放代码.

相关推荐