1、安装SVN server
sudo apt-get install subversion
2、创建数据仓库
svnadmin create /home/svn/qasvn svnadmin create /home/svn/test 可以根据需要建立不同的数据仓库
3、启动svn网络服务
svnserve -d -r /home/svn 其中 -d 参数让 svnserve 运行在后台,-r 参数限定了数据仓库,在网络上可以访问的地址。 /home/svn指定svn数据仓库存放的目录位置
4、设置svn: 方式的访问权限
在每个数据仓库目录下都有一堆目录,进入 conf 并打开 svnserve.conf 这个文件,找到以下几行, 并把前面的注解符号 ‘#’ 去掉,注意千万在每行的前面别留任何空格。 anon-access = read auth-access = write password-db = passwd
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限。
但如果想拒绝匿名用户的访问,只需把 anon-access的read 改成 none 就能达到目的。 password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在 同一个目录,下面看看怎么配置 passwd文件中的内容。 [user] # harry = harryssecret # sally = sallyssecret harry 和 sally 这两行分别定义了可以对 repo 进行写入的用户的用户名和密码。我们可以在下面加上 自己的用户名和密码,比如 testsvn = tester 这样就给了用户 testsvn 往 repo 中写的权限。存盘退出后,svn 服务器就算正式可以运行了!
把所有需要管理的项目都放在 /home/svn这个目录下,像正常那样用 svnadmin create 命令建立数据 仓库这样就可以使用svn客户端通过svn://地址/数据仓库目录 的方式访问各个数据仓库了
5、在Apache 中部署Subversion
安装启用mod_dav 和 mov_dav_svn 这两个模块 sudo apt-get install libapache2-svn
确定 mod_dav 和 mod_dav_svn 被打开 a2enmod dav dav_svn
修改 /etc/apache2/conf 下的 httpd.conf,加入如下代码:DAV svn SVNParentPath /home/svnproject 这样就可以通过 http://地址url/svn 访问/home/svnproject下的数据仓库了
SVNParentPath和SVNPath的区别
SVNParentPath:支持多个具备相同父目录的Subversion版本库。 SVNPath:只支持一个父目录的Subversion版本库
SVNPath /svn/repository/project1 #如果你想对每个项目单独配置,使用该项
SVNParentPath /svn/repository #设定一个根,所有项目均放在此目录下
6、设定用户的权限和验证
htpasswd -cmb /home/passwdfile/passwords user1 pass1 注意/home/passwdfile这个目录必须存在 当再次添加一个用户和密码时,htpasswd命令就无须加'-c'参数了,'-c'代表新建一个文件,如果再次添 加用户时,又加了-c 则上一个用户将被覆盖掉
然后回到我们在 httpd.conf 中添加的代码,修改一下:DAV svn SVNParentPath /home/svn AuthType Basic AuthName "Test Repository" AuthUserFile /home/passwdfile/passwords Require valid-user
最后,你需要把 repo 所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。在 Ubuntu 中,这个用户叫 www-data sudo chown -R www-data /home/svnproject