本篇文章可以看做是全新搭建 GitLab 的教程使用。

我个人使用方式是使用虚拟机软件强制将 4核心4GB 的运行环境划分给 GitLab 等同购买使用等配置的云主机,这样做可以避免和主机上其他软件进行资源争抢,影响运行效率。

从 13 年到现在,这已经是第3次迁移 GitLab 了,之前的迁移主要原因:

  • 将低版本跨大版本升级至高版本
  • 将裸机运行的软件迁移至容器中

而这次的迁移主要原因:

  • 更换了性能更好的新硬件
  • 测试备份包是否能够正常工作
  • 减少磁盘碎片对于宿主机的资源浪费(实际使用20G以内,磁盘占用已经100多G)

在开始搭建应用和迁移数据之前,我们需要做一些准备工作。

准备工作

虽然我在对外的网站上使用了最新的 Ubuntu 18.04 发行版,但是考虑最大程度的稳定性,我还是选择了 16.04 ,毕竟两年多的使用,几乎没有遇到问题,而且和 docker-ce 兼容性的问题,也解决了大半,省心省力。

配置操作系统

虚拟机默认安装完毕的操作系统,是无法使用 SSH 进行远程访问的。需要先安装 openssh-server 以便开启访问服务。

程序安装完毕之后,就可以直接使用 SSH 连接并管理服务器了。

我这里为了后面的操作简单,将新机器在本地 SSH CONFIG 中配置为了 gitlab-2018.lab.com ,然后做了 RSA KEY 授信免登陆。

清理一下无用的软件源和注释。

如果在国内,希望加速软件下载,可以使用下面的命令。

然后更新软件包,下载一些基础依赖和工具。

当然,如果要安装 docker-ce ,推荐使用官方源,可以参考 之前的文章 。我这里为了安装快速,就先使用国内阿里云的源了。

这里可以根据自己情况,考虑是否要锁定当前的 GitLab 软件版本。

编排工具,使用官方出品的 compose 即可,简单够用。

考虑到 GitLab 会占用 22 端口,我们先行将系统的端口进行修改。

如果你也配置了 SSH CONFIG, 需要一同修改里面的端口记录。

有指定 SHELL 习惯的童鞋,可以顺手配置。

修改 Docker 配置

如果觉得国内下载 Docker 镜像包比较慢,可以编辑 /etc/docker/daemon.json 加速资源下载。

如果你进行了配置修改,想要让配置修改生效,必须重启 docker 服务,可以参考下面的命令。

搭建新的 GitLab 运行容器

下面提供一个简单的文件配置,各位看官可以按自己需求修改。

因为没有用到太多特殊功能,我这里将 compose 配置声明为 v2

将配置文件保存到新的服务器上,执行 docker-compose up 后,程序便会自动下载镜像文件,然后自动启动应用。

当你看到下面的请求记录日志后,你的应用便启动完成了。

如果你是新用户,那么现在便可以结束文章浏览,访问你的 GitLab 进行体验了。

接下来我们开始老数据的备份,以及将数据迁移到新的 GitLab 应用中。

备份之前的 GitLab 数据

如果你也是使用容器化的方式运行 GitLab ,备份命令需要依赖 Docker 作为代理执行命令( gitlab_gitlab_1 为容器运行名称)。

如果是裸机运行,那么直接运行下面的命令。

命令顺利执行完毕后,然后可以在应用的 /data/backups 中找到备份的数据文件。

将数据文件保存/转移到新的机器上之后,我们便可以开始正式的迁移工作。

迁移(还原)数据

先将备份文件放置回新的应用的 /data/backups 文件夹中。

然后使用 docker ps 获取运行容器的名称。

然后执行 docker exec -t gitlablabcom_gitlab_1 gitlab-rake gitlab:backup:restore RAILS_ENV=production 即可开始恢复数据。

在执行过程中,程序会询问你是否愿意放弃当前应用的所有数据,开始恢复操作,请回复 yes

经过漫长的等待(根据数据量而定)。

最后重新启动你的 GitLab 应用,迁移就完毕了。

最后

喜欢折腾的小伙伴可以扫二维码添加好友(记得注明来源和目的,方便备注拉群)。

我计划拉个小群,把喜欢折腾的朋友聚一起,在不发广告的情况下,聊聊软件、HomeLab、编程上的一些问题,来扩展和积累一些写作素材。

—EOF