你好,游客 登录 注册 搜索
背景:
阅读新闻

Ubuntu 14.04下搭建SVN服务器

[日期:2016-07-17] 来源:Linux社区  作者:lttx [字体: ]

工作环境:

Server端:系统 Ubuntu 14.04 64bit

Client端:系统Windows 10 64bit,Tortoise 1.9.3.27038

服务器端安装流程:
安装svn:sudo apt-get install subversion
创建svn仓库: mkdir /home/.svn(使用隐藏目录)

cd /home/.svn
mkdir repos1
sudo svnadmin create /home/.svn/repos1(创建仓库repos1,执行成功后repos1目录下有svnadmin创建的目录和文件)
mkdir repos2
sudo svnadmin create /home/.svn/repos2(创建仓库repos2,执行成功后repos2目录下有svnadmin创建的目录和文件)
配置和管理svn(repos1和repos2是两个独立的仓库,配置过程相似,我们以repos1进行说明) 配置/home/.svn/repos1/conf/svnserve.conf 文件,vim svnserve.conf,配置[general]下的参数 掉以下几行的“#”,并根据需要进行权限设置

anon-access:匿名用户的权限,可以为read,write和none,默认值read。不允许匿名用户访问:anon-access = none
auth-access:认证用户的权限,可以为read,write和none,默认值write
password-db:密码数据库的路径,去掉前边的#
authz-db:认证规则库的路径,去掉前边的#。
注意:
这些配置项的行都要顶格,否则会报错。修改配置后需要重启svn才能生效。
之前犯了一个错误,误将groups-db = groups(设置权限的文件),但是conf路径下没有响应文件,一直报错,连不上svn
realm = repos,realm作用是定义登陆授权文件路径,单个repository尽量不要使用,容易跟authz中的路径产生歧义。
配置/home/.svn/repos1/conf/passwd 文件,vim passwd,根据配置文件提示,添加用户名及密码 格式:用户名 = 密码(明码)

举例:test = 123456
配置/home/.svn/repos1/conf/authz文件,vim authz [groups]:用户群组管理,可根据用户权限大小,设置不同的群组, 格式:群组名 = 用户名1,用户名2,用户名3,...

如manger = zhangsan,lisi
如coder = linuxmi,linuxidc
[groups]权限设置:
groups下面的sections表示对一个目录的认证规则,根目录认证规则为[/]. 单个用户分别进行认证设定        [/]zhangsan = rw  #zhangsan对根目录的权限为rwlisi = r #lisi对根目录的权限为r

如果用户角度较多,可以对群组直接进行配置,群组名前加“@”[/]@manager = rw #等价于上面两行的设定效果
如果启动时从/home/.svn/repos1启动, /就是repos1的目录
如果从/home/.svn/启动,每个仓库的根目录是自己文件路径下的起始目录,其权限设置如下:          [repos1:/]@manager =  rw@coder = r
[repos2:/]

@manager =  rw

@coder = r
注意:不能跨越仓库设置权限;
问题:初次配置时,会遇到认证失败或无效的问题,原因有二: svnserve.conf中,每行可能存在空格,去掉空格即可

authz文件中,配置使用repos1根目录启动,但是却采用svn://192.168.1.123/repos1进行访问
建议:authz文件中尽量采用一种权限设置模式,切勿多种权限设置。
总结:每个仓库的根目录/就是该仓库的起始目录;[repos1:/]适用于多仓库;[/]适用于但仓库和多仓库;
启动和停止svn 启动 从repos1目录启动 sudo svnserve -d -r /home/.svn/repos1

根目录/是repos1,authz中的规则配置使用session[/]
访问方式:svn://192.168.1.123/
从.svn目录启动 sudo svnserve -d -r /home/.svn

根目录/是.svn,authz对repos1的配置使用session[repos1:/],对repos2的配置使用session[repos2:/]
访问方式:svn://192.168.1.123/
检测svn服务器是否已经启动 方式一:ps axu | grep svnserve

方式二:netstat -an | grep 3690(svn默认端口3690)
停止svn服务器 方式一: ps aux | grep svnserve,获取其pid

sudo kill -9 pid
方式二: sudo killall svnserve

svn服务开机自启动 cd /etc/init.d(Ubuntu自启动脚本位置)

vim startsvn.sh
添加以下两行代码        #! /bin/bashsvnserve -d -r /home/.svn(多仓库启动模式)
使配置生效 update-rc.d startsvn.sh defaults 这个命令等效于update-rc.d startsvn.sh start 20 2 3 4 5 . stop 20 0 1 6

20是默认的启动顺序号,可以手动修改,当然也可以在defaults后面加一个启动顺序号。0\1\2\3\4\5\6是ubuntu的运行级别。
update-rc.d 可以生成或者移除System-V启动模式下的初始化脚本的链接,System-V是Ubuntu采用的一种启动方式(好像记得更先进的启动方式是System-d),update-rc.d会在/etc/rcrunlevel

.d/目录下生成/etc/init.d/目录下的启动脚本的链接。

Ubuntu 14.04 下搭建SVN服务器 SVN://  http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN搭建 (YUM安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5部署Apache+SVN  http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN搭建SVN服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows下SVN服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server搭建SVN服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

Subversion (SVN) 的详细介绍请点这里
Subversion (SVN) 的下载地址请点这里

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-07/133249.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款