Linux系统搭建SVN服务

一.在服务器上配置Subversion

[root@localhost ~]# mkdir /opt/svn

[root@localhost ~]# cd /opt/svn

[root@localhost svn]# svnadmin create test                     //建立一个新的版本库test

[root@localhost svn]# ls

test

[root@localhost svn]# ls test

conf  dav  db  format hooks  locks  README.txt

     conf--存放权限配置

     dav--提供给apache和mod_dav_svn存储内部数据

     db--所有版本控制的数据文件

     format--文本文件,内容为一个整数,表示当前文件库的版本号

     hook--放置hook脚本文件

     locks--存放subversion文件库锁定数据,用来追踪存取文件库的客户端

#这里有个db目录,其中的每个文件是以版本号命名的(文件名为:0,1,2,3...)。0文件记录版本号为0时svn中的数据的状态,版本号1就记录与版本号0相比,文件和目录修改的情况。每个文件都是记录当前版本与上一个版本相比较所不同的情况。而且这些文件是以特殊的形式存储,并不是以普通文件格式存在。

[root@localhost svn]# ls test/conf

authz passwd svnserve.conf      //conf目录下的三个最主要的配置文本文件

     authz--权限配置文件

     passwd--用户名口令文件

     svnserve.conf--svn服务配置文件

配置svnserve.conf文件

[root@localhost conf]# vim svnserve.conf    #文件中非注释行要顶格写,否则会出错

    [general]                       #该文件仅由一个[general]配置段组成

        anon-access = none            #anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。

                                                    #即"write"为可读可写,"read"为只读,"none"表示无访问权限。

        auth-access = write              #控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。

        password-db = passwd        #指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf,目录的相对路径。

        authz-db = authz                  #指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,

                                                    #否则文件位置为相对conf目录的相对路径。

  realm = test               #指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。

配置允许访问的用户

[root@localhost conf]# vim passwd

[users]                                #该文件仅由一个[users]配置段组成

test1 = 123456                     #用户名和口令设置,用户名test,口令123456

test2 = 123456

配置用户访问权限

[root@localhost conf]# vim authz

[groups]

test = test1,test2       #定义了一个用户组test,该用户组包含两个用户, 1个用户组可以包含1个或多个用户,用户间以逗号分隔。

[test:/]                       #版本库"test"中路径"

@test = rw                 #只有用户组"test"有读写权限,其他用户只有可读权限, @<用户名> = <权限>

* =                              #禁止其他用户访问

启动svn服务

[root@localhost conf]# svnserve –d –r /opt/svn/test

[root@localhost conf]# netstat –ntlp              //检测服务是否开启,查看3960端口是否开启

     此时一个简单的svn服务器已经配置好了。在/opt/svn/test/conf/目录下的三个文件保存后就会立即生效,不需要重启svnserve服务。但这三个文件只对svnserve服务有效,即客户端只能通过前缀为svn://或svn+ssh://的URL才能访问版本库。

二.基于apache的svn服务器配置 

     在 Subversion 和 Apache 中可以使用相同的授权文件authz,但无法使用相同的 passwd 文件,因为 Apache 是以加密方式存储密码,而 Subversion 使用明文储存密码,所以/opt/svn/test/conf/passwd文件只对subversion有用。
     利用apache与subversion通信,需要用到两个模块mod_dav和mod_dav_svn,确定/etc/httpd/modules/目录下有mod_dav_svn.so和mod_authz_svn.so模块,
在/etc/httpd/conf/httpd.conf文件中:

                 找到以下两句取消注释:

                #LoadModule dav_fs_module modules/mod_dav_fs.so
                #LoadModule dav_module modules/mod_dav.so

                并增加以下两句

                 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/                      #版本库路径
                AuthType Basic                                  #认证类型为基本认证  
                AuthName "Subversion repository"     # 认证名称 将在 IE 界面弹出一个对话框 其标题就是Subversion repository
                AuthUserFile /opt/svn/passwd             #用户认证文件路径
                AuthzSVNAccessFile /opt/svn/auth.conf           #用户访问授权文件路径
                Require valid-user                                     #要求验证用户,不能匿名访问
                </Location>
    这里是在/etc/httpd/conf/httpd.conf文件中修改的,但也可以不修改该文件,而是修改/etc/httpd/conf.d/subversion.conf文件,配置方法和httpd.conf一样。
      完成以上配置,创建用户认证文件和授权文件:
