Gitlab安装和使用

GitLab是一个开源的Git仓库管理工具,用于版本控制、代码审查、问题跟踪和持续集成等。它提供了一个集成的开发环境,使团队成员可以在一个平台上协同开发和管理项目。本文介绍如何在Ubuntu或RHEl上安装GitLab,及其常见的使用教程。

GItlab 提供企业版(Gitlab EE)和社区版(Gitlab CE)。在这篇文章中,我们将介绍社区版。

准备工作

  • 运行Ubuntu或RHEl且具有 SSH 访问权限的虚拟或专用服务器。
  • 具有管理员权限的 Sudo 用户
  • 4核或更多的CPU(建议的最小内核数为 4 个,最多支持 500 个用户)
  • 4G及以上的内存(4 GB RAM 是所需的最小内存大小,最多支持 500 个用户)

官方推荐:https://docs.gitlab.com/ee/install/requirements.html

安装GitLab

本文介绍以下两种方式,安装方式差异说明如下,您可以根据需要选择其中一种方式:

差异 Linux安装包 Docker Engine
安装方式 可以在Linux系统中直接运行安装包进行安装。 通过在Docker Engine上运行GitLab容器来实现安装。
系统依赖性 依赖于特定的系统运行库和依赖项,需要根据操作系统版本和配置进行相应的安装和配置。 不需要考虑Docker所在实例系统的依赖性,所有的依赖关系都被包含在Docker镜像中。
灵活性和可移植性 提供了更多的灵活性和自定义选项,可以根据需求进行自定义配置和调整。但是,可能需要更多的系统管理和维护工作。 提供了更高的可移植性和一致性,可以在不同的环境中轻松部署和运行GitLab容器。
版本管理 通常需要手动管理和升级GitLab的版本,需要下载更新的安装包并进行相应的升级操作。 可以通过拉取更新的Docker镜像来实现版本管理,只需简单地重新运行容器即可。
系统资源利用 运行在虚拟机或主机上,会占用一定的系统资源。 将GitLab作为一个容器运行,可以更有效地利用系统资源,并且容器之间相互隔离,不会对宿主机产生影响。

使用Linux安装包安装GitLab

安装GitLab所需的依赖包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Ubuntu 20.04 and 22.04
$ sudo apt-get update
$ sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

# Postfix用于GitLab发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器。具体操作,请参见配置外部 SMTP 服务器:https://docs.gitlab.cn/omnibus/settings/smtp.html。

$ sudo dnf install postfix
$ sudo systemctl enable postfix
$ sudo systemctl start postfix

# AlmaLinux and RedHat versions 8 and 9
$ sudo dnf install -y curl policycoreutils openssh-server perl
# 启动ssh并设置开机自启
$ sudo systemctl enable sshd
$ sudo systemctl start sshd
# 打开防火墙
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo systemctl reload firewalld

添加GitLab软件包仓库

1
2
3
4
5
# ubuntu
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

# RHEl
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

安装Gitlab

1
2
3
4
5
# ubuntu
$ sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce

# RHEL
$ sudo EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee

EXTERNAL_URL可以填写ip也可以填写域名

使用Docker安装GitLab

安装docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ubuntu
# step 1: 安装必要的一些系统工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
$ sudo apt-get -y update
$ sudo apt-get -y install docker-ce

# RHEL
# step 1: 安装必要的一些系统工具
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
$ sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
$ sudo yum makecache fast
$ sudo yum -y install docker-ce
# Step 4: 开启Docker服务
$ sudo service docker start

启动Docker服务,并设置开机自启动

1
2
$ sudo systemctl start docker
$ sudo systemctl enable docker

创建Docker容器的挂载数据目录

1
$ sudo mkdir -p /srv/gitlab 

GitLab 容器使用主机挂载的卷来存储持久化数据:

本地路径 容器路径 作用
/srv/gitlab/data /var/opt/gitlab 用于存储应用程序数据。
/srv/gitlab/logs /var/log/gitlab 用于存储日志。
/srv/gitlab/config /etc/gitlab 用于存储 GitLab 配置文件。

安装GitLab容器镜像

1
2
3
4
5
6
7
8
9
10
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 8080:80 --publish 5000:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest

HTTP端口:8080

HTTPS端口:443

SSH端口:5000

冒号前是映射到宿主机的端口,冒号后是容器使用的端口

查看容器状态

1
sudo docker ps -a

初始化过程可能需要很长时间。您可以通过以下方式跟踪此过程:

1
$ sudo docker logs -f gitlab

使用Gitlab

获取GitLab的登录密码

  • Linux安装包方式:sudo cat /etc/gitlab/initial_root_password
  • Docker Engine安装方式:sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

出于安全原因,24小时后,该文件会被自动删除,建议您安装成功,首次登录之后,立即修改初始密码。

登录GitLab

  • Linux安装包方式:在浏览器的地址栏中,输入http://主机IP即可进入GitLab的登录界面。
  • Docker安装方式:在浏览器的地址栏中,输入http://主机IP:8080即可进入GitLab的登录界面。

首次登录使用用户名root,密码为步骤1获取的密码。

创建项目

1、在GitLab的主页中,单击Create a project

2、单击Create blank project,设置Project nameProject URL,然后单击Create project

