GitLab企业版部署与许可证生成完整指南
一、背景
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.json
rm -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-license
LICENSE_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:latest
container_name: gitlab
restart: always
hostname: '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.10
port: 3080
https: false
4.4 重启服务
gitlab-ctl restart
5. 通过Web界面激活许可证
- 访问
http://172.16.1.10:3080
- 使用root用户和初始密码登录
- 进入 Admin Area > Settings > General > Add License
- 上传
result.gitlab-license
文件 - 验证许可证信息
- 添加授权文件
- 确认授权成功
四、结语
通过本文的步骤,您已经成功部署了带有永久许可证的GitLab企业版。这种部署方式适合中小型企业环境,提供了完整的DevOps解决方案。GitLab的强大功能包括CI/CD流水线、容器注册表、安全扫描等,现在都可以免费使用了!
部署要点总结:
- 许可证生成是部署的关键步骤
- 配置文件修改确保正确访问
- Docker部署简化了环境管理
- 定期备份
$GITLAB_HOME
目录
建议在生产环境中添加定期备份策略,并配置HTTPS访问以增强安全性。