Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49033
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-19 16:55
个人简介

哈哈

文章分类
文章存档

2014年(5)

我的朋友

分类: LINUX

2014-03-11 23:50:14

SVN服务有多种访问方式,每种对应不同的协议.这里只介绍最基础的SVN基本配置和比较常用的SVN http协议访问.

基本的SVN协议配置

1.在Ubuntu上安装SVN
        apt-get install subversion
虽然也可以用 Tar软件包的方式进行安装,不过在这里强烈建议网络没有问题的话就用 Apt-get, 否则在配置Apache与SVN配合使用时,在 configure 需要加入 --with-apr, --with-apr, --with-ssl 等参数,若基于Tar包的安装不完全,很难卸载,因为编译里面只提供了 make install, 没有 make uninstall. 虽然安装 checkinstall 可以解决 Tar包带来的问题,不过很麻烦.

2.安装完后查看下SVN的版本

点击(此处)折叠或打开

  1. svn --version
  2. svn, version 1.6.17 (r1128011)
  3. compiled Jun 26 2013, 20:44:36
  4. Copyright (C) 2000-2009 CollabNet.
  5. Subversion is open source software, see
  6. This product includes software developed by CollabNet ().
  7. The following repository access (RA) modules are available:
  8. * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  9. - handles 'http' scheme
  10. - handles 'https' scheme
  11. * ra_svn : Module for accessing a repository using the svn network protocol.
  12. - with Cyrus SASL authentication
  13. - handles 'svn' scheme
  14. * ra_local : Module for accessing a repository on local disk.
  15. - handles 'file' scheme
这个是用 apt-get 安装的,相对于用 Tar包默认选项安装的方式,后面多了一个 ra_neon, 这是支持 Http 和 Https的模块,没有这个模块, 将会出现异常问题, 比如我用Tar包安装在 /usr/local/bin 里面的SVN

点击(此处)折叠或打开

  1. $ /usr/local/bin/svn co
  2. svn: E170000: Unrecognized URL scheme for ''
结果无法使用 Http的协议.

3.创建一个SVN文件源的工程
        svnadmin create yourProjectName
创建完这个工程后,会生成 yourProjectName 的目录,这个目录里面很重要的目录是 Conf目录,需要配置的文件都在这个目录下面
几个比较重要的文件
svnserve.conf - 通用配置

点击(此处)折叠或打开

  1. anon-access = none        //匿名用户访问的权限,一般是无
  2. auth-access = write        //SVN用户访问的权限,写即可,另外还有一个参数是 read,不过较少使用
  3. password-db = passwd        //管理用户及用户密码的文件
  4. authz-db = authz            //用户读写权限的设置文件,貌似是 auth-access = write 下进行的更进一步设置
  5. reaml = your project name or something else    //这里什么名字都可以,但这一句一定不能注释掉,否则会出现SVN访问权限问题
  6. # use-sasl = true        //这一句默认是注释掉的,默认值为 false,可以通过 svn --version命令看SASL的认证方式是否支持,如果不了解SASL的话就不要把注释去掉.
authz - 用户读写权限的设置文件

点击(此处)折叠或打开

  1. [groups]
  2. # harry_and_sally = harry,sally
  3. # harry_sally_and_joe = harry,sally,&joe
  4. yourGroupName = yourUserList
  5. [/foo/bar]    //这里的格式可以是 [你的SVN工程名:/],或者是开放工程下面某一部分的权限
  6. harry = rw
  7. &joe = r
  8. * =
  9. # [repository:/baz/fuz]
  10. # @harry_and_sally = rw
  11. # * = r
passwd - 管理用户及用户密码的文件

点击(此处)折叠或打开

  1. # [groups]
  2. yourGroup = yourUserList

  3. [users]
  4. harry = harryssecret
  5. sally = sallyssecretn
基础SVN访问管理的一个缺陷是它的密码是明文写在配置文件里面的,很容易看到

4.启动SVN服务
        svnserve -d -r /home/***/svn/repository
之后就可以用SVN协议访问SVN的了,比如你的工程名是 firstPro, 路径是 /home/svn/, 你的HostName是localhost(这里可以用实际的主机名或者IP代替):
        svn co svn://localhost/firstPro

SVN配合HTTP/HTTPs协议

1.安装
        sudo apt-get install libapache2-svn
你可能还需要安装Apache2软件包

2.创建工程
创建工程的步骤和上面的基础配置一样,也是用 svnadmin 命令
不过创建完以后,要修改工程的所有者和权限以便 Appche2访问
        sudo chown -R www-data:www-data yourProject
        sudo chmod -R ug+rw,o= yourProject

3.编辑Apache2下面SVN模块的配置文件
文件为 /etc/apache2/mods-available/dav_svn.conf, 文件示例:

点击(此处)折叠或打开

  1. <Location /svn>
  2.     DAV svn
  3.     SVNParentPath /home/lhn/svn/repository       //使用户可以访问到最上层的SVN目录
  4.     SVNListParentPath On                        //及它下面的其它工程
  5.     #SVNPath /home/lhn/svn/repository/firstPro
  6.     AuthType Basic
  7.     AuthName "my first repository"
  8.     AuthUserFile /etc/subversion/passwd        //这个文件初始并不存在,在增加用户时生成
  9.     #<LimitExcept GET PROPFIND OPTIONS REPORT>    //假如不注释看这一行,则会支持匿名访问
  10.     Require valid-user
  11.     #</LimitExcept>
  12. </Location>

4.启动SVN服务
        sudo /etc/init.d/apache2 restart
如果出现下面的警告(也可不理会)

点击(此处)折叠或打开

  1. Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
可在/etc/apache2下面的httpd.conf 或者 apache2.conf 文件加入一行, 推荐与HostName相同
        ServerName name
之后重启SVN服务

5.添加用户
        sudo htpasswd -c /etc/subversion/passwd user_name
-c 用于创建 密码文件,如果已经存在可去掉这个参数
之后就可以用 Http协议访问了,命令格式为
        svn co [myproject] [--username user_name]

6.使用Https协议
        sudo a2enmod ssl
        sudo a2ensite default-ssl
        sudo /etc/init.d/apache2 restart
命令很简单,只是多加一个 SSL协议加密, 这里默认的认证文件 default-ssl 可以用自己生成的认证文件替换.
具体请参考: 
关于Http与SVN的详细步骤也可参考:

阅读(1253) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~