GitLab从安装到全自动化备份一条龙

本文详细介绍了如何在新服务器上安装GitLab,从旧服务器手动和自动备份GitLab,通过SCP自动将备份包转移到新服务器,以及在新服务器上自动恢复备份的过程。涉及配置、权限设置、定时任务和SSH密钥对的使用,实现自动化备份和恢复,确保GitLab数据的安全和高效管理。

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


一个学习编程技术的公众号。每天推送高质量的优秀博文、开源项目、实用工具、面试技巧、编程学习资源等等。目标是做到个人技术与公众号一起成长。欢迎大家关注,一起进步,走向全栈大佬的修炼之路

需求

  1. 在新服务器上安装并搭建好gitlab
  2. 手动+自动将旧服务器上的gitlab备份
  3. 手动+自动将gitlab备份包scp到新服务器上
  4. 手动+自动恢复新服务器上的gitlab备份包
  5. 在新旧服务器上自动删除过期备份包

前提

  1. 版本
  • gitlab-ce是社区版
  • gitlab-ee是企业版
  1. 方案
  • 定时器执行shell脚本
  1. 工具
  1. 操作
  • 如果不是root用户请在所有命令前+sudo
  • 新老服务器gitlab版本保持一致
  • 旧服务器用的是gitlab-ee_10.7.2-ee.0_amd64.deb版本的gitlab,示例也选择这个企业版
  1. backups目录的只有root才能操作的,但是gitlab恢复操作使用者是git

所以将新旧服务器上/var/opt/gitlab/backups文件夹设置为可读可写可执行,方便操作

sudo chmod 777 backups/

现在开始,我会一步一步操作,带领大家一条龙从安装到自动化备份,最终实现再也不要被gitlab备份困扰的问题且可以专心敲代码的梦想

在新服务器上安装并搭建好gitlab

  1. 安装方式一:官网安装(慢)
  2. 安装方式二:国内镜像安装(快)

官网安装gitlab

请戳gitlab的官方网站


由于的我系统是ubuntu,所以我选择ubuntu
安装步骤就出现在下面了

  1. 安装和配置必须的依赖
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
  1. 安装Postfix来发送通知邮件。如果你想要用另一个方式去发送邮件,请在gitlab安装好后,下一步就是配置一个额外的SMTP服务。
sudo apt-get install -y postfix

在安装Postfix时一个配置屏幕会出现。选择Internet Site并且回车。mail name为你的服务器的DNS并且回车。如果额外的屏幕出现,继续接受默认配置并且回车。

  1. 添加gitlab安装包仓库并安装
    添加gitlab包仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
  1. 安装gitlab包。选择https://gitlab.example.com更改为要访问gitlab实例的url。安装将自动配置并启动gitlab到url。

为了https://gitlab将自动请求带有Let's Encrypt的证书,这需要入栈http访问和有效的主机名。

sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee

此时你会发现慢的要死,速度是100k/s,毕竟两者隔了一堵墙,那就换国内镜像安装吧

清华镜像安装gitlab

既然官网太慢,那么我们选择清华镜像安装gitlab

清华大学开源软件镜像站

Gitlab Community Edition 镜像使用帮助

里面有各种版本

备份需要和原服务器的gitlab版本一致,否则无法安装

在搜索栏里搜索gitlab,就会跳出相关gitlab的版本

gitlab-ee_10.7.2-ee.0_amd64.deb版本在/ubuntu/pool/bionic/main/g/gitlab-ee/

或者是直接访问到gitlab-ee版本下,

直接访问到gitlab-ce版本下。

  1. 先更新仓库
sudo apt-get update
  1. 加入gitlab的GPG公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
  1. 写进再选择你的 Debian/Ubuntu 版本

文本框中内容写进/etc/apt/sources.list.d/gitlab-ce.list,

我是写进/etc/apt/sources.list.d/gitlab-ee.list,

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu xenial main

  1. 更新apt仓库,安装 gitlab-ee
sudo apt-get update
sudo apt-get install gitlab-ee=10.7.2-ee.0

下载gitlab-ee_10.7.2-ee.0

这样就安装了10.7.2-ee.0版本了。

配置并启动gitlab

sudo gitlab-ctl reconfigure

每当修改了GitLab的配置之后,都要执行如下的命令,重启配好的配置并重启GitLab,然后查看GitLab的状态

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl status

打开浏览器,默认是访问http://localhost即可。如果改了ip和端口,则访问http://ip:端口既可

这就是新搭建的gitlab

安装gitlab出现的问题

断口被占用

端口80以及端口8080分别被Ubuntu服务器上的Apache、Tomcat和nginx等服务所占用。

我的做法是修改 /etc/gitlab/gitlab.rb 文件

vim /etc/gitlab/gitlab.rb

修改其中的external_url

手动将旧服务器上的gitlab备份

修改gitlab备份地址

备份地址默认是在var/opt/gitlab/backups

  1. 打开原gitlab服务器终端,通过修改gitlab.rb配置文件来修改默认存放备份文件的目录
sudo vim /etc/gitlab/gitlab.rb
  1. 默认如下
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
  1. backup_path改为自定义的目录
gitlab_rails['backup_path'] = "/data/gitlab/backups"

  1. 修改后重启配置文件
sudo gitlab-ctl reconfigure

我的示例里是没有改,备份的时间倒是改成了7天

/etc/gitlab/gitlab.rb

# Change the external_url to the address your users will type in their browser
external_url 'http://192.168.3.2'
unicorn['port'] = 10086
gitlab_rails['manage_backup_path']=true
gitlab_rails['backup_path']="var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions']=0644
gitlab_rails[
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值