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的版本
-
svn --version
-
svn, version 1.6.17 (r1128011)
-
compiled Jun 26 2013, 20:44:36
-
-
Copyright (C) 2000-2009 CollabNet.
-
Subversion is open source software, see
-
This product includes software developed by CollabNet ().
-
-
The following repository access (RA) modules are available:
-
-
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
-
- handles 'http' scheme
-
- handles 'https' scheme
-
* ra_svn : Module for accessing a repository using the svn network protocol.
-
- with Cyrus SASL authentication
-
- handles 'svn' scheme
-
* ra_local : Module for accessing a repository on local disk.
-
- handles 'file' scheme
这个是用 apt-get 安装的,相对于用 Tar包默认选项安装的方式,后面多了一个 ra_neon, 这是支持 Http 和 Https的模块,没有这个模块, 将会出现异常问题, 比如我用Tar包安装在 /usr/local/bin 里面的SVN
-
$ /usr/local/bin/svn co
-
svn: E170000: Unrecognized URL scheme for ''
结果无法使用 Http的协议.
3.创建一个SVN文件源的工程
svnadmin create yourProjectName
创建完这个工程后,会生成 yourProjectName 的目录,这个目录里面很重要的目录是 Conf目录,需要配置的文件都在这个目录下面
几个比较重要的文件
svnserve.conf - 通用配置
-
anon-access = none //匿名用户访问的权限,一般是无
-
auth-access = write //SVN用户访问的权限,写即可,另外还有一个参数是 read,不过较少使用
-
password-db = passwd //管理用户及用户密码的文件
-
authz-db = authz //用户读写权限的设置文件,貌似是 auth-access = write 下进行的更进一步设置
-
reaml = your project name or something else //这里什么名字都可以,但这一句一定不能注释掉,否则会出现SVN访问权限问题
-
# use-sasl = true //这一句默认是注释掉的,默认值为 false,可以通过 svn --version命令看SASL的认证方式是否支持,如果不了解SASL的话就不要把注释去掉.
authz - 用户读写权限的设置文件
-
[groups]
-
# harry_and_sally = harry,sally
-
# harry_sally_and_joe = harry,sally,&joe
-
yourGroupName = yourUserList
-
-
[/foo/bar] //这里的格式可以是 [你的SVN工程名:/],或者是开放工程下面某一部分的权限
-
harry = rw
-
&joe = r
-
* =
-
-
# [repository:/baz/fuz]
-
# @harry_and_sally = rw
-
# * = r
passwd - 管理用户及用户密码的文件
-
# [groups]
-
yourGroup = yourUserList
-
-
[users]
-
harry = harryssecret
-
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, 文件示例:
-
<Location /svn>
-
DAV svn
-
SVNParentPath /home/lhn/svn/repository //使用户可以访问到最上层的SVN目录
-
SVNListParentPath On //及它下面的其它工程
-
#SVNPath /home/lhn/svn/repository/firstPro
-
AuthType Basic
-
AuthName "my first repository"
-
AuthUserFile /etc/subversion/passwd //这个文件初始并不存在,在增加用户时生成
-
#<LimitExcept GET PROPFIND OPTIONS REPORT> //假如不注释看这一行,则会支持匿名访问
-
Require valid-user
-
#</LimitExcept>
-
</Location>
4.启动SVN服务
sudo /etc/init.d/apache2 restart
如果出现下面的警告(也可不理会)
-
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) |