Ubuntu 14.04下搭建SVN服务器

Ubuntu 14.04下搭建SVN服务器

工作环境:

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,bkjia
[groups]权限设置:
groups下面的sections表示对一个目录的认证规则,根目录认证规则为[/].
单个用户分别进行认证设定        [/]zhangsan = rw 
#zhangsan对根目录的权限为rwlisi = r #lisi对根目录的权限为r

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

CentOS 6.2 SVN搭建 (YUM安装)

CentOS 6.5部署Apache+SVN 

Apache+SVN搭建SVN服务器

Windows下SVN服务器搭建和使用 + 客户端重新设置密码

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据

Ubuntu Server搭建SVN服务以及迁移方法

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

14.04下搭建SVN服务器 工作环境:
Server端:系统 Ubuntu 14.04 64bit Client端:系统Windows 10
64bit,Tortoise 1.9.3.27038 服务器端安装流程: 安装...

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。