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
相关推荐
rustfs13 小时前
GitLab 如何与 RustFS 集成?
分布式·rust·gitlab
郝亚军2 天前
gitlab常用命令
gitlab
xixingzhe26 天前
Java 使用 GitLab4J 实现 WebHook
gitlab
童槿顏丶7 天前
GitLab部署到Linux
linux·运维·gitlab
InfinitePlus8 天前
Gitlab docker版本安装
docker·容器·gitlab
进击切图仔8 天前
GitLab 新用户创建与项目授权操作指南
gitlab
技术小结-李爽8 天前
【工具】git与gitee和gitlab和github等等有什么区别?
git·gitee·gitlab
xiaoxiangsiyan9 天前
GitLab CI/CD 自托管(EE 企业版)+ Kubernetes Runner 集群 + ArgoCD(GitOps 部署)
运维·网络·ci/cd·容器·kubernetes·gitlab·argocd
csdn2015_17 天前
vscode从gitlab拉项目到本地
vscode·gitlab
AOwhisky19 天前
AI审AI:GitLab上线AI代码审查,开发者可以松一口气了吗?
人工智能·gitlab