之前由于要管理项目组的文档,所以就想在linux下搭建一个svn平台,于是我就在网上找资料,并按照步骤搭建了一个SVN,结果老是出现一个 authentication failed的错误,经过一个下午的努力,终于让我找出了错误的原因,一个非常奇怪的原因。我先说说我的搭建方法,然后再说说错误的原因: 一般来说,subversion服务器可以用两种方式架设: 一种是基于svnserve,svnserve作为服务端; 一种是基于Apache,用apache作为服务端。关于Apache模式的配置方法见http://wiki.iusesvn.com/index.php/Subversion%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%A4%E7%A7%8D%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F%E6%89%80%E7%94%A8%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%8F%8A%E6%A0%BC%E5%BC%8F 由于我搭建svn的这个实例上没有Apache,所以我用的第一种方法搭建的(其实用第二种方法原理也是差不多的,我等下会附上配置)。 我的系统为ubuntu server 12.04(其实只要是linux内核的,搭建步骤都差不多,至多有apt-get yum 或者源码安装的区别,这点大家不用担心)(以下所有安装步骤最好在root权限下) 1.在终端中直接输入 sudo apt-get install subversion,选择安装即可
2.(可选)看版本命令 svnserve --version。如果出现下面图片,说明安装成功 ![]() 图片1 3.添加svn管理用户和subversion组(这步很重要,不然也会导致authentication错误) sudo adduser svnuser(添加svnuser用户) sudo addgroup subversion(添加subversion组) sudo addgroup svnuser subversion 4.开始创建项目目录 sudo mkdir /home/svn (这里的svn即为版本库目录文件,以后所有的操作都在/home/svn下 cd /home/svn mkdir one(这里即为一个版本库文件,文件名可以任意取) chown -R root:subverison one chmod -R g+rws one 5.创建SVN文件仓库,即为上面建立的one文件目录 svnadmin create /home/svn/one 到这一步,安装基本完成,开始改配置。 6.在/home/svn/one文件目录中可以看到conf文件夹,可针对conf文件夹中的authz、passwd、 svnserve.conf进行设置,svnserve.conf主要设置整体的安全策略,passwd则设置用户名和密码,authz则是设置具体的用 户有什么权限。 7.访问权限设置 (1)编辑svnserve.conf文件,编辑svnserve.conf文件。 anon-access:匿名用户的权限,可以为read,write和none,默认值read。不允许匿名用户访问:anon-access = none 这是每个用户的密码文件,比较简单,就是“用户名=密码”,采用的是明码。如allen=1(apache模式下密码为经过加密的变化) [users] (3)编辑authz文件,配置用户访问权限(如下为示例) 1. [groups] section:为了便于管理,可以将一些用户放到一个组里边,比如:owner=allen,ellen 8.启动svn服务 svnserve -d -r -T /home/svn 描述说明: -T表示以线程模式运行,增加效率 这个时候SVN就安装完成了。 然后在WINDOW下面安装客户端tortoise SVN(可能这里大家要问,为什么客户端要安装在WINDOWS下面,因为毕竟很多程序员调试代码都是在WINDOWS下面,而且查看代码什么的都是WINDOWS下面方便)。 9.这时候可以在客户端用用户名和密码登陆使用了,这里大家都会。 这个时候输入密码的时候就很有可能遇到authentication failed的提示。如下图所示: ,让我纠结了很久的一个问题 后来发现问题的原因是passwd文件中所有行前面都不能有空格,如果有空格的话就会提示这个错误。 总之,大家在配置的过程一定要注意authz passwd svnserve.conf文件所有行的前面都不能有空格;注意建立svn管理用户和组;另外注意单仓库和多仓库权限的配置问题和它们的访问路径问题。 这样的话,基本上就可以正常地享受SVN之旅了。 谢谢大家。有问题大家可以一起交流学习。 (19890826) |