网上寻找el8包或直接使用一下链接 packages.gitlab.com/gitlab/gitl… 服务器可连外网情况下直接使用wget命令下载到指定位置,如/usr/local/gitlab下
内网则下载后上传至该目录 使用rpm命令进行安装
rpm -ivh ****.rpm
可先进行rpm -K命令验证包,如果签名无效则忽略签名
rpm --nosignature -i example.rpm
安装成功后会有提示
备份配置文件gitlab.rb
修改配置文件,将gitlab.example.com修改为内网IP地址和端口
注意此处若需要外网访问或使用了域名,则将上述配置项(external_url)修改为域名及外部端口,下方配置项(nginx)正常使用内部端口
去除#注释,并将端口修改为上述对应
执行gitlab-ctl reconfigure命令重新加载配置文件
等待执行完成后,执行gitlab-ctl restart命令,成功后会有提示
查看防火墙是否开启,若开启则将8500端口加入通行规则
firewall-cmd --zone=public --add-port=8500/tcp --permanent
重启防火墙
firewall-cmd --reload
此时访问 http://192.168.1.105:8005/users/sign_in可见
配置初始账户
user=User.where(username:"root").first
密码有些许要求,可自行测试
如果需要从旧服务器上进行迁移,考虑将/var/opt/下的gitlab文件夹打包,通过scp传输到新服务器上,记得备份
提供一套官方的迁移方案
GitLab 数据迁移到新服务器的完整流程如下,确保数据完整性和服务连续性:
一、旧服务器操作:数据备份
-
全量备份GitLab数据
bash
复制
sudo gitlab-rake gitlab:backup:create-
备份文件默认生成在
/var/opt/gitlab/backups/目录,命名格式:[TIMESTAMP]_gitlab_backup.tar -
使用
STRATEGY=copy可避免数据变更期间的备份不一致(适用于大型仓库):bash
复制
sudo gitlab-rake gitlab:backup:create STRATEGY=copy
-
-
手动备份关键配置文件
bash
复制
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak sudo cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.bak
二、传输备份文件到新服务器
-
通过SCP直接传输(适合小文件)
bash
复制
scp /var/opt/gitlab/backups/[备份文件名].tar 新服务器用户@新服务器IP:/目标路径/ -
通过Rsync增量传输(推荐大文件)
bash
复制
rsync -avzP /var/opt/gitlab/backups/[备份文件名].tar 新服务器用户@新服务器IP:/目标路径/
三、新服务器准备:安装GitLab
-
安装与旧服务器相同版本的GitLab
-
查看旧服务器版本:
bash
复制
sudo gitlab-rake gitlab:env:info | grep "Version" -
根据操作系统安装指定版本(以Ubuntu为例):
bash
复制
# 下载对应版本的.deb包 wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_[版本号]-ce.0_amd64.deb sudo dpkg -i gitlab-ce_[版本号]-ce.0_amd64.deb
-
四、恢复数据到新服务器
-
放置备份文件并设置权限
bash
复制
sudo cp [备份文件名].tar /var/opt/gitlab/backups/ sudo chown git:git /var/opt/gitlab/backups/[备份文件名].tar -
停止相关服务
bash
复制
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq -
执行恢复命令
bash
复制
sudo gitlab-rake gitlab:backup:restore BACKUP=[备份文件名中的TIMESTAMP]- 按提示输入 yes 确认恢复数据库。
-
恢复配置文件
bash
复制
sudo cp gitlab.rb /etc/gitlab/ sudo cp gitlab-secrets.json /etc/gitlab/ -
重新配置并重启服务
bash
复制
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
五、验证迁移结果
-
基础检查
bash
复制
sudo gitlab-rake gitlab:check SANITIZE=true -
功能验证
-
访问Web界面,确认项目、用户、组数据完整。
-
执行仓库克隆和推送测试:
bash
复制
git clone http://新服务器地址/项目组/项目.git cd 项目 && touch test.txt && git add . && git commit -m "test" && git push
-
六、切换DNS及防火墙配置
-
更新域名解析
将域名A记录指向新服务器IP,等待DNS生效(TTL时间)。 -
开放端口
确保防火墙允许HTTP/HTTPS(80/443)和SSH(22)端口:bash
复制
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp
七、高级注意事项
- 仓库存储路径调整
若旧服务器自定义了存储目录(git_data_dir),需确保新服务器路径一致,并复制所有仓库文件。 - 对象存储迁移
若使用外部对象存储(如AWS S3),需在新服务器gitlab.rb中配置相同的存储参数。 - CI/CD Runner重注册
原有Runner需重新注册到新GitLab实例,或修改config.toml中的URL。
八、回滚方案(迁移失败时)
-
停止新服务器GitLab服务:
bash
复制
sudo gitlab-ctl stop -
删除错误数据,重新尝试恢复备份。
-
若无法解决,将DNS切回旧服务器,保证服务可用性。
关键风险提示
- 版本一致性:新旧服务器GitLab版本差异可能导致数据结构不兼容,务必严格匹配版本号(包括小版本)。
- 加密信息:
gitlab-secrets.json丢失将导致两步验证、CI变量等加密数据无法解密。 - 停机时间:大型仓库备份/恢复耗时较长,建议在低峰期操作,并通过
maintenance page通知用户。