当前位置: 首页 > article >正文

GitLab 部署说明

目录

      • GitLab 平台介绍
      • GitLab 安装部署
      • GitLab 管理命令
      • GitLab 配置说明
        • 1、GitLab Web 访问配置
        • 2、GitLab NGINX相关配置
        • 3、GitLab HTTPS相关配置:
        • 4、GitLab 启用Git LFS配置
        • 5、GitLab 数据备份配置
        • 6、GitLab 邮件通知设置
      • GitLab 数据备份流程
        • 1、备份GitLab实例信息
        • 2、备份GitLab 配置文件
      • GitLab 数据恢复流程

GitLab 平台介绍

GitLab 是建立在 分布式版本控制系统Git 之上的平台,不仅提供了 Git 的核心功能,还能通过web界面来对项目进行管理、权限控制等。

GitLab有三个版本,分别是:

  • GitLab-CE(Community Edition):社区版,开源且免费。提供了 GitLab 的核心功能
  • GitLab-EE(Enterprise Edition):企业版,需要付费。在社区版的基础上增加了高级功能
  • GitLab-JH:极狐版,针对中国市场进行本地化定制的版本,优化了网络访问和用户体验

GitLab 官网地址

  • GitLab 官网:https://about.gitlab.com
  • GitLab 极狐版官网:https://gitlab.cn/

GitLab 安装部署

宿主机直接部署GitLab时,为了简化部署的流程和难度,GitLab提供了Omnibus 安装包,Omnibus 安装包是GitLab官方将运行GitLab实例所必需的组件和依赖整合在一起。这样就能避免安装时出现的各个组件之间的依赖、配置、兼容等问题。

GitLab详细的安装流程可以参考官方文档:https://about.gitlab.com/install/

生产环境下部署GitLab时,为了让服务可靠运行,一般推荐以下硬件配置:

  • CPU:8核心以上
  • 内存:16GB以上(关闭swapp分区)
  • 存储:两块4T的企业级SSD做RAID 1

例如:Ubuntu 2004 宿主机部署GitLab 流程

  1. 安装Ubuntu2004操作系统,Ubuntu安装Gitlab时,推荐2004及其以上版本。

下载链接:https://ubuntu.com/download/alternative-downloads

  1. 下载deb格式的 Omnibus 安装包

国内清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/apt/packages.gitlab.com/gitlab/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/

  1. 通过dpkg工具安装deb格式的安装包
sudo dpkg -i gitlab-ce_14.1.7-ce.0_amd64.deb
  1. 安装完成后,让GitLab生成对应的配置项文件,否则没法启动GitLab服务。
sudo  gitlab-ctl reconfigure
  1. 相关配置生成后即可启动GitLab相关服务
sudo gitlab-ctl restart

# 查看组件运行状态,全是run则安装成功
sudo gitlab-ctl status

通过Omnibus 安装包部署GitLab实例后,常见的一些工作目录

  • 配置文件存放路径:/etc/gitlab
  • 数据文件存放路径:/etc/gitlab
  • 日志文件存储路径:/var/log/gitlab/
  • 应用程序文件路径:/opt/gitlab/
  • 备份文件存储路径:/var/opt/gitlab/backups

GitLab 管理命令

gitlab-ctl 类

gitlab-ctl 主要用于管理 GitLab 服务的启动、停止、重启、状态检查、重新配置等操作

  • 启动所有 GitLab 相关服务:gitlab-ctl start
  • 停止所有 GitLab 相关服务:gitlab-ctl stop
  • 重启所有 GitLab 相关服务:gitlab-ctl restart
  • 检查各个服务的运行状态:gitlab-ctl status
  • 重新加载GitLab的配置项:gitlab-ctl reconfigure
  • 查看GitLab的日志信息:gitlab-ctl reconfigure

gitlab-rake 类

gitlab-rake 命令可以用来管理和维护 GitLab的 Rake 任务。

  • 检查 GitLab 配置和环境:gitlab-rake gitlab:check
  • 清除 GitLab 的缓存:gitlab-rake cache:clear
  • 创建当前 GitLab 数据的备份:gitlab-rake gitlab:backup:create
  • 根据指定备份文件恢复数据:itlab-rake gitlab:backup:restore BACKUP=备份文件名

GitLab 配置说明

GitLab安装完成后,还需要修改对应的配置才能正常访问Gitlab的web页面。GitLab主配置文件路径:/etc/gitlab/gitlab.rb

