搭建 SVN 服务器

腾讯云
入门
0 个任务
剩余 3 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。本实验带您一步步搭建属于自己的 SVN 服务器。

首次可免费使用云主机 45 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

CentOS 7.2 64 位

目录

# 搭建 SVN 服务器 ## 安装 SVN 服务端 > <time>1min ~ 2min</time> ### 安装 Subversion Subversion 是一个版本控制系统,相对于的 RCS 、 CVS ,采用了分支管理系统,它的设计目标就是取代 CVS 。 ``` yum install -y subversion ``` > <checker type="output-contains" command="ls /usr/bin/" hint="Subversion 未安装"> > <keyword regex="svnserve" /> > </checker> > <checker type="output-contains" command="ls /usr/bin/" hint="svnadmin 未安装"> > <keyword regex="svnadmin" /> > </checker> > <checker type="output-contains" command="ls /usr/bin/" hint="Subversion 未安装"> > <keyword regex="svn" /> > </checker> ## 创建 SVN 版本库 > <time>1min ~ 2min</time> ### 创建项目版本库 ``` mkdir -p /data/svn/myproject svnadmin create /data/svn/myproject ``` > <checker type="output-contains" command="ls /data/svn" hint="myproject 目录未创建"> > <keyword regex="myproject" /> > </checker> > <checker type="output-contains" command="ls /data/svn/myproject/" hint="myproject 初始化失败"> > <keyword regex="conf" /> > </checker> ## 配置 SVN 信息 > <time>2min ~ 5min</time> ### 配置文件简介 版本库中的配置目录 [conf][config-path] 有三个文件: > <locate for="config-path" path="/data/svn/myproject/conf" hint="版本库配置目录" /> * authz 是权限控制文件 * passwd 是帐号密码文件 * svnserve.conf 是SVN服务综合配置文件 > <checker type="output-contains" command="ls /data/svn/myproject/conf" hint="myproject 初始化失败"> > <keyword regex="auth" /> > </checker> > <checker type="output-contains" command="ls /data/svn/myproject/conf" hint="myproject 初始化失败"> > <keyword regex="passwd" /> > </checker> > <checker type="output-contains" command="ls /data/svn/myproject/conf" hint="myproject 初始化失败"> > <keyword regex="passwd" /> > </checker> ### 配置权限配置文件 authz 现在请 [编辑 authz][edit-authz] ,内容参考如下: > <locate for="edit-authz" path="/data/svn/myproject/conf/authz" hint="权限配置文件" /> ``` /// <example verb="edit" file="/data/svn/myproject/conf/authz" /> [groups] #用户组 admin = admin,root,test #用户组所对应的用户 [/] #库目录权限 @admin = rw #用户组权限 *=r #非用户组权限 ``` > <checker type="output-contains" command="cat /data/svn/myproject/conf/authz" hint="authz文件未编辑"> > <keyword regex="admin = admin,root,test" /> > </checker> ### 配置账号密码文件 passwd 现在请 [编辑 passwd][edit-passwd] ,内容参考如下: > <locate for="edit-passwd" path="/data/svn/myproject/conf/passwd" hint="账号密码文件" /> ``` /// <example verb="edit" file="/data/svn/myproject/conf/passwd" /> [users] # harry = harryssecret # sally = sallyssecret admin = 123456 root = 123456 test = 123456 ``` > <checker type="output-contains" command="cat /data/svn/myproject/conf/passwd" hint="passwd文件未编辑"> > <keyword regex="root = 123456" /> > </checker> ### 配置 SVN 服务综合配置文件 svnserve.conf 现在请 [编辑 svnserve.conf][edit-svnserve.conf] ,内容参考如下: > <locate for="edit-svnserve.conf" path="/data/svn/myproject/conf/svnserve.conf" hint="综合配置文件" /> ``` /// <example verb="edit" file="/data/svn/myproject/conf/svnserve.conf" /> [general] # force-username-case = none # 匿名访问的权限 可以是read、write,none,默认为read anon-access = none #使授权用户有写权限 auth-access = write #密码数据库的路径 password-db = passwd #访问控制文件 authz-db = authz #认证命名空间,SVN会在认证提示里显示,并且作为凭证缓存的关键字 realm = /data/svn/myproject [sasl] ``` > <checker type="output-contains" command="cat /data/svn/myproject/conf/svnserve.conf" hint="密码数据库路径未定义"> > <keyword regex="password-db = passwd" /> > </checker> > <checker type="output-contains" command="cat /data/svn/myproject/conf/svnserve.conf" hint="访问控制文件未定义"> > <keyword regex="authz-db = authz" /> > </checker> > <checker type="output-contains" command="cat /data/svn/myproject/conf/svnserve.conf" hint="认证命名空间未定义"> > <keyword regex="realm = /data/svn/myproject" /> > </checker> ## 启动 SVN 服务 > <time>2min ~ 5min</time> ### 启动 SVN ``` svnserve -d -r /data/svn ``` > <checker type="output-contains" command="netstat -nltp" hint="SVN 未启动"> > <keyword regex="svn" /> > <keyword regex="3690" /> > </checker> ### checkout SVN项目 ``` mkdir -p /data/workspace/myproject svn co svn://127.0.0.1/myproject /data/workspace/myproject --username root --password 123456 --force --no-auth-cache ``` > <checker type="output-contains" command="ls -la /data/workspace/myproject" hint="SVN 未启动"> > <keyword regex=".svn" /> > </checker> ### 提交文件到 SVN 服务器 从本地提交文件到 SVN 服务器,其中 `root` 密码为 `/data/svn/myproject/conf/passwd` 文件存储的密码 ``` cd /data/workspace/myproject echo test >> test.txt svn add test.txt svn commit test.txt -m 'test' ``` 提交成功后可以通过如下命令从本地项目删除文件 ``` cd /data/workspace/myproject rm -rf test.txt ``` 删除后可以通过 SVN 服务器恢复 ``` cd /data/workspace/myproject svn update ``` ## 部署完成 ### 大功告成 恭喜您已经完成了搭建 SVN 服务器,您可以留用或者[购买 Linux 版本的 CVM][https://buy.qcloud.com/?fromSource=lab] 继续学习。