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 (好客的非洲地松鼠),感兴趣的同学可以去查询下。

点击进入后会看到以下的界面:

然后执行右上角的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的配置文件为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中修改相应的路径。
  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数据迁移

在搭建完新的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数据迁移的方法,如果小伙伴们有更好的方法,欢迎留言,非常感谢。

<think>好的,用户想了解如何搭建GitLab私有仓库。我需要根据提供的引用内容整理出一个清晰的步骤教程。首先,我得确认用户可能使用的操作系统,根据引用[1]和[2],示例是在Linux CentOS8上搭建的,所以我会以CentOS为例。接下来,需要分步骤说明,包括下载安装GitLab、配置、启动服务、防火墙设置、访问以及内网穿透的部分。 首先,下载GitLab包,引用[1]提到下载GitLab,可能需要使用wget命令获取rpm包。安装依赖,比如curl、policycoreutils等,这些在安装前可能需要先安装。然后,安装GitLab的rpm包,使用rpm命令,之后进行重新配置,引用[4]中的gitlab-ctl reconfigure命令需要用到。 接下来配置GitLab,修改/etc/gitlab/gitlab.rb文件,设置外部URL,这里用户可能需要改成自己的域名或IP。然后启动服务,引用[4]中的gitlab-ctl restart命令,确保服务运行正常。防火墙部分需要开放HTTP和HTTPS端口,可能用firewalld或者iptables,用户可能对这部分不太熟悉,需要详细说明。 初次访问需要设置root密码,这部分要提醒用户注意安全。另外,引用[5]提到了GitLab的各个目录结构,比如仓库存储路径在/var/opt/gitlab/git-data/repositories,可能需要说明数据存储位置,方便用户备份或迁移。 内网穿透部分,引用[1]和[2]提到使用Cpolar工具,但用户可能不一定需要这部分,所以作为可选步骤。需要简要说明安装和创建隧道,但具体细节可能需要用户参考其他资料。 最后,生成相关问题,考虑用户可能遇到的后续问题,比如优化、备份、迁移仓库等,以及安全配置和CI/CD集成,这些都是搭建后常见的问题。确保问题覆盖用户可能的进一步需求。 检查是否有遗漏的步骤,比如备份路径在引用[5]中提到,可以在教程中提及如何备份。另外,配置文件的修改可能需要示例,比如external_url的设置,需要给出例子。还要注意命令的正确性,比如sudo的使用,权限问题等,确保用户能顺利执行。 总之,整理出一个逻辑清晰、步骤明确的教程,涵盖安装、配置、访问和扩展部分,同时生成相关问题帮助用户深入使用GitLab。</think>### 如何搭建GitLab私有仓库教程 #### **步骤1:安装前准备** 1. **系统要求** - 推荐使用Linux系统(如CentOS 8/7、Ubuntu等),确保服务器内存≥4GB,硬盘≥10GB[^1][^4]。 - 更新系统软件包: ```bash sudo yum update -y # CentOS ``` 2. **安装依赖工具** - 安装必要组件: ```bash sudo yum install -y curl policycoreutils openssh-server postfix ``` --- #### **步骤2:安装GitLab** 1. **下载GitLab安装包** - 添加GitLab仓库并安装: ```bash curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo yum install -y gitlab-ce ``` - 或手动下载RPM包安装: ```bash wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-XXX.rpm sudo rpm -i gitlab-ce-XXX.rpm ``` 2. **初始化配置** - 修改配置文件`/etc/gitlab/gitlab.rb`,设置外部访问地址: ```ruby external_url 'http://<服务器IP或域名>' # 例如 http://192.168.1.100 ``` - 应用配置并启动服务: ```bash sudo gitlab-ctl reconfigure # 重载配置 sudo gitlab-ctl restart # 重启服务 ``` --- #### **步骤3:访问与配置** 1. **防火墙设置** - 开放HTTP/HTTPS端口: ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` 2. **首次访问** - 浏览器输入`http://<服务器IP或域名>`,首次登录需设置`root`用户密码。 3. **仓库存储路径** - 默认仓库路径为`/var/opt/gitlab/git-data/repositories`,可在`gitlab.rb`中修改[^5]。 --- #### **步骤4:内网穿透(可选)** 若需公网访问私有仓库,可结合内网穿透工具(如Cpolar): 1. 安装Cpolar客户端并创建隧道,映射本地80端口至公网域名[^2]。 2. 在GitLab配置中更新`external_url`为公网地址。 --- #### **关键命令速查** ```bash sudo gitlab-ctl start # 启动服务 sudo gitlab-ctl stop # 停止服务 sudo gitlab-ctl tail # 查看日志 sudo gitlab-rake gitlab:backup:create # 创建备份[^5] ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李71~李先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值