16.3 GitLab Enterprise Edition 部署

安装 GitLab EE

本节介绍如何安装 GitLab 企业版(Enterprise Edition,EE),有两种安装方式可供选择。GitLab EE 是 GitLab 的企业版本,提供额外的企业级功能。GitLab CE(社区版)是开源版本,功能相对简化。

# pkg install gitlab-ee

或使用 Ports 安装:

# cd /usr/ports/www/gitlab/
# make FLAVORS=ee install clean

该 Port 同时包含 GitLab CE(社区版);若要安装 EE(企业版),必须指定参数 FLAVORS=ee

安装后配置说明

安装完成后,查看安装包的说明信息,了解后续需要完成的配置步骤。

# pkg info -D gitlab-ee
gitlab-ee-17.8.2_1:
On install:
Gitlab was installed successfully.
# GitLab 已成功安装。

You now need to set up the various components of Gitlab, so please
follow the instructions in the guide at:

https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/install/17.8-freebsd.md
# 接下来你需要配置 GitLab 的各个组件。
# 请参考上面的 FreeBSD 安装指南链接进行设置。

On upgrade from gitlab-ee<11.9.7:
!! WARNING: Please make sure you read in UPDATING entry 20190423 !!
# 如果你从低于 11.9.7 的旧版本升级,
# 请务必阅读 FreeBSD ports 树中 `UPDATING` 文件中 20190423 的条目!

On upgrade:
If you just installed an major upgrade of GitLab, for example you
switched from 17.5.x to 17.6.x, please follow the instructions in the guide at:

https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/17.7-17.8-freebsd.md
# 如果你进行了主版本升级(例如从 17.5.x 升级到 17.6.x),
# 请按照上面链接的升级指南进行操作。

If you just installed an minor upgrade of GitLab please follow
the instructions in the guide at:

https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/update/freebsd_patch_versions.md
# 如果只是进行了小版本升级(例如从 17.8.1 升级到 17.8.2),
# 请参阅上面的补丁版本更新指南。

开发者已提供完整安装说明,详见 https://gitlab.com/mfechner/freebsd-gitlab-docu/blob/master/install/17.8-freebsd.mdarrow-up-right

如需赞助该开发者,可访问:https://www.patreon.com/mfechner_gitlab_freebsdarrow-up-right

启动服务

安装完成后,需要设置并启动相关服务。首先设置 GitLab 服务开机自启动:

PostgreSQL 数据库配置

GitLab 需要使用 PostgreSQL 数据库。当前 GitLab 支持的 PostgreSQL 版本为 16 及更高版本。PostgreSQL 是一个开源对象关系型数据库管理系统,GitLab 使用其存储用户数据、仓库信息等。

请读者参考本书其他相关章节自行完成 PostgreSQL 数据库的部署。

数据库与用户初始化

创建 GitLab 使用的数据库和用户:

数据库扩展配置

为 GitLab 数据库创建必要的扩展:

Redis 缓存服务配置

Redis 是一个开源的内存数据结构存储系统,GitLab 使用其作为缓存和会话存储。Redis 已自动作为依赖安装。

查看安装后信息:

相关文件结构:

配置 socket

配置 Redis 使用 UNIX socket 进行通信:

配置服务

启动并管理 Redis 服务:

配置用户权限

将用户 git 添加到 redis 用户组,以允许 GitLab 访问 Redis:

Git 环境配置

GitLab 的核心组件包括:

  • Puma:GitLab 使用的 Web 应用服务器

  • Gitaly:负责 Git 仓库存储和访问的服务

  • Sidekiq:后台任务处理队列

  • GitLab Workhorse:智能反向代理,处理 HTTP 请求

配置 Git 环境:

配置 GitLab

配置文件路径在 /usr/local/www/gitlab

调整 GitLab 负载

查看系统的 CPU 核心数量:

编辑 /usr/local/www/gitlab/config/puma.rb,将 workers 3 改为上面输出的值,即改为 workers 16

数据库连接配置

