GitLab的简介及安装

目录

[一、GitLab 简介](#一、GitLab 简介)

[1. 什么是 GitLab](#1. 什么是 GitLab)

[2. 核心功能](#2. 核心功能)

二、GitLab安装

1.联网环境

2.内网离线安装

三、常见问题避坑

[1.页面 502 错误](#1.页面 502 错误)

[2.git clone 地址域名 / IP 不对](#2.git clone 地址域名 / IP 不对)

3.初始密码文件找不到


一、GitLab 简介

1. 什么是 GitLab

GitLab 是基于 Git 的一站式开源 DevOps 平台,可以私有化部署,提供私有代码仓库、代码评审、CI/CD、项目管理、容器镜像仓库、Wiki、安全扫描等整套能力,对标 GitHub,但支持本地自建,适合企业内网管理代码。

  • CE(Community Edition)社区版:开源免费,适合绝大多数中小团队。
  • EE(Enterprise Edition)企业版:付费,增加高可用、高级安全、LDAP/OIDC、Geo 异地容灾等企业功能。

2. 核心功能

  • 代码托管:Git 仓库、分支管理、Merge Request(代码评审)、LFS 大文件存储
  • 项目管理:Issues 任务、看板、里程碑、标签
  • 内置 CI/CD.gitlab-ci.yml 流水线,无需额外部署 Jenkins
  • 内置容器仓库 Registry:存储 Docker 镜像
  • Wiki、静态页面、包管理仓库(npm/maven/pypi)
  • 权限精细化管控:组、项目、分支保护、访问日志

二、GitLab安装

1.联网环境

(1)CentOS / Rocky Linux(RPM 系)

bash 复制代码
#!/bin/bash
# GitLab CE 清华镜像源一键配置脚本 CentOS7/8/9 / Rocky Linux
# 执行前修改 EXTERNAL_URL 为你的服务器IP/域名

EXTERNAL_URL="http://192.168.1.100"

# 安装依赖
yum install -y curl policycoreutils-python openssh-server
systemctl enable --now sshd

# 删除官方原有gitlab源(防止冲突)
rm -f /etc/yum.repos.d/gitlab_gitlab-ce.repo

# 写入清华gitlab-ce repo
cat > /etc/yum.repos.d/gitlab-ce.repo << EOF
[gitlab-ce]
name=Gitlab CE Repository (Tsinghua Mirror)
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el\$releasever/
gpgcheck=0
enabled=1
EOF

# 清理缓存 & 安装
yum clean all
yum makecache fast
EXTERNAL_URL=${EXTERNAL_URL} yum install -y gitlab-ce

# 初始化配置
gitlab-ctl reconfigure

echo "======================================"
echo "安装完成!访问地址:${EXTERNAL_URL}"
echo "root初始密码:cat /etc/gitlab/initial_root_password"
echo "======================================"

(2)Ubuntu / Debian(DEB 系)

bash 复制代码
#!/bin/bash
# GitLab CE 清华源 Ubuntu/Debian
EXTERNAL_URL="http://192.168.1.100"

apt update
apt install -y curl openssh-server ca-certificates perl

# 导入GPG密钥
curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor -o /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg

# 自动识别系统版本
CODENAME=$(lsb_release -cs)

# 写入源文件
cat > /etc/apt/sources.list.d/gitlab-ce.list << EOF
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu ${CODENAME} main
EOF

apt update
EXTERNAL_URL=${EXTERNAL_URL} apt install -y gitlab-ce

gitlab-ctl reconfigure

echo "访问地址:${EXTERNAL_URL}"
echo "初始密码查看:cat /etc/gitlab/initial_root_password"

(3)Docker 快速部署(测试环境推荐)

bash 复制代码
# 创建持久化目录
mkdir -p /data/gitlab/{config,logs,data}

docker run -d \
  --name gitlab \
  --restart always \
  --hostname 192.168.1.100 \
  -p 80:80 -p 443:443 -p 2222:22 \
  -v /data/gitlab/config:/etc/gitlab \
  -v /data/gitlab/logs:/var/log/gitlab \
  -v /data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

2.内网离线安装

离线操作流程:

(1)在外网可联网机器,去清华镜像站下载对应系统安装包

清华下载地址:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/

CentOS(el7/el8/el9):/gitlab-ce/yum/elX/

Ubuntu:/gitlab-ce/ubuntu/pool/main/g/gitlab-ce/

(2)将 gitlab-ce-xxx.rpm 传到内网服务器

(3)使用下面离线脚本安装

  • CentOS / Rocky Linux(RPM 系)

    bash 复制代码
    #!/bin/bash
    # GitLab CE CentOS 离线本地包安装
    # 使用:把rpm包和脚本放同一目录,修改EXTERNAL_URL
    
    EXTERNAL_URL="http://192.168.1.100"
    
    # 安装前置依赖
    yum install -y curl policycoreutils-python openssh-server
    systemctl enable --now sshd
    
    # 本地rpm安装
    rpm -ivh gitlab-ce-*.rpm
    
    # 写入访问地址
    sed -i "s#^external_url.*#external_url '${EXTERNAL_URL}'#g" /etc/gitlab/gitlab.rb
    
    # 初始化
    gitlab-ctl reconfigure
    
    echo "离线部署完成!"
    echo "root密码:cat /etc/gitlab/initial_root_password"
  • Ubuntu / Debian(DEB 系)

    bash 复制代码
    #!/bin/bash
    EXTERNAL_URL="http://192.168.1.100"
    apt install -y curl openssh-server ca-certificates perl
    dpkg -i gitlab-ce_*.deb
    sed -i "s#^external_url.*#external_url '${EXTERNAL_URL}'#g" /etc/gitlab/gitlab.rb
    gitlab-ctl reconfigure

    主要目录说明:

    /etc/gitlab 配置文件

    /var/log/gitlab 日志

    /var/opt/gitlab 运行数据(仓库、数据库、redis 等)

    bash 复制代码
    /var/opt/gitlab/
    ├── gitlab-rails/            # GitLab主程序运行数据
    │   ├── shared/
    │   │   ├── artifacts/       # CI流水线产物
    │   │   ├── cache/          # CI缓存
    │   │   ├── lfs-objects/    # Git LFS大文件存储
    │   │   └── pages/          # GitLab Pages静态页面
    │   └── uploads/            # 工单、评论上传的图片附件
    ├── git-data/                # ✅ 核心!所有Git代码仓库(项目裸仓库)
    ├── postgresql/              # PostgreSQL数据库数据
    ├── redis/                   # Redis缓存数据
    ├── registry/                # Docker镜像仓库(内置Registry)
    ├── gitlab-shell/            # SSH克隆相关
    ├── gitaly/                  # Gitaly服务(新版Git代码读写服务,替代git-data部分能力)
    ├── nginx/                   # Nginx运行临时文件
    └── prometheus/              # 内置监控时序数据

    三、常见问题避坑

1.页面 502 错误

  • 绝大多数原因:内存不足;先增加内存或扩容 Swap
  • 端口冲突:nginx、apache 占用 80,修改 gitlab nginx 端口

2.git clone 地址域名 / IP 不对

必须正确设置 external_url,再执行 reconfigure

3.初始密码文件找不到

超过 24 小时自动清理;可以重置 root 密码:

bash 复制代码
gitlab-rails console
user = User.find_by(username: 'root')
user.password = '新密码'
user.password_confirmation = '新密码'
user.save!
exit
相关推荐
AOwhisky1 天前
云原生 DevOps 工具链从入门到实战(第一期)——DevOps概述与GitLab部署——从理念到工具落地
运维·ci/cd·云原生·gitlab·开发·devops
不厌 -_-2 天前
gitlab中怎么创建MR提交模板
gitlab·mr
酿情师3 天前
Gitlab 任意文件读取漏洞(CVE-2016-9086)
gitlab
糖果罐子♡4 天前
TortoiseGit 首次上传本地工程至已初始化的GitLab仓库教程
gitlab
Byron Loong4 天前
【Git】如何检查 Ubuntu 系统上 gitLab 是否开启
git·ubuntu·gitlab
QN1幻化引擎5 天前
SFA 信号场注意力:用8KB参数换248x KV Cache压缩,边缘设备也能跑长序列
人工智能·算法·gitee·gitlab
阿里云云原生5 天前
研发福音:云效 AI 智能评审正式支持 GitLab 集成,VPC 内网即可实现自动审阅
gitlab
这个需求做不了8 天前
Jenkins自动化构建与CI/CD流水线,并配置GitLab
java·ci/cd·自动化·gitlab·jenkins
qq_452396239 天前
第六篇:《GitLab CI 进阶:多环境部署与环境变量管理》
git·ci/cd·gitlab