GitLab幕后故事——初次安装篇

以下介绍 CentOS 和 Docker 的 gitlab-ce 版本安装

一、环境准备

操作系统

  • Linux 发行版

    • Ubuntu (18.04/20.04)
    • Debian (9/10/11)
    • AlmaLinux (8)
    • CentOS (7)
    • openSUSE Leap (15.3)
    • SUSE Linux Enterprise Server (12 SP2/12 SP5)
    • Red Hat Enterprise Linux (use the AlmaLinux or CentOS instructions)
    • Scientific Linux (use the CentOS instructions)
    • Oracle Linux (use the CentOS instructions)
  • 不支持在 Microsoft Windows 上安装

软件要求

  • Redis

    • GitLab 13.0 需要 Redis 4.0 或更高版本
    • GitLab 15.0 及更高版本需要 Redis 5.0 或更高版本
    • 建议使用 Redis 版本 6.0 或更高版本,从 GitLab 13.9 开始的 Omnibus GitLab 包使用 Redis 6.0
  • PostgreSQL

    • GitLab 12.1 中删除了对 MySQL 的支持
    • 可以配置外置的PostgreSQL,也可以使用 Omnibus GitLab 包内置安装的 PostgreSQL
GitLab 版本 PostgreSQL 最低版本
13.0 11
14.0 12.10
15.0 12.10
16.0 13.6

硬件要求

  • 存储空间

    • Omnibus GitLab软件包需要大约2.5GB的存储空间来安装
    • 必要的硬盘空间取决于GitLab计划存储库的大小
    • GitLab的数据盘支持本地文件系统(LVM)和网络文件系统(NAS、SAN、EBS)
    • Redis 方面,每个用户大约 25 kB
  • CPU

    • CPU 要求取决于用户数量和预期工作负载
    • 建议最小4 核,最多可以支持 500 个用户
    • 8 核支持多达 1000 个用户
  • 内存

    • 内存要求同样取决于用户数量和预期工作负载
    • 建议最小4 G,最多可以支持 500 个用户
    • 8 G支持多达 1000 个用户
    • 运行 PostgreSQL 的服务器应至少需要有5-10 GB 的内存
    • Sidekiq 使用多线程进程处理后台作业,10,000 个用户的活跃服务器上,Sidekiq 进程可能使用 1 GB 以上的内存

额外

  • GitLab Runner
    • 建议 GitLab 和 GitLab Runner 安装在不同的服务器上
    • GitLab Runner 服务器要求:
      • GitLab Runner 上配置的执行器类型
      • 运行构建作业所需的资源
      • 作业并发设置
    • 单个作业在单个实例参考:
      • 1 个虚拟CPU
      • 3.75 GB 内存

二、GitLab安装

1、Linux安装(Omnibus 包)

centos 7版本

准备

  • 如果想通过域名访问 GitLab,请确保该域名正确指向安装 GitLab 的服务器的 IP
    • 检查命令:host xxx.com
  • 如果想在 GitLab上使用 HTTPS,请确保准备好该域的 SSL 证书
  • 如果想要发送通知电子邮件,请安装并配置邮件服务器 (MTA),或第三方 SMTP 服务器
  • 检查防火墙:
    • firewall-cmd --permanent --add-service=http
    • firewall-cmd --permanent --add-service=https
    • systemctl reload firewalld

方案一、在线安装

  • 添加yum源:

    • vi /etc/yum.repos.d/gitlab-ce.repo
    • 添加以下内容:
    ini 复制代码
    [gitlab-ce] 
    name=Gitlab CE Repository 
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 
    gpgcheck=0 
    enabled=1 
    • 更新本地yum缓存:
      • yum makecache fast
      • yum --showduplicates list gitlab-ce
  • 安装依赖包:

    • yum install -y epel-release
    • yum install -y policycoreutils-python
    • yum install -y openssh-server perl
  • 安装GitLab:

    • yum install gitlab-ce-1x.x.x

方案二、离线安装

  • 官方下载地址:
  • 安装依赖包:
    • rpm -ivh epel-release-latest-7.noarch.rpm
    • rpm -ivh policycoreutils-python-2.5-34.el7.x86_64.rpm
  • 安装GitLab:
    • rpm -ivh gitlab-ce-1x.x.x-ce.0.el7.x86_64.rpm

2、Docker安装

GitLab Docker 镜像是 GitLab 的整体镜像,在单个容器中运行所有必要的服务

官方 Docker 镜像:

设置卷位置

  • Linux 用户:
    • export GITLAB_HOME=/srv/gitlab
  • MAC OS 用户:
    • export GITLAB_HOME=$HOME/gitlab
  • GitLab 容器使用主机安装的卷来存储持久数据:
