GitLab企业版部署与许可证生成完整指南

    • 一、背景
    • 二、环境准备
    • 三、部署步骤
      • 1. 创建目录结构
      • 2. 生成GitLab许可证
        • 2.1 克隆许可证生成器
        • 2.2 修改生成器脚本
        • 2.3 构建Docker镜像
        • 2.4 生成许可证文件
      • 3. 创建Docker Compose配置文件
      • 4. 启动GitLab容器
        • 4.1 初始启动
        • 4.2 修改GitLab配置
        • 4.3 应用配置更改
        • 4.4 重启服务
      • 5. 通过Web界面激活许可证
    • 四、结语

一、背景

GitLab作为业界领先的DevOps平台,为企业提供了从代码管理到CI/CD的完整解决方案。然而,GitLab企业版需要有效的许可证才能解锁全部功能。本文将详细介绍如何通过Docker部署GitLab企业版,并生成永久许可证的完整过程。

二、环境准备

  • Linux服务器(Ubuntu/CentOS等)
  • Docker和Docker Compose已安装
  • 网络访问权限(需要访问GitHub和Docker Hub)

三、部署步骤

1. 创建目录结构

# 创建GitLab工作目录
cd /home
mkdir gitlab
cd gitlab/
mkdir data
mkdir license# 设置环境变量
export GITLAB_HOME=$PWD/data

2. 生成GitLab许可证

2.1 克隆许可证生成器
git clone https://github.com/Lakr233/GitLab-License-Generator.git
cd GitLab-License-Generator
git checkout c512add083e0176c22a486de79761bc36e198217
cd ..
2.2 修改生成器脚本
diff --git a/make.sh b/make.sh
index 6aa858e..c090b83 100755
--- a/make.sh
+++ b/make.sh
@@ -91,7 +91,7 @@ mkdir -p "$BUILD_DIR"echo "[*] scanning features..."FEATURE_LIST_FILE=$BUILD_DIR/features.jsonrm -f "${FEATURE_LIST_FILE:?}" || true
-./src/scan.features.rb \
+ruby ./src/scan.features.rb \-o "$FEATURE_LIST_FILE" \-f "$GITLAB_SOURCE_CODE_DIR/features.rb"@@ -110,7 +110,7 @@ echo "[*] generating license..."LICENSE_FILE=$BUILD_DIR/result.gitlab-licenseLICENSE_JSON_FILE=$BUILD_DIR/license.json-./src/generator.license.rb \
+ruby ./src/generator.license.rb \-f "$FEATURE_LIST_FILE" \--public-key "$PUBLIC_KEY_FILE" \--private-key "$PRIVATE_KEY_FILE" \
2.3 构建Docker镜像
docker build GitLab-License-Generator -t gitlab-license-generator:main
2.4 生成许可证文件
# 创建并进入容器
docker run --rm -it \-v "./license:/license-generator/build" \-e LICENSE_NAME="Tim Cook" \-e LICENSE_COMPANY="Apple Computer, Inc." \-e LICENSE_EMAIL="tcook@apple.com" \-e LICENSE_PLAN="ultimate" \-e LICENSE_USER_COUNT="2147483647" \-e LICENSE_EXPIRE_YEAR="2500" \gitlab-license-generator:main bash# 容器内执行生成脚本
bash make.sh  # 退出容器
exit# 查看license目录结构
tree license/

生成的许可证文件结构

license/
├── features.json
├── license.json
├── private.key
├── public.key             # 需要映射到GitLab容器内
└── result.gitlab-license  # 许可证文件

3. 创建Docker Compose配置文件

cat > docker-compose.yml <<-'EOF'
version: '3.8'
services:gitlab:image: gitlab/gitlab-ee:latestcontainer_name: gitlabrestart: alwayshostname: '172.16.1.10'ports:- '3080:80'- '3443:443'- '3022:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'- './license/public.key:/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub'- '$PWD/tools:/tools'shm_size: '256m'
EOF

4. 启动GitLab容器

4.1 初始启动
# 拉取镜像
docker pull gitlab/gitlab-ee# 删除容器
docker compose down# 创建容器
docker compose up -d# 查看日志
docker logs gitlab# 进入容器
docker exec -it gitlab bash# 查看默认密码
grep 'Password:' /etc/gitlab/initial_root_password

输出默认密码

Password: UBz5N+CZwcDFWrFPzhGtH1glJOiNw2mCJvKAih0nJgg=
4.2 修改GitLab配置

