共计 3101 个字符,预计需要花费 8 分钟才能阅读完成。
工作环境:
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