在CentOS6.5上部署SVN服务器(一)——svnserve篇

关于SVN,这里有详细介绍:http://www.oschina.net/p/subversion

1. 环境

OS:CentOS 6.5 x86_64

IP:192.168.11.243,可连接外网。

2. 安装SVN

使用yum来安装SVN:

[root@localhost ~]# yum install subversion
...(中间省略)...
Is this ok [y/N]: y

选择y,yum将为你安装subversionperl-URI两个包。

Installed:
subversion.x86_64 0:1.6.11-10.el6_5
Dependency Installed:
perl-URI.noarch 0:1.40-2.el6 

验证:

[root@localhost ~]# svnserve --version
svnserve, version 1.6.11 (r934486)
...(以下省略)

3. 配置SVN

[root@localhost ~]# mkdir /svn                     #创建SVN数据文件目录
[root@localhost ~]# svnadmin create /svn/project   #创建一个名为project的仓库(项目)

执行完以上命令后将在/svn/project目录下创建多个文件和目录,让我们看下它们的结构:

/svn/project
├── conf                                                #目录:存放配置文件
│   ├── authz                                                 ##设置用户的权限
│   ├── passwd                                                ##设置用户、密码
│   └── svnserve.conf                                         ##设置SVN的相关操作
├── db                                                  #目录:存放所有的版本数据
│   ├── current
│   ├── format
│   ├── fsfs.conf
│   ├── fs-type
│   ├── min-unpacked-rev
│   ├── rep-cache.db
│   ├── revprops
│   │   └── 0
│   │       └── 0
│   ├── revs
│   │   └── 0
│   │       └── 0
│   ├── transactions
│   ├── txn-current
│   ├── txn-current-lock
│   ├── txn-protorevs
│   ├── uuid
│   └── write-lock
├── format                                            ##存放一个整数,表示当前文件库配置的版本号
├── hooks                                            #目录:放置hook脚本文件
│   ├── post-commit.tmpl
│   ├── post-lock.tmpl
│   ├── post-revprop-change.tmpl
│   ├── post-unlock.tmpl
│   ├── pre-commit.tmpl
│   ├── pre-lock.tmpl
│   ├── pre-revprop-change.tmpl
│   ├── pre-unlock.tmpl
│   └── start-commit.tmpl
├── locks                                              #目录:用来放置subversion锁定数据的目录
│   ├── db.lock
│   └── db-logs.lock
└── README.txt

4. 添加用户

[root@localhost ~]# vim /svn/project/conf/passwd

[users]

# harry = harryssecret

# sally = sallyssecret

plutonji = 123456

lanthir = abcdef

添加用户很简单,只需在/svn/project/conf/passwd文件下增加行,一行一个用户,格式为username = password。这里我增加了两个用户plutonji和lanthir。

5. 修改用户访问策略

[root@localhost ~]# vim /svn/project/conf/authz

[aliases]

[groups]

p_and_l = plutonji,lanthir

[project:/]

plutonji = rw

@p_and_l = r

* =

我们注意authz这个文件的内容。

[aliases]下的内容可以设置别名,我们这里没有设置;[groups]下可以设置用户组,我们创建了p_and_l组,并将plutonjilanthir放入其中;[project:/]指的是project这个仓库的根目录,里面设置用户或组访问该目录的权限,权限有三种:rw读写,r只读,空值表示无读或写权限。=号前为用户或组,如果是组则要在组名前加@,如果是所有用户则是*

6. 修改svnserve.conf文件以使设置生效

[root@localhost ~]# vim /svn/project/conf/svnserve.conf

[general]

anon-access = none

auth-access = write

password-db = password

authz-db = authz

svnserve.conf文件用来控制svnserve这个进程的设置,它分为两个模块:[general][sasl],我们只需将[general]下几个参数前的注释去掉。特别注意我们将anon-access的参数值修改为了none,这个设置项决定匿名用户的读写权限,下面的auth-access决定通过验证的用户权限。password-dbauthz-db使用默认值。realm只有在有多个仓库时才会用到,这里我们先不去动它。[sasl]下设置是否使用Cyrus SASL的认证方式,细心的朋友在第2步执行svnserve --version这个命令的时候应该会注意到最后一行有一句话:

Cyrus SASL authentication is available.

就是说我们可以使用Cyrus SASL认证方式来做用户认证。这里我们不使用,所以不需修改[sasl]的任何配置。对SASL感兴趣的朋友可以自行google一下。

7. 防火墙和启动SVN服务

7.1 防火墙

到这里,基本的SVN服务器已经搭建好了,接下来只要在防火墙上打开端口、启动SVN服务就能让plutonji和lanthir使用了:

[root@localhost ~]# vim /etc/sysconfig/iptables

新增一行:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT(默认端口是3690)

7.2 手动启动svnserve服务

[root@localhost ~]# svnserve -d -r /svn

-d是说让svnserve以守护进程的方式启动;-r后接SVN的主目录,这样我们只需访问svn://192.168.11.243/project就可以了。

7.3 设置开机自动启动

首先修改svnserve的启动脚本:/etc/init.d/svnserve

[root@localhost ~]# vim /etc/init.d/svnserve

找到以下这行args="--daemon --pid-file=${pidfile} $OPTIONS",这一行是svnserve的启动参数,我们在里面加上--root /svn,其含义就是上面手动启动服务时的-r /svn

完整的一行为:args="--daemon --root /svn --pid-file=${pidfile} $OPTIONS"

这样,服务器端的配置就基本完成了。

8. 使用TortoiseSVN连接仓库

我们用Windows下的TortoiseSVN客户端来连接这个仓库。到http://tortoisesvn.net/downloads.html下载相应的版本并安装。

安装完成后,我们可以看到在Windows资源管理器里右击鼠标会多出来两个和SVN有关的选项:TortoiseSVN at Explorer

我们在D盘新建SVN文件夹,在SVN下再建立project文件夹,打开project文件夹,空白处右击鼠标,选择TortoiseSVNImport...,在URL of repository下输入svn://192.168.11.243/project,点击OK,然后输入用户名密码后,再空白处右击鼠标,选择SVN Checkout...,OK后即可。

更多有关TortoiseSVN客户端的使用这里不再详述。

至此,一个简单的SVN服务器已经搭建成功,对于一个小团队来说已经够用。更多用法,如http方式,等我琢磨完了再来写吧!

你可能感兴趣的:(SVN)