Local location Container location 用途
$GITLAB_HOME/data /var/opt/gitlab 存储应用程序数据 application data.
$GITLAB_HOME/logs /var/log/gitlab 存储日志
$GITLAB_HOME/config /etc/gitlab 存储 GitLab 配置文件

(1) Docker Engine 安装

  • 设置GITLAB_HOME,运行镜像:
    *

    bash 复制代码
    docker run --detach \ 
    --hostname gitlab.example.com \ 
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \ 
    --restart always \ 
    --volume $GITLAB_HOME/config:/etc/gitlab \ 
    --volume $GITLAB_HOME/logs:/var/log/gitlab \ 
    --volume $GITLAB_HOME/data:/var/opt/gitlab \ 
    --shm-size 256m \ gitlab/gitlab-ce:latest
    • 如果使用 Kerberos 集成,则还必须发布 Kerberos 端口(例如:--publish 8443:8443)。否则将阻止使用 Kerberos 进行 Git 操作。
  • 这将下载并启动 GitLab 容器并发布访问 SSH、HTTP 和 HTTPS 所需的端口。所有 GitLab 数据都将存储为 $GITLAB_HOME. 该容器将restart在系统重新启动后自动运行。

  • 跟踪初始化过程:

    • docker logs -f gitlab

(2) Docker Compose 安装

  • 创建docker-compose.yml文件:
    *

    vbnet 复制代码
    version: '3.6'
    services:
      web:
        image: 'gitlab/gitlab-ce:latest'
        restart: always
        hostname: 'gitlab.example.com'
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://gitlab.example.com'
            # Add any other gitlab.rb configuration here, each on its own line
        ports:
          - '80:80'
          - '443:443'
          - '22:22'
        volumes:
          - '$GITLAB_HOME/config:/etc/gitlab'
          - '$GITLAB_HOME/logs:/var/log/gitlab'
          - '$GITLAB_HOME/data:/var/opt/gitlab'
        shm_size: '256m'
  • docker-compose.yml目录下:

    • docker compose up -d

三、初次登录

默认生成的root用户密码文件会在 24 小时后的第一次重新配置运行(gitlab-ctl reconfigure)时自动删除。

1、Linux安装(Omnibus 包)

  • 除非在安装过程中提供了自定义密码,否则密码将随机生成并在 /etc/gitlab/initial_root_password 中存储
  • 使用此密码和用户名 root 在Web UI登录

2、Docker安装

  • 使用root 访问 GitLab URL,并使用以下命令中的用户名和密码登录:
    • docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

四、GitLab配置

1、Linux安装(Omnibus 包)

  • 默认配置文件存放位置:
    • /etc/gitlab/gitlab.rb
  • 如果不存在通过命令查找:
    • find / -name gitlab.rb
  • 配置生效:
    • gitlab-ctl reconfigure
    • gitlab-ctl restart

2、Docker安装

  • 通过以下命令访问配置文件:
    • docker exec -it gitlab /bin/bash
    • docker exec -it gitlab editor /etc/gitlab/gitlab.rb
  • 配置生效(容器启动时GitLab 会自动重新加载配置):
    • docker restart gitlab

常用配置项

bash 复制代码
# url地址
external_url 'http://xxx.xxx.xxx.xxx:xxxx'
# 数据存放目录
git_data_dirs({
   "default" => {
     "path" => "/xxx/xxx"
    }
 })
# 上海时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# OAuth2.0
gitlab_rails['omniauth_enabled'] = true
# 禁止创建群组
gitlab_rails['gitlab_default_can_create_group'] = false
# 关闭流水线
gitlab_rails['gitlab_default_projects_features_builds'] = false
相关推荐
明月心95212 小时前
git remote add 用法
gitlab
only_Klein18 小时前
jenkins流水线报错:Connection reset by peer
ci/cd·kubernetes·gitlab·jenkins·ssl
梁萌2 天前
docker部署gitlab和gitlab runner
docker·eureka·gitlab
johnnyAndCode2 天前
Idea 设置GitLab时使用账密,而不是token的配置方法
gitlab·idea
天外飞雨2 天前
Gitlab使用
gitlab
BUTCHER53 天前
GitLab SSH 密钥配置
运维·ssh·gitlab
明月心9523 天前
GitLab使用
gitlab
明月心9524 天前
gitlab pull requets
gitlab
BUTCHER54 天前
GitLab基本设置
gitlab
张小凡vip4 天前
Kubernetes---gitlab的ci/cd发布基于k8s的项目示例参考
ci/cd·kubernetes·gitlab