在Redhat AS 5.2上安装CollabNet Subversion服务器,在Subversio


Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。

本文是记录在Redhat as 5.2系统上安装CollabNet Subversion服务器过程:

下载部署包

到www.collab.net/developers/tools/下载client和server端:

客户端:CollabNetSubversion-client-1.6.12-1.i386.rpm

下载地址:http://www.open.collab.net/cn/downloads/subversion/redhat.html

选择此项:CollabNet Subversion command-Line Client v1.6.12 (for Red Hat Linux)

服务器端:CollabNetSubversion-server-1.6.12-1.i386.rpm

下载地址:http://www.open.collab.net/cn/downloads/subversion/redhat1.5.html

选择此项:CollabNet Subversion Server v1.6.12 (for Red Hat Linux)

安装

安装Server端之前需要安装client端。

# rpm -Uvh CollabNetSubversion-client-1.6.12-1.i386.rpm
# rpm -Uvh CollabNetSubversion-server-1.6.12-1.i386.rpm

配置

创建一个Repository目录:

mkdir -p /opt/svn/repos

运行配置脚本:

/opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion

根据提示创建项目库、用户等,配置完成后,自动启动SVN服务器。

用户名存储位置:/etc/opt/CollabNet_Subversion/conf/svnserve_auth_file

重启服务:

service collabnet_subversion restart

访问

svn://localhost/YOUR-REPOS-NAME  (基于svnserver)
或者http://localhost/YOUR-REPOS-NAME  (基于Apache)

与系统原有Apache集成

由于Collabnet的SVN自带了一个apache server,如果要使用系统原有的Apache server,可以在配置时选择svnserve方式,然后手工配置原来的Apache与SVN集成。

RHEL 使用的是httpd-2.2.3-11.el5_1.3.i386.rpm,Collabnet的官方网站提到Collabnet SVN不支持与RHEL原有Apache进行集成(http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=313586)不过有一位中国的兄弟回复可以通过加入Collabnet的库目录到系统库搜索目录来解决。

复制SVN模块

复制/opt/CollabNet_Subversion/modules/目录下的mod_authz_svn.so和mod_dav_svn.so 到/usr/lib/httpd/modules

修改httpd.conf文件

# vi /etc/httpd/conf/httpd.conf

增加:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>
DAV svn
SVNParentPath /opt/svn/repos/
AuthType Basic 
AuthName "Subversion"
AuthUserFile /opt/svn/passwdfile

#AuthzSVNAccessFile /opt/svn/accessfile
Require valid-user 
</Location>

把Collabnet的库目录加入系统配置

此步骤主要解决启动Apache时出现如下错误。

Starting httpd: httpd: Syntax error on line 995 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_dav_svn.so into server: /opt/CollabNet_Subversion/lib/libsvn_subr-1.so.0: undefined symbol: apr_memcache_add_server

# vi /etc/ld.so.conf

增加一行:

/opt/CollabNet_Subversion/lib

#ldconfig

注:增加CollabNet lib后出现了Xwin启动出错:

nautilus can't be used now Nautilus can't be used now, due to an unexpected error from Bonobo when attempting to register the file manager view server.

网上说这是因为CollabNet lib下的libz.*库所引起的。可以使用另外一种方法,修改/etc/init.d/httpd脚本:

start() {
        echo -n $"Starting $prog: "
        check13 || exit 1
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/CollabNet_Subversion/lib
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

创建用户认证文件

例如增加2个用户test和test1,使用命令:

# htpasswd -cm /opt/svn/passwdfile test
New password:
Re-type new password:
Adding password for user test

# htpasswd  -m /opt/svn/passwdfile test1

New password:
Re-type new password:
Adding password for user test1

注意:创建密码文件需要带-c参数, -m 表示使用更安全的MD5算法

问题

使用http方式无法创建新文件夹,而使用svn://协议没有问题,错误信息:

Can't open file 'svn/db/txn-current-locks':permission denied

进入svn的reposity所在的目录

# chown csvn:apache * -R
# chmod -R 770 *

其他SVN工具

SVNManager: http://svnmanager.org/

支持的功能:

Create, remove, load and dump repositories
Manage user accounts for access to the repositories
Manage groups for acces to the repositories
Invite users by email to create an account on the server

相关内容