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 流程
- 安装Ubuntu2004操作系统,Ubuntu安装Gitlab时,推荐2004及其以上版本。
下载链接:https://ubuntu.com/download/alternative-downloads
- 下载deb格式的 Omnibus 安装包
国内清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/apt/packages.gitlab.com/gitlab/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/
- 通过dpkg工具安装deb格式的安装包
sudo dpkg -i gitlab-ce_14.1.7-ce.0_amd64.deb
- 安装完成后,让GitLab生成对应的配置项文件,否则没法启动GitLab服务。
sudo gitlab-ctl reconfigure
- 相关配置生成后即可启动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 数据恢复流程
- 新部署的GitLab版本与原GitLab版本需完全一致。
查看版本信息:
# 方法一
sudo gitlab-ctl version
# 方法二
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
- 还原配置文件
需要将GitLab主配置文件/etc/gitlab/gitlab.rb
,以及GitLab密钥文件/etc/gitlab/gitlab-secrets.json
进行还原。
- 重新加载GitLab配置
sudo gitlab-ctl reconfigure
- 停止连接到数据库的进程
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
- 将备份文件拷贝到存放GitLab存放备份文件的路径
说明:恢复 GitLab 数据的时候,默认是去gitlab_rails['backup_path']
配置项指定的路径下找配置文件,就算备份文件指定了绝对路径的形式,也不会改变这个行为。
- 执行数据恢复步骤,这个过程会先解压tar包
说明:指定备份文件名称的时候,不带 _gitlab_backup.tar
后缀,因为恢复命令会自动拼接正确的文件名。如果带了这个后缀则会出现问题。
gitlab-rake gitlab:backup:restore BACKUP=1742328467_2025_03_19_14.1.7
- 重启GitLab服务进行测试
gitlab-ctl restart