1、GitLab Web 访问配置

指定访问GitLab web页面的URL,格式为:external_url 'url'。例如:external_url 'http://10.0.0.166'

说明:GitLab的web服务器采用的是NGINX,如果只配置了external_url选项,NGINX其他配置项保持默认,则会按照以下规则进行处理:

  • NGINX监听的端口:默认从external_url 解析端口信息做为NGINX的端口
  • NGINX端口的地址:默认监听的是所有接口 0.0.0.0,如果GitLab物理机存在多网卡,所有网卡都会监听这个端口。
2、GitLab NGINX相关配置
  • 使用GitLab自带的NGINX服务做为Web服务器:nginx['enable'] = true(默认就是true)
  • 指定NGINX服务监听的端口号:nginx['listen_port'] = number 。指定了NGINX端口后,external_url 中的端口需要和NGINX端口保持一致。例如:nginx['listen_port'] = 8080
  • 指定NGINX端口监听的地址:nginx['listen_addresses'] = x.x.x.x,默认监听的是所有接口 0.0.0.0,如果GitLab物理机存在多网卡,可以将端口绑定到特定网卡 IP。例如:nginx['listen_addresses'] = ['10.0.0.166']
  • 限制 HTTP 上传大小:nginx['client_max_body_size']='size',如果不指定则不限制推送仓库的大小。例如:nginx['client_max_body_size'] = '250m'
3、GitLab HTTPS相关配置:
  • 把 HTTP 自动重定向到 HTTPS:nginx['redirect_http_to_https']=true
  • 指定重定向后HTTPS的端口号:nginx['redirect_http_to_https_port']=number
  • 指定HTTPS的完整证书链路径:nginx['ssl_certificate']=/path
  • 指定证书匹配的 私钥文件 的路径:nginx['ssl_certificate_key']=/path
4、GitLab 启用Git LFS配置
  • 打开 LFS 支持:gitlab_rails[‘lfs_enabled’] = true
  • 把 LFS 对象存放在自定义路径:gitlab_rails[‘lfs_storage_path’] =/path

例如

gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
5、GitLab 数据备份配置
  • 自动创建/管理备份目录:gitlab_rails[‘manage_backup_path’]=true(默认就是true,)
  • 指定备份文件存放路径:gitlab_rails[‘backup_path’]=/path。默认是/var/opt/gitlab/backups
  • 指定备份文件的权限信息:gitlab_rails[‘backup_archive_permissions’]
  • 指定备份文件的保留时间:gitlab_rails[‘backup_keep_time’]。默认是604800 (7 天),即超过七天的备份文件会被删除。
  • 是否只备份数据库,不备份其他数据:gitlab_rails[‘backup_pg_schema’]

例如

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/opt/gitlabbackups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 259200
6、GitLab 邮件通知设置

通过邮件配置,可以让GitLab向外部 SMTP 服务器发送邮件,从而实现通知、邀请、密码重置等功能。

配置项

# 是否启用smtp协议,允许GitLab使用smtp协议发送邮件
gitlab_rails['smtp_enable'] = true/false

# 指定smtp服务器的地址
gitlab_rails['smtp_address'] = "smtp.qq.com" 

# 指定smtp服务器使用的端口。465:用于 SSL/TLS 直接加密连接。587:通常用于 STARTTLS 加密连接
gitlab_rails['smtp_port'] = 465/587

# 指定GitLab连接到 SMTP 邮件服务器时所使用的用户名,即向客户端发邮件时,以谁的身份发送
gitlab_rails['smtp_user_name'] ="username"

# 邮箱的授权码,GitLab 会使用这个帐号和对应的密码登录到邮件服务器
gitlab_rails['smtp_password'] = "password"

# 指定邮件发送时所使用的域名,域名通常会体现在邮件头信息中,确保收件人邮箱能够正确识别邮件的来源。
gitlab_rails['smtp_domain'] = "smtp.qq.com" 

# 指定 GitLab 在连接 SMTP 服务器时所采用的身份验证方式。一般使用login
gitlab_rails['smtp_authentication'] = "login"

# 启用后,如果 SMTP 服务器支持 STARTTLS,通信过程就会自动切换到 TLS 加密模式。一般设置为true
gitlab_rails['smtp_enable_starttls_auto'] = true/false

# 在整个连接过程中直接使用 TLS,如果指定的端口是465端口,就需要开启。
gitlab_rails['smtp_tls'] = true

