文章大纲

centos系统搭建svn服务器

2017年12月15日 11:26

之前一直在Windows服务器上安装Visual SVN搭建的svn服务器。
今天想把SVN服务器转移到我自己买的阿里云服务器上,顺便做下笔记。


查看linux系统信息:

lsb_release -a

lsb(Linux Standards Base,linux核心标准)

LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core


查看是否安装svn(查询安装包或者查询是否有svn版本号):

rpm -qa subversion
svn --version


若有结果显示,则表示已安装。
subversion-1.7.14-10.el7.x86_64

rpm命令是RPM软件包的管理工具
rpm是RPM软件包的管理工具。下面是命令参数说明:

-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合"-l"参数使用;
-d:只列出文本文件,本参数需配合"-l"参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询拥有指定文件的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息; -i<套件档>或--install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。

rpm更多用法后面再了解。

安装svn:

yum install subversion


创建代码库:

mkdir -p /opt/svn/repo/myproject
svnadmin create /opt/svn/repo/myproject

执行这两条命令后,myproject文件夹下就会有如下文件:conf, db,format,hooks, locks, README.txt等文件,代表一个SVN库创建成功。


注意:以下的配置项都需要顶格,即前面不能预留空格,否则报错。


配置SVN用户与权限:

编辑conf/passwd,配置用户

# harry = harryssecret
# sally = sallyssecret
hello = world(添加密码为world的hello用户,这里是SVN用户,跟linux系统用户无关)


编辑conf/authz,配置权限

[myproject:/]
hello= rw

hello用户对myproject这个SVN库下的所有文件有读写权限。


-------------- >> 2017.12.15 更新 --------------


上面是针对整个项目目录的权限配置。

如果只想分配部分目录的权限给某人,就可以如下采用方式:

[myproject:/要分配给svn用户zhai14的文件夹]
zhai14 = rw

上面分配的文件夹,是在myproject目录下的。


windows下第一次用了别的svn用户,如何用新svn用户测试?

现在我们来测试上面权限的设置。

由于开始我用hello这个svn用户导入代码了,windows下Tortoise Svn会缓存第一次通过验证的svn用户信息。现在要更换zhai14这个用户来测试,需要将缓存清理掉。


第一步:点击鼠标右键,进入设置菜单项。


第二步:进入如图选项,点击清除按钮,然后从弹出的对话框里勾选要删除的缓存信息。




-------------- End: 2017.12.15 更新 --------------



svnserve的配置文件修改:

vi svnserve.conf

#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字


启动svn服务:

svnserve -d -r /opt/svn/repo


关闭svn服务:

killall svnserve


ps -aux | grep svn
kill -9 进程号


导入项目:

如果项目有历史svn版本,请先将项目里.svn文件删除。


浏览器里访问svn://服务器ip/myproject, 访问提示输入密码(上面配置svn用户时的账号和密码),则代表svn代码库及访问路径都正确。

本人用的阿里云服务器,已经关闭了防火墙,访问始终不成功。
后来在阿里云服务器管理面板里添加了3690端口的入方向安全组规则。

协议类型    端口范围    授权类型       授权对象     优先级    
TCP 3690/3690 地址段访问 0.0.0.0/0 1

其中3690是svn服务启动时的默认端口。


如果要修改,可以在启动时指定具体端口:

svnserve -d -r /opt/svn/repo  --listen-port  num(新的端口号)


SVN代码库能够访问成功,接下来就可以开始进行项目导入。

svn import  svn://服务器ip/myproject 


-------------- >> 2017.12.15 更新 --------------


如果不在当前目录,就加上要导入的代码文件夹位置:

svn import /项目代码根目录位置   svn://服务器ip/myproject  -m 'initial import'

注意:以上命令是将指定文件目录下的代码导入到版本库里myproject目录下,注意路径正确填写,以避免版本库里myproject下多了一层文件夹,


-------------- End: 2017.12.15 更新 --------------


注意密码验证时,区分清楚什么时候填服务器密码,什么时候填SVN用户密码。


项目导入成功后,我们就可以在客户端checkout了。
然后在checkout的项目里,我们就可以svn add ,svn commit,svn update了。

  • 2017年10月27日 23:56文章创建
  • 2017年10月28日 01:20文章发布
  • 2017年12月15日 11:25svn authz配置,增加了权限细化控制以及Tortoise客户端缓存清理的内容;对svn import做了进一步说明。
  • 2017年12月15日 11:26文章下架
我要评论
«-必填,限2-20个字符,中文/字母/字母数字组合
«-评论后,邮箱会收到激活链接,未激活邮箱的留言,将无法显示
评论列表
暂无评论,期待你的评论哦!
回到顶部