背景
内网有一套gitlab13.12.15运行在ubuntu16.04上,由于开发团队的需求,适配新版开发工具,现需要升级gitlab到15及以上,本次为停机升级
准备工作
vbox虚拟机7.0.4(与原虚拟机保持一致),Ubuntu22.04系统镜像文件(适配最新gitlab16,否则无法升级),gitlab各个版本安装包(CE社区版,其他版本非本文章内容)
前提知识点
官方要求升级不能直接跨版本,需要按以下顺序:
升级规范13.12.15 ——> 14.0.12 ——> 14.3.6 ——> 14.9.5 ——> 14.10.5 ——> 15.0.5 ——> 15.1.6——> 15.4.6——> 15.11.13——> 16.0.8——> 16.1.5——> 16.2.8——> 16.3.6——> 16.7.z——> latest 16.Y.Z.
开始记录
1.安装系统
安装vbox和Ubuntu不做说明,自行百度,不然太占用文章内容
2.安装gitlab13.12.15
进入正题,先在Ubuntu22.04上安装gitlab13.12.15,并进行测试
2.1修改下载源、刷新源、升级源,自己运行一次
2.2安装gitlab依赖,注意邮件邮件配置,选择Internet那一项)
sudo apt-get install curl openssh-server ca-certificates postfix file git build-essential
2.3开始安装dpkg -i gitlab-ce_13.12.15-ce.0_amd64.deb(下载地址如下,其他的版本自行搜索)https://packages.gitlab.com/app/gitlab/gitlab-ce/search?dist=ubuntu&filter=debs&page=1&q=1https://packages.gitlab.com/app/gitlab/gitlab-ce/search?dist=ubuntu&filter=debs&page=1&q=1 2.4配置sudo gitlab-ctl reconfigure
2.5启动查看gitlab-ctl start
2.6查看状态gitlab-ctl status
3.还原数据
以上安装完成,且能访问后开始下一步动作,还原内网数据
3.1上传最新备份文件和配置文件(/etc/gitlab/gitlab.rb和/etc/gitlab/gitlab-secrets.json)
3.2修改postgresql设置:
# 修改以下配置文件,修改端口监听地址,默认监控localhost,* 代表all
vim /var/opt/gitlab/postgresql/data/postgresql.conf
修改listen_addresses = '*'
# 修改以下配置文件,新增放行
vim /var/opt/gitlab/postgresql/data/pg_hba.conf
# 新增以下两行
local all all trust
host all all 127.0.0.1/32 trust
# 重启一次
gitlab-ctl restart
# 修改权限
$ su - gitlab-psql
$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
ALTER ROLE
# 退出
gitlabhq_production=# \q
$ exit
3.3停止服务
gitlab-ctl stop puma && gitlab-ctl stop sidekiq && gitlab-ctl stop nginx && gitlab-ctl status
3.4还原
gitlab-rake gitlab:backup:restore BACKUP=1703700494_2023_12_28_13.12.15
3.5配置sudo gitlab-ctl reconfigure
3.6启动查看gitlab-ctl start
3.7查看状态gitlab-ctl status
3.8测试(我这里为了减少错误,vbox文件备份了一次,40多G花了点时间)
4.升级开始
4.1停止必要的服务
gitlab-ctl stop puma && gitlab-ctl stop sidekiq && gitlab-ctl stop nginx && gitlab-ctl status
4.2安装下一个版本
sudo dpkg -i gitlab-ce_14.0.12-ce.0_amd64.deb
4.3启动测试(每次还原都要重新配置和重启一次)
gitlab-ctl reconfigure &&gitlab-ctl restart
4.4版本检查
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
4.5检查服务
gitlab-rake gitlab:check SANITIZE=true
systemctl status gitlab-runsvdir.service
4.6测试网站是否正常
4.7如此重复操作3.2+4.X的内容,直到升级到你需要的版本(3.2最好操作一次,防止出现5.1问题)
4.8替换线上的vbox文件即可
5.常见问题
5.1如果还原提示sql报错参考以下链接,但是本记录中已经操作过,你们按照我的操作应该不会出现
Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm
ERROR: must be owner of extension btree_gist
ERROR: must be owner of extension btree_gist
ERROR: must be owner of extension pg_trgm
5.2升级14.0.12到14.3.6时会报错
rails_migration[gitlab-rails] (gitlab::database_migrations line 51)
这是需要使用以下检测命令
sudo gitlab-rake db:migrate
运行一次后会出现以下内容
你们根据自己出现的语句执行,执行完后在运行上面的检测命令,如此反复操作,我这里执行了5次左右,不再出现。
最后重新配置和启动即可(目前只有这个位置阶段出现问题,14.3.6-16.0.0没有出现,先做个标记)
gitlab-ctl reconfigure &&gitlab-ctl restart