[root@localhost conf]# cp authz /opt/svn/auth.conf -p
    /opt/svn/auth.conf是通过apache访问svn要用到的认证文件,配置和上面一样。
passwd文件需要通过命令来创建:
[root@localhost conf]# htpasswd -cm /opt/svn/passwd test1         #创建用户文件命令;第一次生成该文件使用,-m使用md5加密方法
    New password:                      #输入密码,不会显示
    Re_type new password:        #重复输入密码
    Adding password for user tset1         #添加用户密码成功
[root@localhost conf]# htpasswd -m /opt/svn/passwd                  #第二次创建用户命令
全部配置完后,重启apache服务:
[root@localhost conf]# service httpd restart
停止 httpd:                                                   [确定]
启动 httpd:                                                   [确定]
在客户端就可通过前缀为http://的URL来访问svn服务器了。
三.基于apache的svn服务器配置 ,使用mysql实现用户认证
之前的用户认证信息都是通过文件的形式存放,使用mysql可以更加安全的保护用户信息。
apache要与mysql通信需要mod_auth_mysql.so模块,确保/etc/httpd/modules/目录下存在该模块
配置/etc/httpd/conf/httpd.conf或/etc/httpd/conf.d/subversion.conf文件:
               #若/etc/httpd/conf.d/auth_mysql.conf中没有以下一行,则添加
               LoadModule mysql_auth_module modules/mod_auth_mysql.so
               #修改文件最后刚添加的几行:
                <Location /svn/>
                DAV svn                                              #引用远程访问模块
                SVNParentPath /opt/svn/                      #版本库路径
                AuthType Basic                                  #认证类型为基本认证  
                AuthName "Subversion repository"     # 认证名称 将在 IE 界面弹出一个对话框 其标题就是Subversion repository
                AuthzSVNAccessFile /opt/svn/auth.conf           #用户访问授权文件路径
                Require valid-user                                     #要求验证用户,不能匿名访问
                AuthMYSQLEnable on                                    #使用mysql
                AuthMYSQLUser root                                    #访问mysql的用户名root
                AuthMYSQLDB svn                                    #用于用户验证的数据库名为svn
                AuthMYSQLUserTable users                                    #用户验证的数据库表名为users
                AuthMYSQLNameField user_name                                    #数据库表中的用户名字段
                AuthMYSQLPasswordField user_passwd                                    #数据库表中的密码字段
                </Location>
授权文件的配置按照之前的就可以了。下面就是启动mysql数据库,创建用户名和密码
[root@localhost ~]# service mysqld start
初始化 MySQL 数据库:                                       [ 确定]
启动 MySQL                                               [ 确定 ]
[root@localhost ~]# mysql -u root -p                   #以root用户登陆mysql,初始不用密码
mysql> create database svn;              #创建数据库svn
mysql> use svn                         #进入svn数据库
mysql> create table users( user_name char(30) not null, user_passwd char(30) not null, primary key (user_name) );                            #创建表users
mysql> grant select on svn.users to root@localhost identified by 'passwd';         #修改数据库权限
mysql> flush privileges;                            #使权限生效
mysql> insert into users values ('test1',encrypt('123456'));             #创建用户test1
mysql> insert into users values ('test2',encrypt('123456'));                           #创建用户test2
mysql> \q                 #退出
按照以上配置完成后,重启mysqld和httpd服务:
[root@localhost ~]# service mysqld restart
[root@localhost ~]# service httpd restart
在客户端就可以使用在数据库中创建的用户来访问svn服务器,以前缀为http://的URL。
这里只是简单的配置svn服务器,没有实现ssl加密。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值