如期而至的SVN服务器迁移引来一个大瓜XAMPP

文章目录

  • 前言
  • 方案评估
  • 前奏
  • XAMMP
  • 搭建svn服务
    • 准备软件包
    • 安装必要环境和工具
    • 安装xampp
      • 运行xampp
      • 编辑xampp
      • 访问xampp
    • 安装subversion
    • 安装svnmanager
    • 创建svn仓库目录
    • 修改配置文件
    • 为svnmanager创建MySQL用户
    • 重启xammp服务
    • 访问svnmanager
      • 登录svnmanager
      • 可能遇到的错误
      • 查看服务器目录信息
    • 检出新增加的svn库
  • 注意事项
    • 各个组件的配置文件
    • 配置svn服务过程可能修改的文件
    • 配置服务器时间
    • 备份svn库
    • 主动生成密码文件
    • 其他问题
  • 总结

前言

之前对于版本控制工具 和 更多的是操作命令的使用,而最近逐步开始接触使用环境的搭建了,对于一些私有项目还是需要在内部服务器上搭建一个 svn 或者 git 服务器的,前段时间因为 SVN 服务器硬盘空间告急,所以 SVN 数据迁移被提上了日程,经过几个月的准备,终于要动手了,期间也讨论了几个方案,结果最终迁移完发现,和我想的完全不一样啊,看来还是我太年轻了,世界真大~

方案评估

进行重大行动前总要有个可行性分析,虽然这不算特别重大,但终归会影响一个项目组的工作,所以要尽可能考虑周全,避免造成数据损失,影响开发进度,所以一开始基于目前数据仓库的现状提出了几种迁移的方案:

  1. 原机器增加硬盘:经运维同学确认机器太老,不支持扩展了,此路不通

  2. 采用 这种官方推荐的备份方式:这种方式采用 、、 等命令可以实现仓库备份、还原、甚至定向过滤等目的,但这种方式适合数据少短历史的仓库,如果版本比较大,如版本数增长数十万,那么dump的过程将非常慢,恢复过程更耗时,另外还有一个难点,这种方式要求磁盘空间足够,但是目前仓库占用90%,剩余的10%用来备份绝对不够的,所以此种方法也基本行不通

  3. 丢弃提交历史,本地客户端更新最新数据,然后提交到新配的服务器上,做0版提交:此种方法可以绕过磁盘不足的问题,但这种方式丢掉了历史记录,并且改变了仓库的uuid,测试时发现无论是 还是 命令都无法直接切换,基本上要重新下载一份数据了。

  4. 把整个系统连同数据直接镜像到新配置的服务器上:这种方式可以保留完整的提交记录,同时不需要老硬盘提供太大的空间,但操作难度上还需运维同学评估。

  5. 其他:使用 进行全量拷贝,备份过程较快,灾难恢复也很快;使用 制作2个镜像库,须在 svn1.4 版本以上使用。这些基本都是备份的方式,是保证数据安全应该采取的策略,可以作为参考。

所以综上优先选择全盘镜像,其次选择用最新的数据做0版的方式,除此之外如果用 因硬盘受限就只能划分成一个个子目录来迁移了。

前奏

之前我接触到的svn服务器基本就是安装svnserve就好,修改用户的访问权限可以直接在服务器上编辑access配置文件,后来了解到了 才知道原来有个可以修改这些配置文件的网页啊,用起来方便了许多,这次迁移之前我还是停留在这个层面上,结果运维同学搭建好环境后,我用 命令找了半天也没找到 进程,然后在历史记录里发现了 这货

接着便查找了很多关于 的知识,才发现之前还是弱了,这些基本都没了解过,经过这一次迁移,接触到了几十个命令、相关工具和配置文件,特此记录一下整个过程,方便今后复习和拿来就用。

最终迁移的方案选择的是数据整体拷贝,通过网络从旧机器发送到新机器上,然后在新机器上搭建svn服务器环境,这种方式好处很多:不依赖原机器剩余的硬盘空间、传输方便、可以完整保留历史记录、不用重新配置权限文件、修改域名绑定后对所有使用者几乎无感,即使需要重新认证,输入自己的svn用户名密码就搞定了,非常方便。

