CentOS 6.5安装配置SVN

来源:互联网 发布:手机用windows系统 编辑:程序博客网 时间:2024/05/20 11:50

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

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

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

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


安装

检查是否安装了低版本的SVN# rpm -qa subversion卸载旧版本SVN# yum remove subversion前两步可省略安装SVN# yum install subversion检验已经安装的SVN版本信息# svn --version

创建和配置代码库


创建代码库


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

# svnadmin create /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]即可。

[general]#匿名访问的权限,可为none,read,writeanon-access = none#授权用户的权限,可为none,read,writeauth-access = write#密码数据文件的路径,如不以/开头,则为相对路径password-db = passwd#访问控制文件的路径,如不以/开头,则为相对路径authz-db = authz#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字,不同的代码库需要不同的realmrealm = the 1st repository

密码数据文件

[users]yankz = password

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


访问控制文件


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

[groups]admin = yankz,houyf,taoxd,ljying[/]yankz = rw@admin = r* =[/ljying]ljying = rw@admin = r* =

这里设置的是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只能为一个版本库工作。

现在某目录下通过svnadmin create创建多个版本库,并-r指定到这些版本库的上级目录,如“svnserve -d -r /opt/svn”,这种情况,一个svnserve可以为多个版本库工作。

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

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

[groups]admin = user1[project1:/]@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


参考文献


《Centos搭建SVN服务器三步曲》

http://www.blogjava.net/nkjava/archive/2011/08/29/357502.html

《权限文件authz配置》

http://www.dwz.cn/uRhd3

《我自己的思考》

http://blog.csdn.net/liuyuan185442111





0 0
原创粉丝点击