本文以mywork项目为例进行说明。

配置免密pull/push(也可以选择使用账号密码)

1
2
3
4
5
6
7
8
9
# 安装Git工具。
$ sudo yum install git

# 生成密钥对文件id_rsa。
$ ssh-keygen

# 查看并复制公钥文件id_rsa.pub中的内容,便于后续步骤使用。
$ cat ~/.ssh/id_rsa.pub

添加SSH key

在当前project页面,单击Add SSH key

将公钥文件id_rsa.pub中的内容粘贴到Key所在的文本框中。

单击Add key

SSH Key添加完成后,如下图所示。

复制Clone链接,该链接在进行克隆操作时需要使用。

  1. 配置使用Git仓库的人员信息。

    1. 配置使用Git仓库的人员姓名。

      1
      git config --global user.name "testname" 
    2. 配置使用Git仓库的人员邮箱。

      1
      git config --global user.email "abc@example.com" 
  2. 克隆已创建的项目到本地。

    1
    git clone git@101.132.XX.XX:root/mywork.git

  1. 上传文件到GitLab服务器。

​ a. 进入到项目目录。

1
cd mywork/ 

​ b. 创建需要上传到GitLab中的目标文件。

1
echo "test" > /home/test/test.sh

​ c. 将目标文件或者目录复制到项目目录下。

1
cp /home/test/test.sh ./ 

​ d. 将test.sh文件加入到索引中。

1
git add test.sh

​ e. 将test.sh提交到本地仓库。

1
git commit -m "test.sh"

​ f. 将文件同步到GitLab服务器上。

1
git push -u origin main

在网页中查看上传的test.sh文件已经同步到GitLab服务器中。

如果您想了解更多的Gitlab操作,例如GitLab常用命令、数据备份、配置选项、用户管理、与其他服务集成、故障排除等,请参见GitLab官方文档

Gitlab配置

配置访问域名

1
2
3
4
5
$ vim /srv/gitlab/config/gitlab.rb
# 顶部附近是external_url配置线。更新它以匹配您的域。更改http为https以便GitLab会自动将用户重定向到受Let's加密证书保护的站点:
external_url 'https://example.com'
# 接下来,查找letsencrypt['contact_emails']设置。此设置定义了一个电子邮件地址列表,如果您的域存在问题,Let的加密项目可以用来与您联系。取消注释并填写此内容是一个好主意,以便您知道任何问题:
letsencrypt['contact_emails'] = ['sammy@example.com']

配置SMTP

1
2
3
4
5
6
7
8
9
10
11
$ vim /srv/gitlab/config/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
gitlab_rails['smtp_domain'] = "exmail.qq.com"

使用自定义证书

可使用自签名证书或 Let’s Encrypt 为 GitLab 实例配置 HTTPS,这里我们配置自定义证书

1
2
3
4
5
6
7
8
9
# 将你的ssl证书放入/srv/gitlab/config/ssl/
# 修改gitlab配置文件
sudo vim /srv/gitlab/config/gitlab.rb

external_url 'https://域名'
nginx['enable'] = true
nginx['redirect_http_to_https'] = true # 访问http自动跳转https
nginx['ssl_certificate'] = "/etc/gitlab/ssl/域名的ssl证书.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/域名的ssl证书.key"

证书可以通过域名服务商获取也可以使用自签名证书,以下是自签名证书步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ sudo mkdir /srv/gitlab/ssl
$ sudo chmod 755 /srv/gitlab/ssl
$ sudo openssl genrsa -des3 -out /srv/gitlab/ssl/域名.key 2048
# 输入密码并记住它。

# 使用以下命令创建 CSR:
$ sudo openssl req -new -key /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.csr

# 从密钥中删除密码串,依次执行以下命令:
$ sudo cp -v /srv/gitlab/ssl/域名.{key,original}
$ sudo openssl rsa -in //srv/gitlab/ssl/域名.original -out /srv/gitlab/ssl/域名.key
$ sudo rm -v /srv/gitlab/ssl/域名.original

# 创建证书文件
$ sudo openssl x509 -req -days 1460 -in /srv/gitlab/ssl/域名.csr -signkey /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.crt

# 使用下面的 rm 命令删除 CSR 文件:
$ sudo rm -v /srv/gitlab/ssl/域名.csr

# 设置密钥和证书文件的权限:
$ sudo chmod 600 /srv/gitlab/ssl/域名.key
$ sudo chmod 600 /srv/gitlab/ssl/域名.crt

相关命令

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
# 当配置文件修改后,必须重新加载才能生效
# 当使用docker安装gitlab时,执行命令需要先进入容器: docker exec -it gitlab /bin/bash
# 或者在外部直接执行: docker exec -it gitlab gitlab-ctl status

# 检查配置
gitlab-ctl check-config

# 重启服务
gitlab-ctl restart

# 启动服务
gitlab-ctl start

# 查看服务状态
gitlab-ctl status

# 停止服务
gitlab-ctl stop

# 查看服务列表
gitlab-ctl service-list

# 查看日志
gitlab-ctl tail

# 重新加载配置
gitlab-ctl reconfigure

Gitlab安装和使用
https://www.zhoumx.net/Gitlab安装和使用.html
作者
阿星
发布于
2023年12月15日
许可协议