目录
[一、GitLab 简介](#一、GitLab 简介)
[1. 什么是 GitLab](#1. 什么是 GitLab)
[2. 核心功能](#2. 核心功能)
[1.页面 502 错误](#1.页面 502 错误)
[2.git clone 地址域名 / IP 不对](#2.git clone 地址域名 / IP 不对)
一、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