例如:让GitLab使用QQ邮箱给客户端发送消息

gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.qq.com" 
gitlab_rails['smtp_port'] = 465 
gitlab_rails['smtp_user_name'] = "270706881@qq.com" 
gitlab_rails['smtp_password'] = "fpwpqzzzanjacagi" # qq邮箱的key
gitlab_rails['smtp_domain'] = "smtp.qq.com"   
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true  
gitlab_rails['smtp_tls'] = true   

GitLab 数据备份流程

官方文档:https://docs.gitlab.com/administration/backup_restore/restore_gitlab/

1、备份GitLab实例信息

GitLab内置 一键式备份/恢复工具,可以快速把整个GitLab实例的数据打包保存,所哟可以通过一下命令对GitLab进行全备份。

sudo gitlab-backup create

sudo gitlab-rake gitlab:backup:create

说明

  • gitlab-backup 是实际上是一个封装了 Rake 任务的可执行脚本,所以以上两个命令执行其中一个即可实现全备份。
  • 备份文件会默认存储到gitlab_rails[‘backup_path’]指定的路径下,备份文件名按照GitLab内置的规则生成。
2、备份GitLab 配置文件
  • GitLab 主配置文件:/etc/gitlab/gitlab.rb
  • GitLab 密钥信息文件:/etc/gitlab/gitlab-secrets.json
  • NGINX 相关配置文件:例如配置了https,需要将相关证书文件也进行备份。

说明

  • GitLab安装完成后,在第一次执行 gitlab-ctl reconfigure 时自动生成的密钥文件,存放在/etc/gitlab目录下,作用是为 GitLab 提供各种 加密/签名密钥。
  • 每个 GitLab 实例都会 随机生成一套唯一的密钥,所以每个GitLab的gitlab-secrets.json文件内容是不一样的,所以数据恢复的时候,必须使用原实例的 gitlab-secrets.json,否则无法解密数据库中的敏感数据,恢复会失败。
  • 数据备份期间 GitLab 可以正常使用,不会影响到 GitLab 的数据备份。

GitLab 数据恢复流程

  1. 新部署的GitLab版本与原GitLab版本需完全一致。

查看版本信息

# 方法一
sudo gitlab-ctl version

# 方法二
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  1. 还原配置文件

需要将GitLab主配置文件/etc/gitlab/gitlab.rb,以及GitLab密钥文件/etc/gitlab/gitlab-secrets.json 进行还原。

  1. 重新加载GitLab配置
sudo gitlab-ctl reconfigure
  1. 停止连接到数据库的进程
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
  1. 将备份文件拷贝到存放GitLab存放备份文件的路径

说明:恢复 GitLab 数据的时候,默认是去gitlab_rails['backup_path'] 配置项指定的路径下找配置文件,就算备份文件指定了绝对路径的形式,也不会改变这个行为。

  1. 执行数据恢复步骤,这个过程会先解压tar包

说明:指定备份文件名称的时候,不带 _gitlab_backup.tar 后缀,因为恢复命令会自动拼接正确的文件名。如果带了这个后缀则会出现问题。

gitlab-rake gitlab:backup:restore BACKUP=1742328467_2025_03_19_14.1.7
  1. 重启GitLab服务进行测试
gitlab-ctl restart

http://www.kler.cn/a/610819.html

相关文章:

  • AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
  • 6.4 模拟专题:LeetCode1419.数青蛙
  • Linux网站搭建(新手必看)
  • 基于k3s部署Nginx、MySQL、PHP和Redis的详细教程
  • 深度学习(practice) Note.2
  • idea 没有 add framework support(添加框架支持)选项
  • matplotlib——南丁格尔玫瑰
  • 2.Excel :快速填充和拆分重组
  • 自动驾驶VLA模型技术解析与模型设计
  • Kotlin的语言特性及使用场景
  • DDD领域驱动设计详解-Java/Go/JS/Python语言实现
  • 一周掌握Flutter开发--7、包管理
  • 【自学笔记】ELK基础知识点总览-持续更新
  • 2、pytest核心功能(进阶用法)
  • QT Quick(C++)跨平台应用程序项目实战教程 4 — QML基本使用方法
  • fastapi下载图片
  • 大语言模型-2.2/3-主流模型架构与新型架构
  • C#基础学习(五)函数中的ref和out
  • Linux系统管理与编程11: DHCP中继服务部署
  • OpenGL ES 2.0与OpenGL ES 3.1的区别