CentOS:svn服务器安装

SVN及相关模块的安装

yum install subversion mod_dav_svn mod_authz_ldap

初始化svn库

mkdir /home/svn
svnadmin create /home/svn/repos

设置Apache的访问权限

chown -R apache.apache repos

然后修改配置文件

vim /etc/httpd/conf.d/subversion.conf

主要修改内容如下:

<Location /svn>
   DAV svn
   SVNParentPath /home/svn
   AuthType Basic
   AuthBasicProvider ldap
   AuthzLDAPAuthoritative off
   AuthLDAPURL "ldap://127.0.0.1:389/dc=riguz,dc=com?uid?sub?(objectClass=*)"
   AuthName "Nice to meet you,but you know..."
   AuthzSVNAccessFile /home/svn/authz.conf
   Require valid-user
</Location>

Svn地址:

http://192.168.1.9/svn/repos

重启Apache 即可

service httpd restart

附注: 若svn提交失败,提示Permission denied,是因为svnadmin创建库时是root用户,导致apache无法访问。解决方式:

chown –R apache.apache /home/svn/documents
chmod 775 /home/svn/documents

SVN权限配置

创建源

初始化svn库

mkdir /home/svn
svnadmin create /home/svn/repos

设置Apache的访问权限

chown -R apache.apache repos

权限配置

研发中心的SVN采用Apache+Ldap配置,用户密码认证采用LDAP,而对于SVN自身的访问权限,采用svn的配置文件进行。

  • svn源父文件夹 /home/svn/
  • svn access file: /home/svn/authz.conf
vim /home/svn/authz.conf

下面是示例配置

prj1=zhangsan, lisi
prj2=wangwu

[projects:/01/]
@prj1=rw
*=

[projects:/02/]
@prj2=rw
*=

[doc:/]
*=r

对于以上配置,那么doc源,都有只读权限;对于projects源下的01和02文件夹,分别只有prj1和prj2两个组能读写

备份

Svn完全备份:

svnadmin dump /home/source/documents –-revision 0:head | gzip >documents.gz

增量备份:

svnadmin dump /home/source/documents –-revision 978:head  --incremental| gzip >documents.gz

将备份拷贝到新服务器上

scp documents.gz root@192.168.1.9:/home/backupfiles

以root身份登录到192.168.1.9,解压备份文件:

gunzip documents.gz

导入svn备份文件: 如果不存在版本库,首先应该创建版本库:

svnadmin create /home/svn/documents
svnadmin load /home/svn/documents < documents

即完成svn迁移。