私有gitlab服务迁移

本文介绍了如何在老机器上备份GitLab数据,然后在新机器上安装相同版本的GitLab,配置镜像源、依赖服务,并通过YUM安装。接着,详细说明了如何恢复备份数据、修改Nginx配置以及解决登录问题。最后,提供了重置GitLab root账号密码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备份数据查看版本信息

在老机器上先进行数据备份

gitlab-rake gitlab:backup:create

使用备份命令后,在/var/opt/gitlab/backups/ 路径下会有备份的一个压缩包

 

 在服务器上需要安装和老git服务同样的版本, 查看老版本gitlab信息

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

新机器CentOS上安装配置gitlab

配置镜像源

vi /etc/yum.repos.d/gitlab-ce.repo

输入:

[gitlab-ce]
name=gitlab-ce
# 清华大学的镜像源
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

配置应用的依赖

# 安装和配置openssh
sudo yum install curl policycoreutils-python openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
# 安装和配置邮件服务
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

我这里是安装的社区版本,需要确定自己的是社区版还是企业版,对应的版本后缀分别为ce(社区版本) 和 ee(企业版)

直接使用yum命令安装

yum install -y 自己gitlab的版本

安装完成后初始化服务

sudo gitlab-ctl reconfigure

修改访问nginx端口配置

vim /etc/gitlab/gitlab.rb

修改external_url对应的ip地址为你当前服务器的ip, 端口保证不与其他服务冲突

 配置gitlab的Nginx配置,修改端口和ip地址

vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

 使用scp命令将老服务的备份tar文件拷贝到新服务器上

拷贝后使用命令恢复拷贝数据

sudo gitlab-rake gitlab:backup:restore BACKUP=1658404804_2022_07_21_14.10.2(这里是你自己的备份文件编号,不需要加后缀)

 

备份完成后如果gitlab的root账号出现登录不上的情况可以重置gitlab的root账号密码

gitlab-rails console -e production

#如果是低版本的gitlab也可以使用下面的命令

gitlab-rails console production

进入gitlab终端

终端命令设置密码:

irb(main):001:0> user = User.where(username:"root").first
=> #<User id:1 @root>
irb(main):002:0> user.password = "12345679"
=> "12345679"
irb(main):003:0> user.save!
Enqueued ActionMailer::MailDeliveryJob (Job ID: 25a5a138-a99d-4f08-996c-22a88e7c23e8) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007fc2f86abdb0 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> true

 完成后登录gitlab服务查看对应的仓库数据是否完整

### GitLab 用户迁移的方法和步骤 #### 准备工作 为了确保用户迁移过程顺利,在开始之前需确认源GitLab实例和目标GitLab实例均已正常运行并完成必要的备份操作。这有助于防止意外情况发生时能够快速恢复环境。 #### 迁移前注意事项 由于用户的个人信息、权限设置以及SSH密钥等内容较为敏感,因此在执行具体的操作流程之前应当仔细阅读官方文档中的安全指导原则[^1]。对于具有复杂架构的企业级部署方案来说,还应该特别关注那些针对特殊需求定制的功能模块是否会受到影响。 #### 数据导出 通过API接口可以实现自动化批量处理账户信息的任务。利用`GET /admin/users`请求获取所有注册成员列表,并保存至本地文件系统中作为后续导入工作的依据。此外还可以考虑调用其他相关联的服务端点来收集更多辅助资料,比如团队协作关系和个人偏好设定等附加属性[^2]。 ```bash curl --header "PRIVATE-TOKEN: <your_access_token>" "https://source.gitlab.com/api/v4/admin/users" ``` #### 创建新账号 前往目的站点创建对应数量的新用户实体。如果两个平台之间存在差异,则可能需要手动调整部分字段以匹配新的结构布局;也可以编写脚本来简化这一重复劳动的过程。务必保证用户名唯一性以免造成混淆冲突现象的发生。 #### 导入历史记录 借助于先前准备好的JSON格式化文本串流,逐条解析其中包含的关键要素并通过POST方式提交给远程服务器上的相应资源路径下。注意这里涉及到密码重置邮件发送机制,所以最好提前通知相关人员留意查收验证链接以便及时激活各自的身份凭证[^3]。 ```json { "email": "example@example.com", "password": "<secure_password>", "username": "unique_username", ... } ``` ```bash for user in $(cat users.json); do curl --request POST \ --data "$user" \ --header "PRIVATE-TOKEN: <your_access_token>" \ https://target.gitlab.com/api/v4/admin/users; done ``` #### 同步关联对象 除了主体之外还有许多依附其上或相互间建立联系的小部件也需要同步转移过去。例如私有仓库访问权、议题评论区留言痕迹之类的细碎事项都不可遗漏掉。这部分工作往往比较繁琐耗时较长,建议采用增量更新策略逐步推进直至完全一致为止[^4]。 #### 验证完整性 最后一步就是进行全面细致地审查核对整个转换后的状态是否符合预期效果。随机抽取若干样本进行测试登录尝试,检查各项功能按钮能否正常使用,浏览页面布局样式有没有明显偏差等问题。一旦发现问题立即回滚至上一版本重新排查原因所在直到最终达到满意程度结束本次作业。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值