找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

450

积分

0

好友

56

主题
发表于 昨天 09:44 | 查看: 7| 回复: 0

GitLab 是一个功能强大的开源 DevOps 平台,它集成了代码仓库管理、CI/CD 流水线、问题跟踪、Wiki 文档等核心功能,是企业或团队进行私有化代码托管与协作开发的理想选择。相比于完全托管在云端的服务,自托管 GitLab 让你能够完全掌控代码和数据的安全。

本文将详细介绍如何在 Ubuntu 或 Debian 系统上,一步步完成 GitLab 社区版 (CE) 的安装、基础配置与优化,帮助你快速搭建一个稳定可靠的企业级代码托管平台。

一、系统环境要求

在开始安装之前,请确保你的服务器满足以下最低配置要求。为了获得更好的性能体验,推荐配置应高于此标准。

  • 操作系统:Ubuntu 20.04/22.04 LTS 或 Debian 11/12
  • CPU:至少 4 核(推荐 8 核或以上)
  • 内存:至少 4GB RAM(GitLab 内存消耗较大,推荐 8GB 以上)
  • 存储空间:至少 50GB 可用磁盘空间(用于存储代码仓库、CI/CD 产物等数据)
  • 网络:稳定的互联网连接,用于下载软件包
  • 权限:具有 sudo 权限的用户账号
  • 域名(推荐):准备一个域名以便通过 HTTPS 访问,提升安全性与专业性。

二、安装前的准备工作

1. 更新系统软件包

首先,更新系统的软件包列表并升级现有软件到最新版本。

sudo apt update && sudo apt upgrade -y

2. 安装必要依赖

安装 GitLab 运行所需的基础依赖包。

sudo apt install -y curl openssh-server ca-certificates tzdata perl

3. 配置防火墙

如果你的服务器启用了防火墙(如 UFW),需要开放 GitLab 服务所需的端口。

开放 SSH、HTTP 和 HTTPS 端口:

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

或者,直接开放具体的端口号(22, 80, 443):

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443

启用防火墙(如果之前未启用):

sudo ufw enable

三、安装 GitLab 社区版 (CE)

1. 导入 GitLab GPG 公钥

为确保软件包来源可信,需要先导入官方的 GPG 密钥。

curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor -o /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg

2. 添加 GitLab 软件源

为了获得更快的下载速度,这里使用清华大学提供的镜像源。根据你的操作系统版本,选择对应的源进行添加。

创建并编辑软件源列表文件:

sudo nano /etc/apt/sources.list.d/gitlab-ce.list

将以下对应你系统版本的其中一行添加到文件中:

  • Ubuntu 20.04 (Focal)
    deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
  • Ubuntu 22.04 (Jammy)
    deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu jammy main
  • Debian 11 (Bullseye)
    deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian bullseye main
  • Debian 12 (Bookworm)
    deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian bookworm main

保存并关闭文件(在 nano 编辑器中按 Ctrl+X,输入 Y 确认,再按 Enter)。

3. 安装 GitLab CE 软件包

更新软件包列表并执行安装。

sudo apt update
sudo apt install gitlab-ce -y

安装过程可能需要几分钟,具体时间取决于服务器性能和网络状况。

四、初始配置 GitLab

1. 编辑主配置文件

GitLab 的所有配置都集中在 /etc/gitlab/gitlab.rb 文件中。

sudo nano /etc/gitlab/gitlab.rb

找到并修改以下几个关键配置项:

  • 配置访问地址:将 external_url 修改为你的服务器 IP 地址或域名。
    external_url ‘http://your-server-ip‘  # 或 ‘http://your-domain.com‘
  • 配置时区(可选):
    gitlab_rails[‘time_zone‘] = ‘Asia/Shanghai‘
  • 配置 SMTP 邮件服务(可选,用于发送系统通知、重置密码等邮件):
    gitlab_rails[‘smtp_enable‘] = true
    gitlab_rails[‘smtp_address‘] = “smtp.example.com”
    gitlab_rails[‘smtp_port‘] = 587
    gitlab_rails[‘smtp_user_name‘] = “user@example.com”
    gitlab_rails[‘smtp_password‘] = “password”
    gitlab_rails[‘smtp_domain‘] = “example.com”
    gitlab_rails[‘smtp_authentication‘] = “login”
    gitlab_rails[‘smtp_enable_starttls_auto‘] = true

2. 重新配置并启动服务

应用配置文件中的修改,这个进程会初始化数据库、配置组件等。

sudo gitlab-ctl reconfigure

配置完成后,启动所有 GitLab 服务。

sudo gitlab-ctl start

五、首次访问与登录

1. 获取初始管理员密码

安装后,系统会为 root 用户生成一个随机密码。

