这是我之前发布在 yuque 的文章。是我刚来新公司的时候帮公司搬迁 git 记录下来的,现在看来去掉敏感部分直接发布也没啥问题啦,就搬家过来,我自己也方便查 XD .

8.1.6 -> 10.1.4

首先需要分几个步骤

第一步

我将老版本 这里是从 bitnami gitlab 上安装的 8.1.4 版本

将这个版本下的所有现在有的数据进行备份。 使用

这个路径下面可以找到我们的 gitlab 配置文件,将 backup 的地址指定为我们想要其备份的地址。

之后开始备份,使用

cd /opt/gitlab-7.x.x-x/
./use_gitlab
cd /opt/gitlab-7.x.x-x/apps/gitlab/htdocs
bundle exec bin/rake gitlab:backup:create RAILS_ENV=production

之后我们就能在原来的机器上获得一个备份好的压缩包

这里注意 backup 的时候不能停机,备份的时候可能会去尝试链接还在运行的数据库,如果服务 down 了会链接失败。

第二步

由于我要到新机器上部署我的新版本,所以我在另外一台机器上下载好了跟之前 bitnami 一样的版本,这个版本是官方的 Omnibus 版本。我手动下载的 .rpm 包。

我这里采用手动安装:

sudo EXTERNAL_URL="http://127.0.0.1:8081" rpm -i gitlab-ee-9.5.2-ee.0.el7.x86_64.rpm

执行 sudo gitlab-ctl reconfigure 会开始配置下载好的 gitlab ,之后我们就可以使用 gitlab-ctl 来执行 gitlab 的 start|end|restart 等等命令了。

可以通过 ps -ef 查看 gitlab 的 nginx 读取哪儿的配置文件如下:

所以我们可以在 /var/opt/gitlab 下面找到最新的配置文件。

其实当我们在安装的时候 让我们设置的一个地址可以让外部访问,那个地址会让 gitlab 自动生成一个 nginx 配置文件,监听的 server_name 就是我们设置的地址,如果需要反向代理我们可能需要去 gitlab 的 nginx 配置目录下面修改这个监听地址。如果没有反向代理,看上去直接设置之后就可以使用了(这里一般都是需要定制的,感觉 gitlab 这个也给自动设置有点过于优化了。不过也体现出人家尽量提升用户体验的感觉吧)。

第三步

拷贝备份到新机器上 这个简单 scp 一下就行了 like this

从本地 传输到 192.168.0.8

然后就是 restore

现将之前的复制包 拷贝到 omnibus 版本的 backup 目录

之后停掉其中两个服务并且 check 其状态。

恢复完毕之后让我们 check 其状态。

这里特别注意,所有的恢复迁移工作都是建立在备份的版本和安装的新版本相同的情况下。

第四步

通过官方渠道升级到最新版本。(未完待续)

# Debian/Ubuntu
dpkg -i gitlab-ce-XXX.deb

# CentOS/RHEL
rpm -Uvh gitlab-ce-XXX.rpm

分别使用这两个包管理工具进行升级。

升级过于老旧的版本需要脚本放得很缓慢,基本上最多 3个 mirror 一升,否则就会出错。而且是无法挽回的错误又得重来。另外记得每次升级完成后 重启然后修改 nginx 参数。

完成升级之后可以留意一下 git 的 host 是否正常。例如如果你使用阿里云却不配置对外访问地址,那么git host 应该会出现非常奇怪的地址。所以需要配置 gitlab 配置文件将对外地址项改成域名。然后 gitlab-ctl reconfigure 一下生效即可。

虽然这里记录的东西最少,但是这里几乎最耗时,来来回回包括查资料差不多 8 小时吧。最开始还想一步到位升上去简直太天真了。

之后 linux 下删除软件尽量使用对方提供的现成方法,并且找到所有的删掉可以使用 find 方法。

find / -iname 'xxx'

QA:

Q: 卡在卸载gitlab然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

A:

https://www.cnblogs.com/springwind2006/p/6872773.html

Q: 数据库恢复密码丢了。

A: https://docs.gitlab.com/ee/security/reset_root_password.html#doc-nav

Reference:

https://packages.gitlab.com/app/gitlab/gitlab-ce/search  gitlab 发布包地址

http://xlindo.com/2015/08/18/gitlab备份与恢复操作方法/  gitlab bitnami 备份恢复文档

https://community.bitnami.com/t/upgrade-bitnami-gitlab-ce-version/48641  bitnami 官方论坛关于升级问题

https://docs.gitlab.com.cn/omnibus/update/README.html#updating-from-gitlab-66-and-higher-to-the-latest-version  gitlab 官方文档 -> Updating GitLab via omnibus-gitlab

https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore  restore for Omnibus

https://about.gitlab.com/installation/#centos-7  官方安装文档

https://docs.gitlab.com/ee/policy/maintenance.html#versioning  官方推荐升级路径

https://about.gitlab.com/blog/categories/releases/  官方 relase 文档

https://www.jianshu.com/p/a86a1529d253  nginx反向代理 gitlab

https://docs.gitlab.com/omnibus/settings/smtp.html  gitlab SMTP settings

02-12 22:41