Gitlab 安装全流程

这篇具有很好参考价值的文章主要介绍了Gitlab 安装全流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Version:gitlab-ce:16.2.4-ce.0

简介

Gitlab 是一个开源的 Git 代码仓库系统,可以实现自托管的 Github 项目,即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发,速度快、安全稳定。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

此次安装采用的是 Docker 形式进行安装。

镜像拉取

版本选择

在这里可以找到所有的社区办镜像版本,当前最新的为 16.2.4-ce.0 版本。

Gitlab 安装全流程,gitlab,docker,linux

镜像架构问题

注意看镜像支持的 OS/ARCH 仅只有 linux/amd64,如果你的系统是 x86_64 或者 amd64 的都可以正常运行,如果你是 arm 架构的就不行了。

针对 MacOS 的 M1/M2 芯片处理

如果是苹果的 M1/M2 芯片,其也是 arm 架构,但是可以通过设置 Docker Desktop 来运行。这主要是依赖于苹果的 Rosetta 2 转换器,可以将 x86 架构的应用程序自动翻译成 ARM 架构的应用程序,在 M 系列芯片上运行。

Gitlab 安装全流程,gitlab,docker,linux

Gitlab 安装全流程,gitlab,docker,linux

这两项都打开,在执行 docker run 时增加参数 --platform linux/amd64 即可。

拉取镜像

Gitlab 安装全流程,gitlab,docker,linux

运行镜像

准备

准备好数据存放目录,这里以 ~/Downloads/tmp/gitlab 为例。

export GITLAB_HOME=~/Downloads/tmp/gitlab
echo $GITLAB_HOME

cd $GITLAB_HOME
mkdir config logs data

运行

docker run --detach \
  # Mac 平台 M1/M2 芯片需要运行,需要指定。前提:已经在 Docker Desktop 中设置好对应配置。
  --platform linux/amd64 \
  # 使用域名
  --hostname git.tutuit.cn \
  # HTTPS 访问端口
  --publish 4443:443 \
  # HTTP 访问端口,尽量不要对外暴露使用,建议使用 HTTPS。如果前端进行了 Nginx 代理,可以在 Nginx 中使用此端口
  --publish 8880:80 \
  # 22 端口,用来使用 SSH 协议拉取代码
  --publish 4422: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 \
  gitlab/gitlab-ce:16.2.4-ce.0

Gitlab 安装全流程,gitlab,docker,linux

到此,Gitlab 启动就完成了,接下来配置前端代理 Nginx。

Nginx 配置

由于要是用 HTTPS 协议,所以需要证书,我这里使用的是 git.tutuit.cn 域名,根据自己域名的不同,去生成对应的证书即可,阿里云等平台都可以生成,也可以自己本地生成。

生成的证书如下:

Gitlab 安装全流程,gitlab,docker,linux

增加 Nginx 配置

增加 443 HTTPS 端口监听,并配置上证书文件

### HTTPS server
server {
    listen 443 ssl;
    server_name git.tutuit.com;
    index index.html index.htm;
    ssl_certificate /opt/homebrew/etc/nginx/ssl/gitlab/git.tutuit.cn.pem;
    ssl_certificate_key /opt/homebrew/etc/nginx/ssl/gitlab/git.tutuit.cn.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    client_max_body_size 1024M;

    fastcgi_connect_timeout 1200s;
    fastcgi_send_timeout 1200s;
    fastcgi_read_timeout 1200s;
    proxy_read_timeout 300s;
    client_body_timeout 500s;
    send_timeout 500s;

    location / {

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://127.0.0.1:8880;

    }
}

自定义 hosts

由于这里只是本地演示项目,就不去做域名解析工作了,直接修改本地 hosts,使之对应上即可。

Gitlab 安装全流程,gitlab,docker,linux

访问

Gitlab 镜像、Nginx 都已启动完毕,开始访问:https://git.tutuit.cn/

Gitlab 安装全流程,gitlab,docker,linux

默认用户名:root

默认密码:在挂载的 $GITLAB_HOME/config/initial_root_password 文件中。

后续

关闭公开注册

登录成功之后会看到如下警告信息:

Gitlab 安装全流程,gitlab,docker,linux

