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
相关推荐
A ?Charis1 天前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
秋说2 天前
开源代码管理平台Gitlab如何本地化部署并实现公网环境远程访问私有仓库
gitlab·源代码管理
极小狐2 天前
驭码上新,AI Code Review、基于代码库的知识问答,让研发起飞
gitlab·devsecops·devops·极狐gitlab·安全合规
蚊子不吸吸2 天前
DevOps开发运维简述
linux·运维·ci/cd·oracle·kubernetes·gitlab·devops
花开莫与流年错_5 天前
GitLab代码仓管理安装配置使用
运维·服务器·git·gitlab·配置·代码仓
极小狐8 天前
如何打开/关闭 GitLab 的版本检查功能?
gitlab·devsecops·devops·极狐gitlab·安全合规
玉石俱焚ing9 天前
ubuntu20上部署gitlab并开启ipv6访问
运维·gitlab
謬熙9 天前
GitHub、Gitee、GitLab介绍
gitee·gitlab·github
云围9 天前
Soanrquber集成Gitlab 之 导入Gitlab项目
运维·ci/cd·gitlab·devops
云围9 天前
Soanrquber集成Gitlab 之 gitlab用户配置和身份验证
ci/cd·gitlab·github·devops