sudo cat /etc/gitlab/initial_root_password

从输出中复制 Password 后面的字符串。

2. 登录 GitLab Web 界面

打开浏览器,访问你在 external_url 中设置的地址(例如 http://your-server-ip)。

  • 用户名root
  • 密码:上一步获取的初始密码

3. 修改初始密码

出于安全考虑,首次登录后系统会强制要求修改 root 用户的密码。请务必设置一个高强度的密码。

六、基础安全与功能配置

1. 配置 SSH 密钥

为了更安全地进行代码推送和拉取,建议在本地生成 SSH 密钥并添加到 GitLab 账户。

在本地计算机生成密钥对:

ssh-keygen -t rsa -b 4096 -C “your-email@example.com”

查看并复制公钥内容:

cat ~/.ssh/id_rsa.pub

登录 GitLab,点击右上角头像 -> “偏好设置” -> “SSH 密钥”,将复制的公钥粘贴添加。

2. 创建与管理项目

点击左上角 “新建项目”,即可创建你的第一个代码仓库。你可以选择创建空白项目、从模板导入或从其他仓库导入。

七、常见问题排查

在安装和使用过程中,你可能会遇到以下问题,这里提供基本的排查思路。

问题1:GitLab 服务启动失败

  • 可能原因:内存不足、端口冲突或配置错误。
  • 解决方案
    1. 检查服务状态:sudo gitlab-ctl status
    2. 查看详细日志:sudo gitlab-ctl tail
    3. 使用 tophtop 命令检查系统资源使用情况,确保内存充足。

问题2:无法通过浏览器访问

  • 可能原因:防火墙阻止、服务未运行或 Nginx 配置问题。
  • 解决方案
    1. 确认服务已启动:sudo gitlab-ctl status
    2. 检查防火墙规则,确保 80/443 端口已开放:sudo ufw status
    3. 检查 GitLab 的 Nginx 服务是否正常:sudo gitlab-ctl tail nginx

问题3:忘记管理员密码

  • 解决方案:使用 GitLab Rails 控制台重置密码。
    sudo gitlab-rails console -e production

    在打开的控制台中依次执行:

    user = User.find_by(username: ‘root‘)
    user.password = ‘your-new-strong-password‘
    user.password_confirmation = ‘your-new-strong-password‘
    user.save!
    exit

八、生产环境优化建议

1. 启用 HTTPS

使用 HTTPS 加密数据传输是生产环境的基本要求。你可以修改 external_urlhttps:// 开头,并使用 Let‘s Encrypt 自动获取免费证书(GitLab 内置支持)。

# 在 /etc/gitlab/gitlab.rb 中修改
external_url ‘https://your-domain.com‘

重新配置即可:sudo gitlab-ctl reconfigure

2. 配置定期备份

数据无价,必须设置定期备份。首先在配置文件中指定备份路径和保留时间。

gitlab_rails[‘backup_path‘] = ‘/var/opt/gitlab/backups‘
gitlab_rails[‘backup_keep_time‘] = 604800 # 保留7天

执行 sudo gitlab-ctl reconfigure 后,可以手动创建备份:

sudo gitlab-rake gitlab:backup:create

要实现自动化,可以通过 Crontab 添加定时任务,这类运维与测试任务是保障服务稳定性的关键。

sudo crontab -e
# 添加以下行,表示每天凌晨2点执行备份
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

3. 集成 GitLab Runner 实现 CI/CD

GitLab 强大的 CI/CD 功能依赖于 Runner 来执行构建任务。安装并注册 Runner 后,你的项目就能自动运行测试、构建和部署。

# 安装 GitLab Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner -y

# 注册 Runner(需要从GitLab项目设置中获取URL和令牌)
sudo gitlab-runner register

通过合理配置 CI/CD 流水线,你可以将代码提交、测试、打包和发布等一系列DevOps流程自动化,极大提升交付效率。

总结

至此,你已经成功在 Ubuntu/Debian 服务器上部署了一套功能完整的 GitLab 代码托管平台。从代码管理、协作评审到自动化构建部署,GitLab 为团队提供了一站式的 开源实战 与协作解决方案。

后续你可以根据需要,深入探索仓库权限管理、合并请求(Merge Request)流程、内置容器仓库、监控仪表盘等高级功能。如果在使用中遇到更复杂的问题,查阅 GitLab 官方文档 或在 技术文档 社区寻求解决方案都是很好的途径。




上一篇:基于Canal 1.1.6与RocketMQ实现MySQL增量数据同步至ES的实战指南
下一篇:磁盘空间不足怎么办?开源工具BleachBit清理指南与隐私保护技巧
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-18 16:28 , Processed in 0.322406 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表