建议把公开注册关闭掉,使用邀请注册。

Gitlab 安装全流程,gitlab,docker,linux

HTTPS 和 SSH 拉取代码

创建一个 Demo 项目,点击 Clone 可以看到如下信息:

Gitlab 安装全流程,gitlab,docker,linux

这里有两个问题:

  1. 这里 SSH 协议提供的链接是无法正常拉取代码的,因为在启动 Gitlab Docker 镜像时,为了防止和宿主机冲突,使用了宿主机的 4422 端口映射到了容器的 22 端口,这里提供的 SSH 协议是默认的走 22 端口,所以不行。

Gitlab 安装全流程,gitlab,docker,linux

  1. 这里 HTTP 项只显示了 HTTP,而非 HTTPS,这是因为未对 Gitlab 本身做 HTTPS 的配置,如果你使用它来 clone 代码,同样会得到错误,因为在 Nginx 上并没有配置 HTTP(80) 的监听,也不建议使用 HTTP。

Gitlab 安装全流程,gitlab,docker,linux

遇到了问题,也知道了大致原理,就可以一个一个解决了。

解决问题 1

既然 Gitlab 默认生成的 SSH 链接是走的 22 端口,那是不是可以通过配置让他生成走 4422 端口的?没错,确实可以。编辑文件 $GITLAB_HOME/config/gitlab.rb,增加如下配置然后重启:

# gitlab.rb 中
gitlab_rails['gitlab_shell_ssh_port'] = 4422

# 重启 Gitlab
docker restart gitlab

新的 SSH 链接如下:

Gitlab 安装全流程,gitlab,docker,linux

这时再用其拉取代码试试:

Gitlab 安装全流程,gitlab,docker,linux

OK,大功告成,第一个问题解决。

解决问题 2

问题 2 的原因在于没有配置过 Gitlab 的 HTTPS 相关的配置,这导致其生成的链接默认是 HTTP 的,那不用说了,肯定也有配置是可以修改 HTTPS 相关内容。可以加入以下配置项:

# gitlab.rb 中
# 默认的域名 URL
external_url 'https://git.tutuit.cn'

# 开启 HTTP 到 HTTPS 的重定向
nginx['redirect_http_to_https'] = true
# 之前 Nginx 使用的证书,把他复制到 $GITLAB_HOME/config/ssl 目录下
nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.tutuit.cn.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.tutuit.cn.key"

# 重启 Gitlab
docker restart gitlab

再访问发现又出问题了:

Gitlab 安装全流程,gitlab,docker,linux

为啥呢?简单分析得出:在浏览器访问 https://git.tutuit.cn/root/demo 会被 Nginx 代理,Nginx 代理的是 8880 端口:

Gitlab 安装全流程,gitlab,docker,linux

对应着 Gitlab 这个容器的 80 端口,而在上面更改 Gitlab 配置的时候,增加了 nginx['redirect_http_to_https'] = true 的配置,也就是说形成了“循环”,浏览器 =>(443) Nginx =>(80) Gitlab,那 Gitlab 一看是 80 访问,就给重定向了,如此循环往复。所以浏览器就噶掉了。

那就把 Nginx =>(80) Gitlab 改成 443 试试。

Gitlab 安装全流程,gitlab,docker,linux

重启 Nginx 之后重新访问:

Gitlab 安装全流程,gitlab,docker,linux

clone 代码结果:

Gitlab 安装全流程,gitlab,docker,linux

至此,大功告成。

邮件通知

有时,我们可能会用到邮件通知工能,比如:

  • 通过邮箱新增用户,注册信息会直接发送到对应的邮箱。
  • CI/CD 的结果进行通知。
  • 代码审查、合并通知。
  • 等等。

$GITLAB_HOME/config/gitlab.rb 中增加配置:

# gitlab.rb 中
# 开启 smtp 协议
gitlab_rails['smtp_enable'] = true
# smtp 服务地址
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
# TLS 端口
gitlab_rails['smtp_port'] = 994
gitlab_rails['smtp_user_name'] = "你的邮箱"
gitlab_rails['smtp_password'] = "你的密码"
# 登录方式
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# 启用 TLS
gitlab_rails['smtp_tls'] = true 
gitlab_rails['gitlab_email_from'] = '发件人'
# 服务域
gitlab_rails['smtp_domain'] = "ym.163.com"

