云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

私有化部署代码仓库 GitLab:从介绍到实践

jxf315 2025-10-08 19:23:30 教程文章 14 ℃

在软件开发领域,代码仓库的管理和安全性至关重要。GitLab 作为一款开源的 DevOps 平台,提供了代码托管、CI/CD、项目管理、安全扫描等功能,广泛应用于企业私有化部署场景。本文将详细介绍 GitLab 的核心特性、私有化部署流程以及使用技巧,帮助读者快速搭建一个安全可控的代码仓库。

一、GitLab 简介

1.1 GitLab 是什么?

GitLab 是一个基于 Ruby on Rails 构建的开源平台,通过 Web 界面管理 Git 代码仓库。它不仅支持代码托管,还集成了 CI/CD(持续集成与持续交付)问题跟踪(Issue Tracking)Wiki 文档管理代码审查(Merge Request) 等功能。GitLab 的核心优势在于其 全栈式 DevOps 工作流,能够覆盖代码开发到部署的全流程。

1.2 GitLab 与 GitHub 的区别

  • 私有仓库:GitHub 的私有仓库需要付费,而 GitLab 提供免费的私有仓库。
  • 控制权:GitLab 允许企业完全掌控数据和配置,适合对安全性要求高的场景。
  • 功能扩展:GitLab 提供更灵活的权限管理、自定义工作流和丰富的 API 接口。

1.3 为什么选择私有化部署?

  1. 数据安全:代码和敏感信息存储在企业内部,避免依赖第三方云服务。
  2. 自定义配置:根据企业需求调整功能模块(如 CI/CD 流程、权限策略)。
  3. 合规性:满足 GDPR、等保 2.0 等法规要求。
  4. 成本可控:长期使用成本低于 SaaS 服务。

二、私有化部署 GitLab

2.1 部署环境准备

  • 操作系统:CentOS 7+/Ubuntu 20.04+/Rocky Linux 9+
  • 硬件要求:CPU:4 核(最小)内存:4GB RAM(最小)存储:至少 10GB 空间(建议 SSD)
  • 依赖软件:Docker 或 Docker Compose(推荐)

2.2 使用 Docker 部署 GitLab

2.2.1 安装 Docker

# CentOS/Ubuntu 安装 Docker
sudo apt-get update && sudo apt-get install docker.io -y
sudo systemctl start docker && sudo systemctl enable docker

2.2.2 拉取 GitLab 镜像

docker pull gitlab/gitlab-ce:latest

2.2.3 启动 GitLab 容器

docker run -d \
  --name gitlab \
  --publish 443:443 --publish 80:80 --publish 2222:22 \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --hostname <your-hostname> \
  gitlab/gitlab-ce:latest
  • 端口说明:443:443:HTTPS 访问80:80:HTTP 访问2222:22:SSH 访问(避免与主机 SSH 冲突)
  • 数据目录:/etc/gitlab:配置文件/var/log/gitlab:日志文件/var/opt/gitlab:数据存储(包括数据库和仓库)

2.2.4 修改配置文件

进入容器修改 external_url,external_url 是 GitLab 实例的 主访问地址,用于定义用户通过浏览器访问 GitLab Web 界面、克隆代码仓库、执行 CI/CD 等操作的 URL:

docker exec -it gitlab vi /etc/gitlab/gitlab.rb

找到并修改以下行:

external_url 'http://<your-hostname>'


保存后重载配置:

docker exec -it gitlab gitlab-ctl reconfigure



2.3 使用 Docker Compose 部署(推荐)

2.3.1 创建docker-compose.yml

version: '3.8'
services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    container_name: gitlab
    restart: always
    hostname: "gitlab.example.com"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://<your-hostname>'
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    ports:
      - "80:80"
      - "443:443"
      - "2222:22"
    volumes:
      - ./config:/etc/gitlab
      - ./logs:/var/log/gitlab
      - ./data:/var/opt/gitlab
    shm_size: "256m"

2.3.2 启动服务

docker-compose up -d

三、GitLab 使用指南

3.1 初始配置

  1. 访问 Web 界面:通过浏览器访问 http://<your-hostname>。


  1. 设置管理员密码:首次登录需为 root 用户设置密码。
  2. 修改 SSH 端口
docker exec -it gitlab gitlab-rails console
# 执行以下命令修改 SSH 端口
Gitlab::CurrentSettings.current_application_settings.update!(shell_ssh_port: 2222)

3.2 用户与权限管理

  • 创建用户:登录管理员账户,进入 Admin Area > Users > New User。填写用户名、邮箱、角色(如 Owner/Maintainer/Developer)。
  • 权限分级Owner:可删除项目和群组。Maintainer:可合并请求、管理分支保护。Developer:可推送代码,但不能删除分支。Reporter:仅查看代码和问题。Guest:最小权限,仅参与讨论。

3.3 创建项目与代码托管

  1. 新建项目:进入 Projects > New Project。选择 Blank Project,填写项目名称和可见性(Private/Protected/Public)。


  1. 初始化仓库
git clone http://<your-hostname>/root/<project-name>.git
# 添加代码并提交
git add .
git commit -m "Initial commit"
git push origin main

3.4 配置 CI/CD

  1. 编写 .gitlab-ci.yml
stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Building the project..."

test_job:
  stage: test
  script:
    - echo "Running tests..."

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."

触发流水线:提交代码后,GitLab 会自动检测 .gitlab-ci.yml 并运行流水线。在 CI/CD > Pipelines 查看执行状态。

四、备份与恢复策略

4.1 自动备份

  1. 配置定时任务
sudo crontab -e
# 添加以下行(每天凌晨 2 点备份)
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

备份文件位置: 默认路径为 /var/opt/gitlab/backups,文件名格式为
TIMESTAMP_gitlab_backup.tar。

恢复备份

停止服务

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

执行恢复

sudo gitlab-rake gitlab:backup:restore BACKUP=1696156800_2025_08_03_15.0.0

重启服务

sudo gitlab-ctl start

五、安全加固建议

  1. SSH 访问控制:限制 SSH 登录用户的 IP 范围。使用 SSH 密钥认证,禁用密码登录。
  2. 数据库加密:启用 PostgreSQL 的 TLS 加密。定期更换数据库密码。
  3. Runner 安全:使用 Parallels 执行器(虚拟机隔离)。避免使用 --privileged 标记运行容器。
  4. 审计日志:启用 GitLab 的审计日志功能,记录所有操作行为。


六、总结

私有化部署 GitLab 是企业保障代码安全、实现 DevOps 流程的关键一步。通过本文的部署指南,您可以快速搭建一个功能完善的代码仓库,并利用 GitLab 的全栈能力提升团队协作效率。无论是小型团队还是大型企业,GitLab 的灵活性和安全性都能满足多样化需求。随着技术的演进,建议定期升级 GitLab 版本以获取最新的功能和安全补丁。

最近发表
标签列表