安装说明

系统环境: CentOS 6.5 安装方式: yum

检查已安装版本

[root@CentOS /]# rpm -qa subversion //检查是否安装了低版本的SVN
[root@CentOS /]# yum remove subversion //卸载旧版本SVN
[root@CentOS /]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql //安装SVN
[root@CentOS /]# cd /etc/httpd/modules
[root@CentOS modules]# ls | grep svn //确认已已安装了SVN模块
mod_authz_svn.so
mod_dav_svn.so

验证安装

检验已经安装的SVN版本信息

[root@CentOS modules]# svnserve --version 
svnserve,版本 1.6.11 (r934486)
编译于 Mar  6 201410:49:10

版权所有 (C) 2000-2009 CollabNet
Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。

下列版本库后端(FS) 模块可用:

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。

Cyrus SASL 认证可用。

代码库创建

SVN安装完后还需要建立SVN库

[root@CentOS modules]# mkdir -p /opt/svn/repositories
[root@CentOS modules]# svnadmin create /opt/svn/repositories

执行上面的命令后,自动建立repositories库,查看/opt/svn/repositories 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

配置代码库

进入conf文件夹

[root@CentOS modules]# cd /opt/svn/repositories/conf

用户密码配置

[root@CentOS conf]# vi + passwd

修改passwd内容

[users]
# harry = harryssecret
# sally = sallyssecret
username=123456

权限控制authz配置

[root@CentOS conf]# vi + authz

目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

#设置[/]代表根目录下所有的资源 
[/] 
username=rw

服务svnserve.conf配置

[root@CentOS conf]# vi + svnserve.conf

追加以下内容:

[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/opt/svn/repositories

配置防火墙端口

[root@CentOS conf]# vi /etc/sysconfig/iptables

添加以下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

保存后重启防火墙

[root@CentOS conf]# vi /etc/sysconfig/iptables

启动SVN

[root@CentOS conf]# svnserve -d -r /opt/svn/repositories

查看SVN进程

[root@CentOS conf]# ps -ef|grep svn|grep -v grep
root      1755     1  0 19:43 ?        00:00:00 svnserve -d -r /opt/svn/repositories

检测SVN 端口

[root@CentOS conf]# netstat -ln |grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN

停止SVN

[root@CentOS conf]# killall svnserve

测试服务器

# svn co svn://192.168.1.5/test

按提示先输入用户密码,再输入svn的用户名、密码,就可以了。

# cd test
# vim main.c
# svn add main.c 
# svn commit main.c -m "comment"
Adding         main.c
Transmitting file data .
Committed revision 2.  ( 测试提交成功 )

配置SVN服务器的HHTP支持

  1. 创建一个svn用户组,将www-data(apache的默认用户名)加入到svn组中。

  2. 将资源库的owner设成www-datagroup设成svn。下面三条用于修改权限

    sudo chown -R www-data myproject
    sudo chgrp -R svn myproject
    sudo chmod -R g+rwx myproject //这条命令允许用户对版本库进行读写操作,即可以更新,可以提交
    
  3. 确认libapache2-svn已经安装,/etc/apache2/mods-enabled下面有dav.loaddav_svn.loaddav_svn.conf三个文件。

  4. 修改dav_svn.conf文件。去掉下面行的注释。

    <Location /svn>   (apache下的位置)
        DAV svn 
        SVNPath /home/svn/myproject   (指明资源库的路径)
    或
        SVNParentPath /home/svn   (如果有多个库,使用该选项)
        SVNListParentPath on     (打开这个选项可以列出ParentPath下面的所有库)
    
        AuthType Basic   (认证类型为基本认证 )
        AuthName "Subversion Repository"    (认证名称,将在IE界面弹出一个对话框,其标题)
        AuthUserFile /etc/apache2/dav_svn.passwd    (认证密码文件)
        # AuthzSVNAcessFile /etc/apache2/dav_svn.authz     (目录权限文件)
        Require valid-user    (要求验证用户,即不能匿名访问)
    </Location>
    
  5. 通过sudo htpasswd -c /etc/apache2/dav_svn.passwd abc创建用户abc并按照提示设置密码,网页认证的时候使用该用户名和密码登录。后面再添加用户的时候去掉-c选项。

    配好以后就可以通过Http页面来访问SVN了。


Comments

comments powered by Disqus