第二章 从头开始: 快速搭建 Gitlab 服务
发布时间 2022年12月30日 (更新时间 2024年4月1日) • 3 分钟 读完 • 479 字Gitlab DevOps 实战笔记,第二章 从头开始: 快速搭建 Gitlab 服务,本章分为两个部分,上部分说下安装 Gitlab 之前所需的环境,下部分说一下讲一下如果通过 docker 快速搭建以及搭建步骤,好了切入正题。

本章分为两个部分,上部分说下安装 Gitlab 之前所需的环境,下部分说一下讲一下如果通过 docker 快速搭建以及搭建步骤,好了切入正题。
Gitlab 环境要求分为操作系统、软件要求、以及硬件要求,操作系统建议使用 Linux,主流的发型版本比如 Ubuntu 、CentOS、Debian 均可,切记 Window 不支持,官网也没说什么时间要支持的意思。
我将以 Ubuntu 20.04 版本为例为大家演示,以下是官方支持的 Linux 发型版本:
说完硬件,我们来说下软件的要求,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
说完了安装所需的环境要求,这里我们聊一下通过 docker 的方式快速部署,我以为阿里云 ECS 系统:Ubuntu 20.04、2 Cores、4GB RAM 配置为例作为演示。
2.2.1 快速安装 Docker
首先安装 docker 和 docker-compose ,需要注意,如果是在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,你可以从存储库安装和更新Docker。
废话不多说,设置 Docker 存储库三步骤走:
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-commoncurl -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/
# 下载 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 文件:
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 加速 配置镜像加速,以下是我的加速地址,登录阿里云,查看自己的加速地址
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 服务应和我一样完成了搭建,既然是小结我还是得多啰嗦一下本节主要内容:
如果有什么问题或疑问可留言