编辑 /usr/local/www/gitlab/config/database.yml,将 password: "secure password" 修改为 password: "password"password 是上面设置的数据库密码)。

GitLab 需要写入权限来创建符号链接:

初始化 GitLab 数据库和相关配置:

撤销之前授予的权限:

  • 检查 GitLab 及其环境是否配置正确

重新设置权限:

检查 GitLab 及其环境是否配置正确:

如果使用 corepack(Node.js),将 package.json 文件的所有者更改为 git 用户:

设置 Python 版本,设置前用 ls 先查看:

在确认版本后,以 git 用户身份设置 Yarn 使用指定的 Python 解释器:

编译资源,以 git 用户身份在 GitLab 目录安装生产依赖并使用 lockfile 文件:

以 git 用户身份在生产环境下编译 GitLab 资产,同时跳过数据库和存储验证:

将 PostgreSQL 用户 git 设置为非超级用户:

启动 GitLab 服务:

Nginx

Nginx 是一个高性能的 Web 服务器和反向代理,GitLab 使用其作为前端 Web 服务器。

安装

使用 pkg 安装:

或者使用 ports 安装:

配置 /usr/local/etc/nginx/nginx.conf

编辑 /usr/local/etc/nginx/nginx.conf,找到:

修改如下以包含 GitLab 提供的 Nginx 配置文件:

目录结构:

配置服务

设置 Nginx 在系统启动时自动启动:

启动 Nginx 服务:

配置 GitLab Pages

GitLab Pages 是 GitLab 提供的静态网站托管服务。配置 GitLab Pages:

启动服务

启动 GitLab Pages 服务:

检查配置

以 git 用户身份检查 GitLab 生产环境配置:

平台访问与初始化

重启 GitLab 服务:

在浏览器中输入服务器 IP 并回车,例如本示例为 192.168.197.128。请填写电子邮箱并设置密码(至少 8 位,需包含复杂字符)。

GitLab 登录页

登录:

登录 GitLab
GitLab 主页

语言环境配置

点击头像,进入“Preferences”,找到“Localization”,选择“简体中文”,然后点击“Save changes”保存设置:

修改 GitLab 界面语言

许可证激活(仅供学习参考)

警告

此部分内容仅供个人学习参考,不得用于商业用途。本书不承担相关责任。请支持正版:购买许可证arrow-up-right

安装 gitlab-license(gem 是 ruby 包管理器,上面已经作为依赖自动安装了):

将以下内容写入 license.rb 文件:

使用 Ruby 执行 license.rb 脚本:

备份旧的公钥:

查看目录下文件。在目录下生成三个文件:

用新生成的公钥替换原有公钥:

查看公钥:

访问 http://192.168.197.128/admin/application_settings/generalarrow-up-right(请替换为你的 IP 地址),点击“添加许可证”,然后在“请输入许可证密钥”框中粘贴 GitLabBV.gitlab-license 文件中的内容:

激活 GitLab
激活 GitLab

参考文献

外部项目导入配置

打开 http://192.168.197.128/adminarrow-up-right,点击“通用”,选择右侧“导入和导出设置”,选择所需的项目,保存。

GitLab 通用设置
GitLab 导入和导出设置
GitLab 外部项目导入配置

参考文献

故障排除与未竟事宜

日志

  • /var/log/nginx/gitlab_error.log

  • /var/log/nginx/error.log

  • /var/log/gitlab_pages.log

  • /var/log/gitlab-shell/gitlab-shell.log

500: We're sorry, something went wrong on our end

查看 GitLab 服务的当前状态:

如果服务运行状态正常且错误日志无异常,可能是内存不足。显示内核环缓冲区消息:

如果还是报错 500,建议检查系统资源配置。

参考文献

课后习题

  1. 在 FreeBSD 上安装 GitLab CE(社区版)而非 EE 版,完成完整配置流程并验证代码仓库创建、提交与克隆功能,贡献至本文。

  2. 分析 GitLab 的权限模型,查看其用户、组与项目权限的分配机制,贡献至本文。

  3. 修改 GitLab 的默认项目可见性设置,从私有改为内部。

最后更新于