重启邮箱即可生效。文章来源地址https://www.toymoban.com/news/detail-667196.html

到了这里,关于Gitlab 安装全流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker安装gitlab 闭坑

    docker安装gitlab: web访问gitlab: http://192.168.11.45:880 注册,使用注册的用户登录报错: Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error . 根据 (3条消息) Your account is pending approval from your GitLab administrator and henc

    2024年02月15日
    浏览(43)
  • Docker中gitlab以及gitlab-runner的安装与使用

    1、本文主要讲述如何使用Docker安装gitlab以及gitlab-runner,并且会讲述gitlab-runner如何使用 2、gitlab部分不需要修改过多的配置即可使用,本文未讲述https配置,如有需求,可自行百度 3、 Docker如何安装可以自行百度 1、使用命令直接安装gitlab最新版本(建议安装最新版本,更加安

    2024年02月14日
    浏览(45)
  • docker compose安装gitlab

    docker search gitlab docker pull gitlab/gitlab-ce docker compose -f gitlab_docker.yml up -d docker compose -f gitlab_docker.yml logs -t --tail=10 http://178.119.30.16:8929/ docker exec -it gitlab cat /etc/gitlab/initial_root_password

    2024年01月21日
    浏览(31)
  • 在docker上安装gitlab

    2024年02月16日
    浏览(31)
  • Linux+Docker+Gitlab+Jenkins+虚拟内存

    最近想研究一下怎么自动化发布项目,于是找到了gitlab+jenkins这个组合,正好借机也研究一下最近很火的docker技术。本篇共分为五部分,分别为安装要求,内存虚拟化,安装docker,安装gitlab,安装jenkins。 1.1 操作系统 Docker只支持64位操作系统,如Ubuntu 14.04/16.04、Debian 7/8、Cen

    2024年02月15日
    浏览(34)
  • docker 安装gitlab 遇到的问题

    问题一:代码迁移问题 描述:docker 安装完gitlab后,将代码从A服务器进行迁移B服务器,结果输入账号密码发现代码并没有迁移成功,出现问题如下:【提示账号密码有误】 remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a perso

    2024年01月25日
    浏览(41)
  • Docker安装Gitlab【亲测可用】

    ssh、postfix安装 #安装相关依赖 sudo yum install -y curl policycoreutils openssh-server openssh-clients #启动ssh服务、设置为开机自启动 sudo systemctl enable sshd sudo systemctl start sshd #安装postfix以发送邮件通知 sudo yum install -y postfix #启动postfix服务、设置为开机自启动 sudo systemctl enable postfix sudo syst

    2024年02月02日
    浏览(34)
  • GitLab与GitLab Runner安装(RPM与Docker方式),CI/CD初体验

    GitLab 是一个强大的版本控制系统和协作平台,记录一下在实际工作中关于 GitLab 的安装使用记录。 一开始使用 GitLab 时,是在 CentOS7 上直接以 rpm 包的方式进行安装,仅作为代码托管工具来使用,版本: 14.10.4 。 后续预研 GitLab 的 CI/CD 及流水线时,采用 Docker 方式安装,版本

    2024年02月11日
    浏览(41)
  • 群晖-第5章-Docker安装gitlab

    群晖安装gitlab可以只在内网访问,也就不需要前面几章的内容,但是我这个是通过外网HTTPS访问的。 参考: Nas码农篇:群晖Docker安装Gitlab - 知乎 群晖Docker安装gitlab-ce-zh中文版,并绑定阿里域名并启用https_docker gitlab-ce_CodingPioneer的博客-CSDN博客 使用Docker安装Gitlab及相关配置_

    2024年02月05日
    浏览(35)
  • 超级详细的 Docker Desktop 安装 GitLab

    GitLab 分为 社区版( Community Edition ,缩写为 CE)和 企业版( Enterprise Edition ,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。 GitLab是一款基于git仓库的代码管理工具,可以帮助我们团队进行版本控制和协作开发。gitlab还提

    2024年01月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包