ubuntu 22 安装 gitlab 14.1.1
前面提到 gitlab 迁移的问题,当迁移前后的版本不一致时,备份是无法还原的。
新的服务器使用了 ubuntu 22 的系统,在安装了宝塔面板后,软件商店中有一个 GitLab 最新社区版,安装的是 16.0.1 版本。经过测试 14.1.1 的备份并不能还原,所以解决方法有两个:一个是将使用的 gitlab 升级到 16.0.1;另一个是新服务器安装一个 14.1.1 版本的 gitlab。
一开始尝试找 gitlab 升级的资料,结果发现 gitlab 得按照小版本一个接着一个去升级,这样的话,14 到 16 还不知道要升级多少次呢,果断放弃。那么只剩下在新服务器安装 gitlab 14.1.1 这一种方法了。
从 gitlab 的 gitlab-ce 包列表里搜索 14.1.1,根据 ubuntu/focal 筛选出两条记录:
一开始真的是看花了眼,以为是同一个版本,其实 arm64 版本与 amd64 版本完全不同。
安装 gitlab arm64 版本的 deb 包文件失败:
root@cstation01:/home/zhifu# sudo dpkg -i gitlab-ce_14.1.1-ce.0_arm64.deb
dpkg: error processing archive gitlab-ce_14.1.1-ce.0_arm64.deb (--install):
package architecture (arm64) does not match system (amd64)
Errors were encountered while processing:
gitlab-ce_14.1.1-ce.0_arm64.deb
Ubuntu 如何查看 CPU 架构、系统信息、内核版本、版本代号?
使用 uname -m
或者 arch
可以获取到当前服务器的架构类型。aarch64
表示 ARM
的 x64 架构,x86_64
是兼容 x86 的 x64 架构。amd64
也就是 x84_64
。
ubuntu 不同版本有不同的代号:
- Ubuntu 12.04 (LTS)代号为 precise
- Ubuntu 14.04 (LTS)代号为 trusty
- Ubuntu 16.04 (LTS)代号为 xenial
- Ubuntu 18.04 (LTS)代号为 bionic
- Ubuntu 20.04 (LTS)代号为 focal
- Ubuntu 22.04 (LTS)代号为 jammy
所以 ubuntu/focal
对应的是 Ubuntu 20.04 版本。
严格意义上来说,ubuntu/focal
其实也是不适合 Ubuntu 22.04 的,但暂时没有想要重新创建服务器。
点击进入到 gitlab-ce_14.1.1-ce.0_amd64.deb 版本详情页,直接通过 sudo apt-get install gitlab-ce=14.1.1-ce.0
安装会提示找不到对应版本的 gitlab。使用 apt search gitlab-ce
也只找到 gitlab-ce/jammy 16.0.2-ce.0 amd64
,也就是说 apt 可以直接安装 gitlab-ce/jammy 16.0.2-ce.0 amd64
版本。
执行安装仓库的指令 curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
之后,再次执行依然找不到安装版本。
所以只能选择下载 deb 文件到服务器,再通过 dpkg -i gitlab-ce_14.1.1-ce.0_amd64.deb
离线安装:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_14.1.1-ce.0_amd64.deb/download.deb
结果下载失败,提示 Unable to establish SSL connection.
。有按照网上说的关闭防火墙 ufw disable
但并没有什么用。猜测可能是本地机房的特殊性导致的,尝试本地下载也是不行的,那就从其他服务器下载好之后再上传到新服务器。
经过一些下载、上传操作,再执行 dpkg -i gitlab-ce_14.1.1-ce.0_amd64.deb
离线安装。
提示修改 external_url
后重新配置 gitlab
,修改成可访问的 schema + 域名【或ip】后,执行 sudo gitlab-ctl reconfigure
成功后,会生成默认的 root 密码,在 /etc/gitlab/initial_root_password
中。
有教程提到需要手动备份还原以下两个文件:
- /etc/gitlab/gitlab.rc
- /etc/gitlab/gitlab-secrets.json
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need to restore these files manually.
第一个 gitlab.rc
属于 gitlab 配置文件,可以考虑对比原文件,找到修改过的配置项同步到新的配置文件中。
第二个 gitlab-secrets.json
文件负责为包含必需的敏感信息的列存储加密密钥。如果密钥丢失,则 gitlab 无法解密这些列,从而无法访问以下项目:
- CI/CD variables
- Kubernetes / GCP integration
- Custom Pages domains
- Project error tracking
- Runner authentication
- Project mirroring
- Web hooks
替换前注意备份好原来的文件,以防止未知情况发生。
之后将 gitlab 备份上传到 /var/opt/gitlab/backups/
中执行 gitlab-backup restore force=yes BACKUP=1685949497_2023_06_05_14.1.1
还原备份即可。