GitLab搭建以及数据迁移

GitLab简介和背景介绍

GitLab是一个基于Git实现的代码仓库软件,并且具有完善的管理界面和权限控制,一般可以用于在企业、学校等内部网络搭建Git代码仓库,对代码进行管理。公司内部之前已经有了一个GitLab代码仓库,出于安全考虑,打算在一台新的服务器上重新搭建个GitLab,定期将原来GitLab仓库的数据迁移到新的GitLab上,对代码进行备份保护。

GitLab搭建(Ubuntu 18.04)

GitLab的搭建方法还是比较简单的,首先官网给出的推荐配置:

  • 4核 4GB内存 支持500个用户。
  • 8核 8GB内存 支持1000个用户。

最少需要2核 2GB以上内存,不然直接挂掉。

安装依赖项:

sudo apt install curl openssh-server ca-certificates postfix

其中postfix是邮件服务器,因为是内网的环境,邮件是没有用到的,在安装的时候选择ok即可。接在来要安装GitLab,考虑到后续的数据迁移,在网上查了下资料,在GitLab v13之前如果做数据迁移的话,最好两个GitLab的版本是相同的。查看GitLab版本的方法:

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

发现公司之前装的版本是12.9.2,所以要在GitLab官网中找到对应的版本下载安装。
官网的下载地址是:https://packages.gitlab.com/gitlab/gitlab-ce。经过搜索发现有很多个版本,因为服务器是Ubuntu 18.04的系统,所以我们选择ubuntu/bionic,bionic就是Ubuntu 18.04系统的代号别名,xenial对应的则是16.04。题外话,Ubuntu 系统的代号取名非常生动,比如18.04是Bionic Beaver(仿生海狸),17.04是Zesty Zapus(开心的跳鼠),16.04是Xenial Xerus (好客的非洲地松鼠),感兴趣的同学可以去查询下。
GitLab搭建以及数据迁移_第1张图片

点击进入后会看到以下的界面:
GitLab搭建以及数据迁移_第2张图片
然后执行右上角的curl命令,curl是一种用于从网上获取数据(获取网页,下载文件)命令行工具:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

执行完成之后就能用apt install方法直接安装GitLab:

sudo apt-get install gitlab-ce=12.9.2-ce.0
GitLab搭建以及数据迁移_第3张图片

安装完成后,GitLab的配置文件为gitlab.rb, 位置在/etc/gitlab文件夹下,需要修改的内容:

  1. 修改GitLab Web管理界面地址,比如改为192.168.0.1:80,注意80端口要没有被其他服务占用,并且没有被防火墙禁止。
  2. 修改GitLab代码仓库位置(可选),默认位置是在/var/opt/gitlab/git-data,博主一般装机的习惯会把"/home"分区分的比"/"文件系统分区大的很多,考虑到后续硬盘空间问题,这里我们把代码仓库位置改到/home/gitlab/data下。在配置文件中查找关键字git_data_dirs,默认这块内容是被注释的,把注释去掉,在path中修改相应的路径。
    GitLab搭建以及数据迁移_第4张图片
  3. 修改GitLab备份压缩包文件位置(可选),默认位置是在/var/opt/gitlab/backups,改到/home/gitlab/backups下。在配置文件里搜索gitlab_rails[‘back_path’],然后修改为相应的路径。

下面介绍些GitLab常用的命令:

sudo gitlab-ctl stop                           // 停止GitLab服务
​sudo gitlab-ctl reconfigure ​                   // 重新配置GitLab服务
sudo gitlab-ctl restart ​                       // 重启所有GitLab组件 
sudo gitlab-ctl start                          // 启动所有GitLab组件
sudo systemctl enable gitlab-runsvdir.service  // 启用开机自启动

在修改完配置文件后执行sudo gitlab-ctl reconfigure(如果在配置文件中修改过默认路径,在用reconfigure命令时可能会因为文件权限问题报错,比如在本例中要在/home/gitlab这个路径下执行reconfigure命令)和sudo gitlab-ctl restart 之后就能在设定的Web IP地址上显示GitLab的登入页面。GitLab默认管理员账号名为root,第一次登入会让你重新设置登入密码,然后就能正常申请账号使用。

GitLab搭建以及数据迁移_第5张图片

GitLab数据迁移

在搭建完新的GitLab之后,我们需要将老GitLab中的数据迁移到新GitLab中,做备份。因为是服务器与服务器之间数据迁移,用网上的一种方法是,直接将老GitLab代码仓库/var/opt/gitlab/git-data里repository的数据直接拷贝到新GitLab代码仓库路径下,好像没有生效。所以在这里博主用的是使用gitlab-rake命令的方法。
首先通过gitlab-rake命令进行备份,备份时需要GitLab出于正常运行状态,直接用下面命令进行备份:

sudo gitlab-rake gitlab:backup:create

如果没有修改备份路径的话会默认在/var/opt/gitlab/backups下创建一个类似的压缩包文件:

将压缩包文件用scp命令拷贝到新服务器GitLab备份文件夹(/home/gitlab/backups)下,用sudo chmod 777命令修改压缩包文件权限。
在使用这个压缩包文件前要闭GitLab某些服务:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

然后用gitlab-rake命令, 注意BACKUP=后面跟的不是压缩包文件的全称:

gitlab-rake gitlab:backup:restore BACKUP=1688374217_2023_07_03_12.9.2

经过一段时间等待后,gitlab-rake命令恢复了数据,但是账号的数据还需要格外将原服务器中/etc/gitlab/gitlab-secrets.json文件覆盖到新的服务器中。不然你可能接下来会看到402的报错。
最后执行sudo gitlab-ctl reconfigure和sudo gitlab-ctl restart就完成了,经过测试可以使用老GitLab的账号直接登入新GitLab,并且看到对应项目代码,使用git clone也没有问题,备份完成。

这是博主进经过测试,GitLab数据迁移的方法,如果小伙伴们有更好的方法,欢迎留言,非常感谢。

你可能感兴趣的:(gitlab)