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,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/目录下的启动脚本的链接。
Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里
相关推荐
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf