外观
02.阿里云部署SVN服务器
约 1310 字大约 4 分钟
进阶工具技术学习个人
2022-06-05
1、前提条件
已在实例安全组的入方向添加规则并放行SVN服务的默认端口3690。


步骤一:安装SVN
- 通过密码认证登录Linux实例。
- 运行以下命令安装SVN。(也可以用yum)
更新软件源
sudo apt-get update

安装SVN
sudo apt-get install subversion


3. 运行以下命令查看SVN版本。
svnserve --version

步骤二:配置SVN
1.运行以下命令创建版本库根目录。
mkdir /var/svn
2.依次运行以下命令创建版本库。(可以创建多个,可参考后面的连接)
cd /var/svn
svnadmin create /var/svn/svnrepos
3.依次运行以下命令查看自动生成的版本库文件。
Subversion目录说明如下表:
| 目录 | 说明 |
|---|---|
| db | 存放所有的版本控制数据文件。 |
| hooks | 放置hook脚本文件。 |
| locks | 用来追踪存取文件库的客户端。 |
| format | 一个文本文件,文件中只包含一个整数,表示当前文件库配置的版本号。 |
| conf | SVN版本库的配置文件(版本库的访问账号、权限等)。 |
4.设置SVN版本库的账号和密码。
① 运行cd conf/命令。
② 运行vi passwd命令,打开用户配置文件。
③ 按i键进入编辑模式。
④ 移动光标至[users]下,添加用户账号和密码。

⑤ 按Esc键退出编辑模式,并输入:wq保存并退出。
5.设置账号的读写权限。(这里形式很多,可参考后面的连接)
i. 运行vi authz命令,打开权限控制文件。
ii. 按i键进入编辑模式。
iii. 移动光标至文件末尾,并添加如下代码(其中,userTest表示账号,r表示读权限,w表示写权限):
iv. [/]
userTest=rw

v. 按Esc键退出编辑模式,并输入:wq保存并退出。
6.修改SVN服务配置。
i. 运行vi svnserve.conf打开SVN服务配置文件。
ii. 按i键进入编辑模式。
iii. 移动光标找到如下配置行,删除行前面的注释符#和空格:
说明 每行不能以空格开始,且等号两端要有一个空格。
anon-access = read #匿名用户可读,您也可以设置 anon-access = none,不允许匿名用户访问。设置为 none,可以使日志日期正常显示auth-access = write #授权用户可写password-db = passwd #使用哪个文件作为账号文件authz-db = authz #使用哪个文件作为权限文件realm = /var/svn/svnrepos #认证空间名,版本库所在目录

iv. 按Esc键退出编辑模式,并输入:wq保存并退出。
7. 运行以下命令启动SVN版本库。
本文示例中,启动命令直接指定到版本库。
svnserve -d -r /var/svn/svnrepos/
说明 运行 killall svnserve命令可停止SVN服务。
8. 运行命令ps -ef |grep svn查看SVN服务是否开启。
如果返回结果如下图所示,表示SVN服务已经开启。

步骤三:使用Windows客户端测试
- 在本地下载并安装TortoiseSVN客户端。
- 在本地项目文件夹内的空白区域单击鼠标右键。
本示例中,项目文件夹为 C:\Test。
3.在弹出菜单中,选择SVN检出。

4. 填写如下信息后,单击确定。
o 指定版本库URL,本文示例中直接指定到版本库启动的SVN,svnserve只为svnrepos这一个版本库工作,因此版本库URL格式为svn://实例公网IP地址/。
o 指定检出至目录。本文示例中,目录为C:\Test。

说明 第一次登录需要输入账号和密码,即您在 passwd文件中设置的用户名和密码。
检出完成示例如下。

在客户端创建 branches、tags、trunk
$ mkdir branches
$ mkdir tags
$ mkdir trunk
$ svn add branches trunk tags
$ svn ci -m 'create branches trunk tags dir'
主要参考
部署svnserve访问SVN - 云服务器 ECS - 阿里云
多个版本组参考
authz配置文件总结参考
svn中authz配置文件总结_I_m_you_papa的博客-CSDN博客_svnauthz-validate
3、设备重启
busybox telnetd &
**svnserve -d -r **/var/svn/svnrepos/
ps -ef |grep svn

