本文介绍在如何在ubuntu16.04 的系统上搭建svn服务器以及可能遇到的问题。下面的操作都以root用户进行。
- 安装svn服务器软件subversion。
// 安装完成后的svn版本为 1.9.3,通过svn --version可以查看版本号
apt-get install subversion
- 初始化svn目录。
//创建测试目录 repo1
mkdir -p /home/svn/repo1
// 初始化svn测试目录
svnadmin create /home/svn/repo1
初始化后的svn目录如图所示
访问svn常用的有两种协议 svn:// 和 svn+ssh:// 协议。下面分别进行介绍。
- 使用svn:// 协议主要需要配置conf目录下的三个文件。
1) svnserve.conf : repo1仓库svn服务配置文件
// 无认证用户不可以进行访问
anon-access = none
//认证用户有读写的权限
auth-access = write
//密码存放在passwd文件中
password-db = passwd
//认证权限存放在authz文件中
// 需要特别注意的是 所有配置的key都要顶格写,不然读取的时候会有问题,造成客户端无法读取仓库
authz-db = authz
2)authz : 用户权限配置文件
//groups 下存放分组下的用户 多个用户用,分割
[groups]
admin=harry,sally
//用相对路径表示要确定的目录 @组名 指定该组下所有用户的权限 也可以直接指定单个用户的权限
[/]
@admin=rw
3)passwd: 用户密码配置文件
//在users存放用户的密码,密码是明文存储的
[users]
harry = 111111
4 使用svn+ssh协议。使用这种方式将用ssh认证代替svn自身的认证,所以svn的conf目录无需修改任何东西,只要保证svn的用户有ssh登录的权限和对svn文件夹访问的权限就可以了。比较常见的做法是将用户放入一个用户组中,确保用户组对svn文件夹有访问权限。这样可以往用户组中添加多个用户,使多个用户都可以访问svn文件夹。
addgroup svngroup
useradd -m -g svngroup svn
chown -R svn:svngroup /home/svn/repo1
chmod -R g+rws /home/svn/repo1
采用svn+ssh的方式,需要注意两个问题:
1)ssh端口,ssh端口建议采用默认的22端口,如果换成其他的端口,客户端要考虑是否好配置。
2) 在新建svn用户的时候,要为用户建立一个默认目录,不然使用windows svn客户端TortoiseSVN可能会出现无法登录的情况。
5 启动svn服务器
// -d 表示守护进程 -r 指定启动的根目录 --log-file 指定日志的位置
svnserve -d -r /home/svn --log-file=/var/log/svnserve.log
启动时要注意启动的根目录和访问目录是否匹配。例如启动指定了-r /home/svn/repo1,访问时使用 svn://svn@ip:/home/svn/repo1 是访问不到这个仓库的。
参考文档:SubVersion使用说明