编辑配置文件 /etc/gitlab/gitlab.rb

external_url 'http://172.16.1.10'
gitlab_rails['gitlab_ssh_host'] = '172.16.1.10'
gitlab_rails['gitlab_shell_ssh_port'] = 3022
gitlab_rails['usage_ping_enabled'] = false

请添加图片描述

4.3 应用配置更改
# 重新配置GitLab
gitlab-ctl reconfigure# 修改Rails配置文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

更新内容:

gitlab:host: 172.16.1.10port: 3080https: false

请添加图片描述

4.4 重启服务
gitlab-ctl restart

5. 通过Web界面激活许可证

  1. 访问 http://172.16.1.10:3080
  2. 使用root用户和初始密码登录
  3. 进入 Admin Area > Settings > General > Add License
  4. 上传 result.gitlab-license 文件
  5. 验证许可证信息
    请添加图片描述
  • 添加授权文件

请添加图片描述

  • 确认授权成功
    请添加图片描述

四、结语

通过本文的步骤,您已经成功部署了带有永久许可证的GitLab企业版。这种部署方式适合中小型企业环境,提供了完整的DevOps解决方案。GitLab的强大功能包括CI/CD流水线、容器注册表、安全扫描等,现在都可以免费使用了!

部署要点总结

  1. 许可证生成是部署的关键步骤
  2. 配置文件修改确保正确访问
  3. Docker部署简化了环境管理
  4. 定期备份$GITLAB_HOME目录

建议在生产环境中添加定期备份策略,并配置HTTPS访问以增强安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92335.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92335.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92335.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins 不同节点间文件传递:跨 Job 与 同 Job 的实现方法

在日常的 DevOps 运维实践中&#xff0c;Jenkins 通常被用于串联多个自动化流程&#xff0c;而这些流程往往需要在不同的构建节点&#xff08;agent&#xff09;上执行。例如&#xff0c;在以下场景中&#xff1a; &#x1f4cc; 场景需求描述&#xff08;实际问题&#xff09;…

Java中AQS原理

一、核心架构&#xff1a;AQS抽象队列同步器二、AQS核心机制1. 三大核心组件&#xff1a;state状态变量&#xff1a;volatile int&#xff0c;表示锁状态&#xff08;0未锁定&#xff0c;≥1锁定/重入次数&#xff09;CLH队列&#xff1a;双向链表实现的线程等待队列Node节点&a…

深入理解程序链接机制:静态链接、ELF加载与动态库实现原理

目录 一、静态链接 1、静态链接的基本概念 1. 静态链接实例分析 2. 目标文件分析 3. 关键观察 4. 重定位机制 5. 注意事项 2、静态链接过程详解 1. 目标文件反汇编分析&#xff08;上面已分析&#xff09; 2. 符号表分析 code.o 符号表 hello.o 符号表 3. 链接后的…

python基础复习

