CentOS 6.5安装SVN

分类:CentOS运维 阅读:93219 次

项目要用SVN来管理,所以需要给服务器要安装SVN,是服务器端的。

这里仅使用svn://协议来访问SVN服务器,不启用sasl。

客户端系统都是Windows,使用起来很简单,这里就不用说了。

SVN是Subversion的简称,是一个开放源代码的版本控制系统。

安装

  1. 检查是否安装了低版本的SVN
  2. #rpm-qasubversion
  3. 卸载旧版本SVN
  4. #yumremovesubversion
  5. 前两步可省略
  6. 安装SVN
  7. #yuminstallsubversion
  8. 检验已经安装的SVN版本信息
  9. #svn--version

创建和配置代码库

创建代码库

SVN软件安装完成后需要建立SVN库

  1. #svnadmincreate/opt/svn/repository

如果目录不存在,svnadmin会建立此目录。执行上面的命令后,将自动建立起repository库,查看/opt/svn/repository文件夹发现包含了conf, db, format, hooks, locks, README.txt等文件,说明一个SVN库已经建立。

进入上面生成的文件夹conf下,有以下几个文件authz, passwd, svnserve.conf。其中authz是权限控制,可以设置哪些用户可以访问哪些目录,passwd是设置用户和密码的,svnserve.conf是设置svn相关操作的。

svnserve.conf

这个文件控制svnserve的配置。包含两个selection:[general]和[sasl],由于不使用sasl,所以仅需要考虑如何设置[general]即可。

  1. [general]
  2. #匿名访问的权限,可为none,read,write
  3. anon-access=none
  4. #授权用户的权限,可为none,read,write
  5. auth-access=write
  6. #密码数据文件的路径,如不以/开头,则为相对路径
  7. password-db=passwd
  8. #访问控制文件的路径,如不以/开头,则为相对路径
  9. authz-db=authz
  10. #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字,不同的代码库需要不同的realm
  11. realm=the1strepository

密码数据文件

  1. [users]
  2. yankz=password

这样就建立了用户yankz,密码是password。可参照此建立多个用户,一行一个。

访问控制文件

[aliases]可以来设置别名,这里没用到;[groups]用来设定小组;其他selection用来设置每个目录的具体权限。

  1. [groups]
  2. admin=yankz,houyf,taoxd,ljying
  3. [/]
  4. yankz=rw
  5. @admin=r
  6. *=
  7. [/ljying]
  8. ljying=rw
  9. @admin=r
  10. *=

这里设置的是thor小组包含四个成员,根目录yankz具有读写权限,admin其他成员具有读权限,其他人没有权限。ljying目录,ljying具有读写权限,admin其他成员具有读权限,其他人没有权限。

启动和停止

执行“svnserve -d -r /opt/svn/repository”就可以启动了,默认使用3690端口。

如果已经有svn在运行,可以换一个端口运行

svnserve -d -r /opt/svn/repository --listen-port 3391

这样配置,每个端口仅有一个版本库,可以通过这种方式运行多个svnserve。

执行“killall svnserve”就停止了所有的svnserve。如果要停止某个svnserve,就先用“ ps -ef | grep svnserve”获取对应的pid,用“kill -9 pid”停止。

多版本库控制

除了通过使用不同的端口来运行多个svnserve,还有另一种方式。

如果svnserve的启动参数-r所指定的目录直接指定到版本库,例如上面的情况,此时一个svnserve只能为一个版本库工作。

如果-r指定到版本库的上级目录,如“svnserve-d-r/opt/svn”,这种情况,一个svnserve可以为多个版本库工作。

使用类似这样的“svn://192.168.0.1/project1” 即可访问project1,这样的“svn://192.168.0.1/project2 ”即可访问project2。

另外,如果某个访问控制文件需要同时对多个版本库进行控制,就应该指定具体的库,每个目录必须写成[版本库的名字:路径]的形式,像这样:

  1. [groups]
  2. admin=user1
  3. [project1:/]
  4. @admin=rw

其他

一、防火墙

# vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存后重启防火墙
# service iptables restart

二、检测SVN端口

# netstat -ln | grep 3690
tcp 0 0.0.0.0:3690 0.0.0.0:* LISTEN