首先,下载subversion。
yum install subversion
我们可以查看一下svn服务的版本。
svnserve --version
然后可以准备一个位置进行保存svn项目,并做统一化管理。
[root@VM_0_7_centos /]# mkdir application
[root@VM_0_7_centos /]# mkdir /application/data
[root@VM_0_7_centos /]# mkdir /application/conf
//因为是测试学习,所以我给了所有的权限。实际使用因为降低权限.
[root@VM_0_7_centos /]# cd application/
[root@VM_0_7_centos application]# ll
total 8
drwxrwxrwx 2 root root 4096 Nov 7 21:01 conf
drwxrwxrwx 2 root root 4096 Nov 7 21:01 data
[root@VM_0_7_centos application]#
创建一个仓库。svnadmin create projectName 命令。
//命令行是svnamdin create projectName
//实例中 jen_boot就是一个项目名。
[root@VM_0_7_centos data]# svnadmin create jen_boot
其中conf是仓库的参数配置,hooks是项目的钩子计划配置。
先将conf中的authz,passwd,svnserve.conf复制到前面的conf文件夹中。
[root@VM_0_7_centos jen_boot]# cd conf/
[root@VM_0_7_centos conf]# ll
total 12
-rw-r--r-- 1 root root 1080 Nov 7 21:05 authz
-rw-r--r-- 1 root root 309 Nov 7 21:05 passwd
-rw-r--r-- 1 root root 3090 Nov 7 21:05 svnserve.conf
[root@VM_0_7_centos conf]# cd ../
[root@VM_0_7_centos jen_boot]# cp conf/* /application/conf/
[root@VM_0_7_centos jen_boot]# cd ../../conf/
[root@VM_0_7_centos conf]# ll
total 12
-rw-r--r-- 1 root root 1080 Nov 7 21:10 authz
-rw-r--r-- 1 root root 309 Nov 7 21:10 passwd
-rw-r--r-- 1 root root 3090 Nov 7 21:10 svnserve.conf
然后对passwd进行配置,这个是配置用户和密码。
然后配置用户权限文件authz。
//配置单个项目,也可以使用url进行部分文件的配置。
[jen_boot:/]
//matthew用户有读写权限
//其余用户没有权限
matthew = rw
* =
然后修改svnserve.conf。
[general]
###注释.....
anon-access = none
###注释.....
auth-access = write
###注释.....
password-db = passwd
###注释.....
authz-db = authz
启动svn。
//启动不是到具体的仓库,而是仓库的上一层。
//使用--config-file=**实现指定对应的配置文件。
svnserve -d -r /application/data/ --config-file=/application/conf/svnserve.conf
现在开始测试。
至此,svn多仓库服务就部署成功了,后面对用户和权限的管理只需要个性化就行了。
配置开机自启动。
vim /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"
~
~
~
将OPTIONS="-r /var/svn"改成自己项目的位置就行了。
总结:
svn的部署其实很简单,只是我们要注意项目的多仓库统一配置应该考虑使用统一的svnserve.conf不然就要使用多个端口进行监听,得不偿失。
使用一个文件的配置就应该使用--config-file对文件进行指定。很多很简单学习真的是亲自动手,经验决定了难度啊。加油!