复习python基础语法,最好能做到使用python 写一些简单的算法。 1基础基础语法 1.0 输入输出 一个实用的print:format函数print(站点列表 {0}, {1}, 和 {other}。.format(Google, Runoob, other=Taobao)) 站点列表 Google, Runoob, 和 Taobao。print("a", "b…

ZLMediaKit 入门

什么是ZLMediaKit&#xff1f; ZLMediaKit 是一个基于C11的高性能流媒体服务器框架&#xff0c;支持RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV等多种流媒体协议。它具有以下特点&#xff1a; 跨平台支持&#xff08;Linux、Windows、macOS&#xff09; 高性能&#xff0c;支持高…

接口测试Postman工具高级使用技巧

目录 一、环境与变量的深度应用 多环境动态切换 动态变量与脚本生成 二、Pre-request Script 的妙用 参数签名/加密 接口依赖处理 三、Test Script 的进阶断言 复杂 JSON Schema 校验 数据库断言 四、数据驱动测试 CSV/JSON 文件驱动 动态生成测试用例 环境与变量的…

ZooKeeper学习专栏(四):单机模式部署与基础操作详解

文章目录前言一、单机模式部署架构图部署流程&#xff1a;二、zkCli.sh命令行工具基础操作三、ACL权限控制实践学习资源前言 本文是Zookeeper学习系列的第四篇&#xff0c;将详细讲解Zookeeper的单机模式部署过程以及基础命令行操作&#xff0c;包括节点管理、Watcher机制和AC…

静态登录界面

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户登录</title><st…

Three.js 全景图(Equirectangular Texture)教程:从加载到球面映射

全景图(Equirectangular Texture)是一种特殊的 2D 图像,能通过数学转换模拟 360 环绕视角,常用于创建沉浸式环境(如虚拟全景、天空盒替代方案)。本文将通过完整示例,带你掌握 Three.js 中全景图的加载、映射原理与实际应用。 什么是全景图(Equirectangular Texture)?…

Rocky Linux 9 快速安装 Node.js

Rocky Linux 9 快速安装 Node.js 大家好&#xff0c;我是星哥&#xff01;今天给大家带来 Rocky Linux 9 环境下 Node.js 的安装教程。 本文将详细介绍两种安装方法&#xff0c;帮你快速搭建稳定的 Node.js 环境。 Node.js 是一个非常流行的 JavaScript 运行时环境&#xff…

.NET依赖注入IOC你了解吗?

IOC在Web API 中是经常使用的&#xff0c;但是在一些WPF项目并不是经常使用或者被人熟知的&#xff0c;我把相关依赖注入的内容又做了一次学习和整理什么是依赖注入&#xff1f; 依赖注入是一种设计模式和软件设计原则&#xff0c;用于实现 控制反转。它的核心思想是&#xff1…

Python----大模型(基于Fastapi+streamlit的机器人对话)

一、准备工作 1.1、魔搭社区下载大模型 通义千问2.5-7B-Instruct 模型库 from modelscope.hub.snapshot_download import snapshot_download llm_model_dir snapshot_download(Qwen/Qwen2.5-7B-Instruct,cache_dirmodels) 1.2、启动vllm大模型 python -m vllm.entrypoint…

前端面试专栏-工程化:29.微前端架构设计与实践

&#x1f525; 欢迎来到前端面试通关指南专栏&#xff01;从js精讲到框架到实战&#xff0c;渐进系统化学习&#xff0c;坚持解锁新技能&#xff0c;祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 微前端架构设计与实践 一、微前端核心概念与价值 …

Spring Boot音乐服务器项目-上传音乐模块

项目结构图 相较于上次新增集中在这些地方&#xff1a; &#x1f680; 上传音乐的核心流程 前端投递&#xff1a;用户填写歌手名 选择MP3文件 后端接收&#xff1a;/music/upload 接口化身音乐快递员 安全验证&#xff1a;先查用户是否“持证上岗”&#xff08;登录态&#…

2025年远程桌面软件深度评测:ToDesk、向日葵、TeamViewer全方位对比分析

随着远程办公和数字化协作的深入发展&#xff0c;远程桌面软件已经成为个人用户和企业的必备工具。在2025年的今天&#xff0c;远程控制软件市场呈现出百花齐放的态势&#xff0c;其中ToDesk、向日葵和TeamViewer作为市场上的三大主流选择&#xff0c;各自在技术创新、性能优化…

深度学习-全连接神经网络2

六、反向传播算法 反向传播&#xff08;Back Propagation&#xff0c;简称BP&#xff09;算法是用于训练神经网络的核心算法之一&#xff0c;它通过计算损失函数&#xff08;如均方误差或交叉熵&#xff09;相对于每个权重参数的梯度&#xff0c;来优化神经网络的权重。 1、前…

C语言的历史

C 语言是一种 通用的、过程式的编程语言&#xff0c;由 丹尼斯里奇&#xff08;Dennis Ritchie&#xff09; 在 1972 年于贝尔实验室开发。它以 高效、灵活、贴近硬件 而著称&#xff0c;广泛应用于系统软件、嵌入式系统、驱动程序、游戏引擎、数据库系统等底层开发领域。 C语…

jupyter使用

启动win rcmdjupyter notebook创建python文件

linux 环境服务发生文件句柄泄漏导致服务不可用

问题描述&#xff1a;服务调用远程rest接口 报错&#xff0c;发生too many open files 异常&#xff0c;系统句柄资源耗尽&#xff0c;导致服务不可用。排查经过&#xff1a;1、针对报错代码进行本地构建&#xff0c;构造异常&#xff0c;并进行压测。问题未复现2、经过讨论分析…

手机录制视频时,硬编码和软编码哪个质量高?(硬件编码、软件编码)

文章目录**1. 画质对比**- **软编码**&#xff1a;- **硬编码**&#xff1a;**2. 性能与功耗**- **软编码**&#xff1a;- **硬编码**&#xff1a;**3. 实际应用中的权衡****4. 现代手机的折中方案****5. 如何选择&#xff1f;****总结**在手机录制视频时&#xff0c; 软编码的…