一. 安装
在centos上安装svn非常简单,我们直接使用yum方式进行安装即可,命令如下:
yum -y installinstall subversion httpd mod_dav_svn mod_perl mod_ssl openssl
二. 配置
2.1 创建svn仓库
首先,我们来新建一个max目录用于存储svn仓库,如下:
mkdir -p /data/max
现在我们来创建第一个svn仓库test1,使用如下命令:
svnadmin create/data/max/test1
现在,我们再来创建第二个svn仓库test2,使用如下命令:
svnadmin create/data/max/test2
2.2svn仓库权限配置
svn仓库创建完毕,我们就可以配置svn仓库的访问权限。
svn仓库权限,我们可以进行单独配置,也可以进行统一配置。考虑实际情况,一般会有多个svn仓库,所以我们进行统一配置。
首先,我们创建用于管理所有仓库帐号密码、权限控制等的目录svndata,如下:
mkdir -p/data/svndata/
2.2.1 创建svnserve.conf文件
接下来我们来创建svn仓库权限的总控制文件svnserve.conf,如下:
vi/data/svndata/svnserve.conf
[general]
#未鉴定的用户无权限访问该版本库
anon-access = none
#鉴定后的可读写版本库
auth-access = write
#使用的密码文件是同级路径的passwd文件,即是/data/svndata/passwd
password-db = passwd
#使用的权限控制文件是同级路径的authz文件,即是/data/svndata/authz
authz-db = authz
#realm指定版本库的认证域,即在登录时提示的认证域名称。各个仓库的认证域都可以自定义
realm = svndata
2.2.2 创建passwd文件
svnserve.conf文件创建完毕后,我们来创建用于保存用户和密码的文件passwd,如下:
vi/data/svndata/passwd
[users]
admin = 123456
test1 = 123456
test2 = 123456
test3 = 123456
passwd文件用于存储用户名和密码,其中等号的两边要有一个空格,=前面是用户名和,=后面是密码,密码是明文保存的。
2.2.3 创建authz文件
passwd文件创建后,我们开始创建svn仓库的权限控制文件authz。
注意:权限管理的统一思路是:创建多个组,将各个用户加入到各个组,控制各个组的权限。以后对权限管理就维持在组的维度上,否则以人为粒度管理,会死人滴。
vi/data/svndata/authz
[groups]
develop = test1,test2
android = test3
admin = admin
[test1:/]
@develop = rw
@admin = rw
* =
[test1:/config]
@admin = rw
test1 = r
* =
[test2:/]
@develop = r
@admin = rw
* =
现在这个权限控制是admin用户组,对test1和test2仓库具有读写权限。
develop用户组对test1仓库具有读写权限,对test2具有只读权限,并且develop用户组的test1用户对test1仓库下的config目录只读不能写。
android用户组对svn所有仓库没有任何访问权限。
2.2.4 单独配置svnserve.conf文件
在前面我们说了,要对svn仓库权限进行统一管理。而以上章节中,我们把相关的文件创建完毕后,我们只需要修改每个仓库的svnserve.conf文件,这样就能达到统一管理每个仓库的权限。
1) 修改tset1仓库的svnserve.conf文件,如下:
vi /data/max/test1/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
#说明使用总控制的密码文件
password-db = /data/svndata/passwd
#说明使用总控制的权限文件
authz-db = /data/svndata/authz
realm = test1
2) 修改test2仓库的svnserve.conf文件,如下:
vi/data/ilanni/ilannitest/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
#说明使用总控制的密码文件
password-db = /data/svndata/passwd
#说明使用总控制的权限文件
authz-db = /data/svndata/authz
realm = test2
3) 到此有关svn仓库权限配置已经完毕。
三、使用svn协议访问
svn搭建与配置完毕后,我们现在来访问svn。svn的访问方法有几种,在此我们只介绍最常使用的三种。先来介绍使用svn协议访问的方法。
启动svn,使用如下命令:
svnserve -d -r /data/max/
svn协议使用tcp的3690端口,所以要在防火墙内添加相应的端口放行。
vi /etc/sysconfig/iptables
停止svn,命令如下:
killall svnserve
windows系统使用TortoiseSVN客户端来进行检出测试。
四、使用http访问
要使用http访问svn服务器,我们需要配置apache服务,无论是使用http还是https访问svn,passwd文件都是通过htpasswd命令创建。
在centos上配置apache与svn集成,我们只需要修改apache的配置文件subversion.conf即可。
1) subversion.conf修改内容如下:
vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_modulemodules/mod_dav_svn.so
LoadModule authz_svn_modulemodules/mod_authz_svn.so
<Location /repos>
DAV svn
SVNParentPath/data/max
#一定要放在这行下面,否则会出现权限混乱的现象
AuthzSVNAccessFile/data/svndata/authz
AuthType Basic
AuthName “AuthorizationRealm”
AuthUserFile/data/svndata/passwd
#告诉apache在authfile中所有的用户都可以访问。 如果没有它,则只能第一个用户可以访问新建库。
Requirevalid-user
</Location>
2) subversion.conf文件修改完毕后,我们要重新创建svn的用户和密码文件passwd,但是passed文件我们要使用apache的工具htpasswd进行创建。如下:
htpasswd -cm/data/svndata/passwd admin
htpasswd命令参数中-c是创建passwd文件,-m是使用md5加密。
passwd文件创建完毕后,我们再来添加test1和test2用户,使用如下命令:
htpasswd -m/data/svndata/passwd test1
htpasswd -m/data/svndata/passwd test2
htpasswd -m/data/svndata/passwd test3
3) passwd用户和密码添加完毕后,然后我们在修改/data目录属性,如下:
chown apache:apache-R /data/
4) 以上配置完毕后,我们来重启apache,使用如下命令:
/etc/init.d/httpdrestart
5) 这时如果用客户端来检出,会出现用户和密码验证不过去的问题,这是因为centos的安全机制,只要关闭selinux就可以解决,命令如下:
vi/etc/selinux/config
五.使用https访问
由于https使用的是443端口,所以要先配置防火墙并重启生效,上面已经说过不再重复。
在centos上配置apache与svn集成,我们只需要修改apache的配置文件subversion.conf和ssl.conf即可。对于ssl.conf文件,我们使用默认的即可。但是如果我们要使用自己的ssl证书的话,可以修改ssl.conf文件的SSLCertificateFile和SSLCertificateKeyFile选项即可。如果不使用自己的ssl证书的话,保持该文件默认就行了,如下:
vi/etc/httpd/conf.d/ssl.conf
我们只需要修改subversion.conf文件,添加SSLRequireSSL选项即可。如下:
vi/etc/httpd/conf.d/subversion.conf
这样就可以通过https来访问svn了。
结束!!!