Centos7环境下搭建SVN服务器、迁移svn到其他的服务器

简介: SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

一、简介

参考链接:https://developer.aliyun.com/article/1070481

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

二、安装

1、通过 yum 命令安装 svnserve,命令如下:

bash 复制代码
yum -y install subversion

验证安装:

bash 复制代码
svn help

如果安装成功,就会看见 svn 的版本信息等;

2、创建 SVN 仓库目录

我喜欢把 svn 仓库放在 /opt 目录下,当然,你也可以根据自己的习惯放在不同的目录,如果只是创建svn不创建仓库,就可以不指定下面的仓库文件夹goods,即svnadmin create /opt/svn,后面指定realm的时候,也只需要指定到 /opt/svn即可。

创建目录:

bash 复制代码
mkdir  /opt/svn

创建一个 svn 的仓库,我的仓库名叫:goods

bash 复制代码
svnadmin create /opt/svn/goods/

进入仓库,即可以看见里面的文件

bash 复制代码
cd /opt/svn/goods/
bash 复制代码
ls

3、仓库文件说明

  • hooks 目录:放置 hook 脚步文件的目录
  • locks 目录:用来放置 subversion 的 db 锁文件和 db_logs 锁文件的目录,用来追踪存取文件库的客户端
  • format 目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
  • conf 目录:是这个仓库配置文件(仓库用户访问账户,权限)

4、修改配置文件

进入 conf 目录

bash 复制代码
cd conf/

配置文件都放在 conf 目录下,conf 目录下的文件包括:

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn 服务器配置文件

1、修改 svnserve.conf 文件:

bash 复制代码
vim svnserve.conf

将 anon-access 前面的注释去掉,将对应的值设置为:none
将 auth-access 前面的注释也去掉
将 password-db 前面的注释也去掉
将 authz-db 前面的注释也去掉
将 realm 前面的注释也去掉,将对应的值设置为你的 svn 仓库地址:/opt/svn/goods
注意,在去掉注释后,前面的空格也要去掉

配置说明:

anon-access = none:表示禁止匿名用户访问

auth-access = write:表示授权用户拥有读写权限

password-db = passswd:指定用户名口令文件,即 passwd 文件

authz-db = authz:指定权限配置文件,即 authz 文件

realm = /opt/svn/goods:指定认证域,即 /opt/svn/goods 目录

2、修改passwd文件:

bash 复制代码
vim passwd

在文件末尾追加需要开通的账号和密码,使用 = 号连接,例如:

bash 复制代码
xiaoming = 123456

注意,用户和密码都是明文显示的

3、修改 authz 文件:

bash 复制代码
vim authz

在文件末尾追加一下内容:

bash 复制代码
[/]
xiaoming=rw

配置说明:

/:表示根目录,即 /opt/svn/goods

xiaoming=rw:表示用户 xiaoming 对根目录具有读写权限

三、开放端口

SVN 服务的默认端口为 3690,可以通过下面的命令查看:

netstat -antp | grep svn

tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 66486/svnserve

开放3690端口:

sudo firewall-cmd --permanent --add-port=3690/tcp

重启防火墙生效

sudo firewall-cmd --reload

多数情况下服务器安装完成,配置完成后,无法连接 svn 服务器,均是防火墙问题【注意:如果是阿里云,腾讯云的服务器,还需在安全组添加端口开启规则】

四、启动 SVN 服务

bash 复制代码
svnserve -d -r /opt/svn/

启动命令说明:

-d:表示svnserve.exe 将会作为一个服务程序运行在后台

-r:表示把 /opt/svn 目录作为根目录

查看 svn 服务是否启动成功:

bash 复制代码
ps -ef | grep 'svnserve'

如果启动失败,有可能是 svn 服务已经启动了,关闭进程,再次启动即可

bash 复制代码
killall svnserve
svnserve -d -r /opt/svn/

也可以使用管道的方式查找 svn 的进程号

bash 复制代码
ps -ef | grep svn
kill -9 进程号

五、本地连接 SVN 服务

使用 IDEA 或者 Eclipse 等工具安装 svn 插件后,即可连接 svn 服务,连接地址为:

bash 复制代码
svn://ip

本次安装的 svn 服务是基于 svn 协议的,并不是常见的 http 协议,请注意。

六、迁移 SVN 服务到另一个svn服务器

参考链接:https://cloud.tencent.com/developer/article/1650133

1、在另一个服务器上安装svn

2、dump的方式进行迁移

把svn下的仓库goods备份到demo.dump文件

bash 复制代码
svnadmin dump /opt/svn/goods/ >demo.dump

下载下来,上传到指定的服务器

3、将 dump 文件 load 进 新服务的仓库中

bash 复制代码
svnadmin load /opt/svn/goods <demo1.dump

将 demo1.dump < ( 写入 ) 到 新服务器上的goods 的这个仓库中

如果见到如下图这样的形式,就是在load中了,就等待吧

4、启动svn服务

bash 复制代码
svnserve -d -r /opt/svn
相关推荐
用户03284722207015 小时前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz4 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈4 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造