svn客户端访问服务端时可以通过svnserve、svnserver+ssh、Apache等多种方式访问。svnserve是一个小巧、轻便的服务器程序,设置简单,可以使用 subversion 专有的协议进行访问;但因为本身不提供加密通讯的功能,安全性低,可以通过ssh建立在安全隧道后调用svnserve程序;当然也可以通过http访问,利用Apache通过mod_dav_svn访问版本库,进而进行svn的操作。

我平时用的较多的也是通过 http 协议来访问和更新 svn 仓库的,可以直接搭建 Apache 来实现,也可以使用很方便的 xammp 来实现,本质上访问svn数据和使用svnmanager管理用户和权限都是网页服务,所以这两项都可以利用xammp,那么接下来简单了解下什么是 xammp

XAMMP

XAMPP(Apache+MariaDB+PHP+PERL)是一个功能强大的建站集成软件包。这个软件包原来的名字是 LAMPP(Linux+Apache+MySQL+PHP+PERL),但是为了避免误解,最新的几个版本就改名为 XAMPP 了。

XAMMP 的出现源于人们对安装网页服务时的挫败感,许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿,如果您想添加 MySQL、PHP 和 Perl等环境那就更困难了。XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版,非常容易安装和使用:只需下载,解压缩,启动即可,最近的版本把解压缩这一步替换成了运行脚本安装,其实和解压缩一样。

因为软件包非常全,一下就解决了访问、数据存储、数据管理、插件安装管理等多个方面,我查看了其中一些软件的配置文件,比如MySQL,无论是配置路径还是数据存储路径都是在 XAMPP 安装路径下,如果想在新的机器上部署一套完全一样的服务,只需要拷贝整个安装目录到新机器上就行了(前提是一些安装时创建的新用户要有),保险的做法是在新机器上安装一次,再用旧机器数据覆盖上去就行了。

前面夸了 这么久,那么它有没有缺点呢然有!缺点就是不安全,XAMPP仅用于开发目的,它具有某些配置设置(比如MySQL没有密码),使本地开发变得容易,如果你想让你搭建的XAMPP可以从互联网访问,这样并不是一个好的做法,可以使用WAMP, MAMP或LAMP等替换方案,这些是类似的软件包,更适合生产环境。

不知道是不是因为仅用于开发环境,网络上很难找到在Linux 环境下安装 XAMPP + subversion + svnmanager 的完整教程,在 windows 下安装倒是有几篇,所以我追随运维同学使用历史命令列表,尝试完整搭建一次 svn 服务,这可是从几百个命令列表中不断尝试出来的。

搭建svn服务

系统环境如下:

[root@VM-0-3-centos /]# hostnamectl
Static hostname: VM-0-3-centos
Icon name: computer-vm
Chassis: vm
Machine ID: 5467bde017714ffcad6d449b4a1fbbbc
Boot ID: 8aa2f3bd14104190bc11e39bf2831052
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1127.19.1.el7.x86_64
Architecture: x86-64

准备软件包

可以自行去官网下载:

  • xampp-linux-x64-5.6.40-1-installer.run
  • subversion-1.10.8-bin.tar.gz
  • svnmanager-1.10.tar.gz

安装必要环境和工具

安装xampp

给脚本添加可执行命令后,直接运行即可:

安装过程还真是挺容易的,一直输入 就可以了

运行xampp

进入到目录下启动服务

报下面的错误:

编辑xampp

将文件中 内容改成 ,再次启动时正常

访问xampp

浏览器输入IP后回车,显示页面如下,XAMPP 就安装好了,是不是很方便

如期而至的SVN服务器迁移引来一个大瓜XAMPP

修改svnmanger配置文件

按照自己的本地目录修改成以下配置:

//Shell command's$htpassword_cmd          = "/opt/lampp/bin/htpasswd";$svn_cmd  = "/usr/local/subversion/bin/svn";$svnadmin_cmd            = "/usr/local/subversion/bin/svnadmin";//Subversion locations$svn_config_dir

来源:AlbertS

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月15日
下一篇 2022年8月15日

相关推荐