本章分为两个部分,上部分说下安装 Gitlab 之前所需的环境,下部分说一下讲一下如果通过 docker 快速搭建以及搭建步骤,好了切入正题。

2.1 安装环境要求

Gitlab 环境要求分为操作系统、软件要求、以及硬件要求,操作系统建议使用 Linux,主流的发型版本比如 Ubuntu 、CentOS、Debian 均可,切记 Window 不支持,官网也没说什么时间要支持的意思。

我将以 Ubuntu 20.04 版本为例为大家演示,以下是官方支持的 Linux 发型版本:

  • ● Ubuntu (16.04/18.04/20.04)
  • ● Debian (9/10)
  • ● CentOS (7/8)
  • ● openSUSE (Leap 15.1/Enterprise Server 12.2)
  • ● Red Hat Enterprise Linux (please use the CentOS packages and instructions)
  • ● Scientific Linux (please use the CentOS packages and instructions)
  • ● Oracle Linux (please use the CentOS packages and instructions)

说完硬件,我们来说下软件的要求,Gitlab 对软件的要求有点多,比如 Gitlab 13.6 版本要求的软件版本是:Ruby 2.7、Go 1.13、Git 2.29.x、Node.js、Redis 。而 Gitlab 12.2 版本要求的软件版本要比 13.6 的低,如果我们在 Linux 一个个去安装些软件,等跑起来了 Gitlab ,让本来就稀疏的头发还不得雪上加霜。

还好现在有了 Docker,让本来繁重的运维工作,我们开发也可以轻松搞定了,所以这些软件版本大家完全不必记忆,只需了解 Gitlab 跑起来是少不了这些软件的支持就好了。

最后再来说下硬件要求,主要提下两个指标 CPU 和 Memory,官方给出的指导建议:4 cores(核)、4GB RAM 最多支持 500个用户,8 cores(核)、8GB RAM 最多支持 1000个用户。

我司中短期开发人数都不会超过 20 人,为了节省开支所以我选择了阿里云的 ecs.t5(无性能约束的实例)配置: 2 cores + 8GB RAM,为了保证 Gitlab 服务稳定性,这台机子只用来跑 Gitlab 服务,目前性能消耗是 CPU 使用率~7.8% < 10%,RAM 使用率~45.6% < 50%,硬盘大小的话这个就看自己了,如果项目多可以一次选择一块稍大些的盘,建议至少 100GB 起,Gitlab 服务会自动备份项目也会额外占用一些空间,如果是在云平台后期挂载与更换也比较方便,可以比较过于纠结。

下图是我司的 Gitlab 服务性能占用情况图:

参考官方资料:https://docs.gitlab.com/ee/install/requirements.html

2.2 快速安装 Gitlab

说完了安装所需的环境要求,这里我们聊一下通过 docker 的方式快速部署,我以为阿里云 ECS 系统:Ubuntu 20.04、2 Cores、4GB RAM 配置为例作为演示。

2.2.1 快速安装 Docker

首先安装 docker 和 docker-compose ,需要注意,如果是在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,你可以从存储库安装和更新Docker。

废话不多说,设置 Docker 存储库三步骤走:

  1. 更新 apt 软件件件包索引并安装软件包以允许 apt 通过HTTPS使用存储库:
1
2
3
4
5
6
7
8
$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  1. 添加Docker的官方GPG密钥:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 通过后8个字符,验证您现在是否拥有带有指纹的密钥 
sudo apt-key fingerprint 0EBFCD88
3. 设置Docker存储库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
4. 安装 docker 
 # 更新 apt 程序包索引
 sudo apt-get update
 
 # 安装最新版的 Docker Engine 和容器
 sudo apt-get install docker-ce docker-ce-cli containerd.io

如需安装特定的版本,请参考 Docker 官方文档 https://docs.docker.com/engine/install/ubuntu/

  1. 安装 docker-compose
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 下载 docker-compse 的二进制
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限 x
sudo chmod +x /usr/local/bin/docker-compose

# 创建软连
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 测试:
docker-compose --version
参考 Docker 官方地址:https://docs.docker.com/compose/install/

2.2.2 快速安装 Gitlab  
因为 Clone Gitlab 项目时需要走 SSH 协议,为了链接好,我们修改 SSH 服务端口为 2222,将 SSH 服务的端口 22 让给 Gitlab,Ubuntu 修改方法如下:
# 查看 ssh 监听的端口
sudo netstat -tunlp | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      560/sshd: /usr/sbin

# 编辑 ssh 服务配置
vim /etc/ssh/sshd_config

# Port 修改 2222,约在15行
Port 2222

# 重启 ssh 服务
service ssh restart

# 查看修改后
sudo netstat -tunlp | grep ssh
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      34047/sshd: /usr/sb 

注意:其他发行版的 Linux 修改后,注意查看防火墙是否放行了 2222 端口,阿里云的 ECS 修改端口后,需要配置安全组,开放入方向 2222 端口,如下所示:

温馨提示:请再确认可以登录成功后,再断开当前 SSH 会话,免得将自己困在服务器外面的尴尬境地。

好了,为了更好管理,我们创建一个目录 gitlab 用来存放环境信息文件已经配置, mkdir gitlab 在 gitlab 目录下,创建 docker-compose.yml 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
web:
  image: 'gitlab/gitlab-ee: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'
$GITLAB_HOME 是一个变量,目的是将 gitlab 的数据保存宿主机 $GITLAB_HOME 目录上,日后如果迁移 gitlab 迁移其目录下数据即可,所以在同级目录下创建 .env 配置文件,如下:
# 数据存储位置
GITLAB_HOME=/srv/gitlab

后台启动 GitLab 所有服务,首次启动会去 docker 官方拉取 image 镜像,如果这里感觉慢,可以参考下文 配置 docker 加速

docker-compose up -d

以上参考自官方文档,如果你还需要配置 SSL 证书和邮件通知,可以参考我司 docker-compose.yml 的配置。

2.2.3 添加域名解析 以上都成功了,那么恭喜你,你还需要最后一步添加域名解析,即完成了 Gitlab 服务的搭建,DNS 解析成功后,首次访问便要你设置超级管理员 root 账号的密码,如下所示:

恭喜你,已经完成了 Gitlab 的环境搭建。

2.2.4 Docker 加速 配置镜像加速,以下是我的加速地址,登录阿里云,查看自己的加速地址

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://4m8fv48g.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

小结

走到这里,恭喜你又前进了一步,不出意外的话此时你的 Gitlab 服务应和我一样完成了搭建,既然是小结我还是得多啰嗦一下本节主要内容:

  • 搭建 Gitlab 服务服务器配置选择与购买
  • 搭建 Gitlab 所需系统、软件与硬件环境
  • 如何使用 Docker 快速搭建 Gitlab 服务
  • 如何修改 SSH 端口与配置 Docker 加速

如果有什么问题或疑问可留言