您的位置:首页 > 运维架构 > Linux

linux下svn服务器搭建及使用(包含图解)

2016-01-11 20:51 441 查看
  今天自己动手在linux搭建了svn服务器,把具体过程和一些自己的见解分享给大家,希望对大家有所帮助。

  客户端svn(大家见到的小乌龟)下载地址为:http://tortoisesvn.net/downloads.html。这里客户端的安装就不作详解了,接下来直接进入服务端的安装~

1)安装svn服务器

# yum install subversion




2)创建一个目录用来存放所有的svn版本库(后期客户端更新时,有优势,后面会提到)

# mkdir /svn




3)在svn目录下创建一个版本库 repositoryA

# svnadmin create /svn/repositoryA




4)查看并分析生成的文件

# ls /svn/repositoryA




conf目录:版本库的配置文件,包含用户访问账号、权限等
db目录:存放数据
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号(可以用vi打开看一下)
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
README.txt文件:说明文档


5)修改svnserve.conf 配置文件

# vi /svn/repositoryA/conf/svnserve.conf






打开并修改下面几个注释(或者直接添加,原来的注释就不用打开)
[general]  # 如果是直接添加到最后面,不要忘记加这条,否则客户端更新的时候会不用权限直接检出,提交时又报没权限
anon-access = none # 匿名不可读写,可以为write,read,none,默认为read,建议为none
auth-access = write # 验证用户可读写
password-db = /svn/repositoryA/conf/passwd # 指向用户名和密码的数据文件,地址不要写错,不然会报authorization failed
authz-db = /svn/repositoryA/conf/authz # 指向用户的权限配置文件,地址不要写错,不然会报authorization failed
realm = repositoryA         #客户端检出时,提示信息
保存退出:wq(我是linux小白,进入编辑后不会退出。。。 按Esc后,输入 : ,再输入wq即可)


6)添加访问用户及密码

# vi /svn/repositoryA/conf/passwd






testUser1 = 123456 # 前面是用户名,后面是密码
testUser2 = 123456 # 这里建两个用户,为了说明配置权限时,可以分组管理
保存退出: wq


7)管理用户权限

# vi /svn/repositoryA/conf/authz






[groups]
admin = testUser1,testUser2    # 可以通过一个变量管理多个权限一样的用户,用户之简用逗号“,”隔开
[/]                # 这里 / 表示对根目录(即/svn/ProjectA目录)下的所有子目录范围设置权限;
@admin = rw                 # rw表示可读写, r表示只读
* =                         # 这一行很重要,表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,

如果有多个groups,要先把用户分组变量全部赋值,比如
admin = testUser1
art = testUser2
后面再分组给权限
[/]
@admin = rw
[/]
@art = rw

而不能将用户分组变量分开写
admin = testUser1
[/]
@admin = rw

art = testUser2
@art = rw

这样检出的时候会提示配置错误


8)开启svn服务

到这里,我们已经完成了svn服务端软件的下载,创建了版本库,并添加了用户以及相应的权限,最后我们只要开启svn服务即可。

这这里我们要考虑后期添加新的版本库问题,这里提供两种方法开启svn服务。

第一种: 直接开启对应的版本库,一个端口指向一个版本库(默认svn对应的端口为3690)

#svnserve -d -r /svn/repositoryA




这时重复2-7步,再添加一个版本库repositoryB。这里用

#svnserve -d -r /svn/repositoryB


  开启版本库repositoryB时,会提示svnserve: Can’t bind server socket: Address already in use

因为svn默认使用的端口是3690,而之前在开启版本库repositoryA已经使用,所以这里提示已经使用

所以我们应该换个端口,这里假设端口3691未被使用,则可以使用

#svnserve -d -r /svn/repositoryB--listen-port 3691


注意: 这时客户端检出时,只要指定端口,就能检出对应的版本库,因为

svn://192.168.100.50:3690 对应 服务端的 /svn/repositoryA目录

svn://192.168.100.50:3691 对应 服务端的 /svn/repositoryB目录

(这里192.168.100.50是服务端的ip,你们根据自己服务器信息填写ip)



第二种: 开启版本库所在的目录(建议使用这种)

#svnserve -d -r /svn/


这时在客户端检出的时候,不用关心端口(默认3690),只要加入对应的版本库名就可以了,因为

svn://192.168.100.50:3690 对应 服务端的 /svn目录

svn://xxx.xxx.xxx.xxx/repositoryA
svn://xxx.xxx.xxx.xxx/repositoryB


补充:这里每个版本库都用自己的配置,每增加一个版本库就要重新配置一份,显然不够便捷,下次补充如何让多个版本库共用一份配置

svn 相关命令补充 :

查看svn程序监听的所有端口以及PID信息:

netstat -anp |grep svn


查看svn进程信息:

ps -ef|grep svnserve


杀死svn进程:(根据上面查看svn进程信息,根据进程ID杀死指定进程)

kill -9 PID
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: