前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >基于 AlmaLinux 9 配置 GitLab 社区版实战

基于 AlmaLinux 9 配置 GitLab 社区版实战

原创
作者头像
远哥制造
修改2024-11-07 20:14:59
修改2024-11-07 20:14:59
22600
代码可运行
举报
文章被收录于专栏:远哥制造远哥制造
运行总次数:0
代码可运行

0x00.前言

本文是一个系列,本篇为系列文章的第二篇:基于 AlmaLinux 9 配置 GitLab 社区版实战

第一篇:基于 AlmaLinux 9 安装 GitLab 社区版实战

第三篇:基于 AlmaLinux 9 备份 GitLab 社区版实战

本文仍基于在腾讯云购买的轻量机 cn-tx-bj7-a9 上安装,AlmaLinux 9.4 版本,配置为 4C4G60G


上一篇文章基于 AlmaLinux 9 安装 GitLab 社区版实战中介绍了最基础的安装步骤,这篇文章来介绍安装后的配置

本文中的配置均是工作中实际使用多年的生产环境配置,供参考

0x01.申请 SSL 证书

回到上一篇文章安装时的命令

代码语言:javascript
代码运行次数:0
复制
[root@cn-tx-bj7-a9 ~]# GITLAB_ROOT_EMAIL="root@yuangezhizao.cn" GITLAB_ROOT_PASSWORD="<rm>" EXTERNAL_URL="http://gitlab.yuangezhizao.cn" dnf install gitlab-ce-17.5.1-ce.0.el9.x86_64.rpm

其中 EXTERNAL_URL="http://gitlab.yuangezhizao.cn" 用的是 http 协议,之所以没有一步到位是因为 SSL 证书需要手动申请

就算在公司内部也没有像 GitLab 官方文档中有类似 Let’s Encrypt 的自动颁发证书的机构

首先,去申请证书,为了演示这里贴一下如何在腾讯云申请 SSL 证书

需要去 cf 新增一个 CNAME 记录

然后等待证书签发

签发后下载 Nginx 类型证书

0x02.配置 SSL 证书

参照官方文档:https://docs.gitlab.com/omnibus/settings/ssl/index.html#configure-https-manually

注意因为 NGINX 会被自动配置 HSTS,其有效期为 365 天,也就是如果 365 天内证书过期且未更换,则无法访问

因为最近两年公司内部的 GitLab 证书都是我去更换的,实测过期后没有类似【继续访问】的按钮

不过【thisisunsafe】大法应该是可以的,当然知道这个的人少之又少(

1. 修改配置文件 /etc/gitlab/gitlab.rb

切换 external_url

关闭 letsencrypt

  • 更改前:#letsencrypt'enable' = nil
  • 更改后:letsencrypt'enable' = false

2. 创建 /etc/gitlab/ssl 目录

代码语言:txt
复制
[root@cn-tx-bj7-a9 ~]# mkdir -p /etc/gitlab/ssl
[root@cn-tx-bj7-a9 ~]# chmod 755 /etc/gitlab/ssl
[root@cn-tx-bj7-a9 ~]# cd gitlab.yuangezhizao.cn_nginx
[root@cn-tx-bj7-a9 gitlab.yuangezhizao.cn_nginx]# ls -lh
total 16K
-rw-rw-rw- 1 root root 3.9K Nov  5 19:51 gitlab.yuangezhizao.cn_bundle.crt
-rw-rw-rw- 1 root root 3.9K Nov  5 19:51 gitlab.yuangezhizao.cn_bundle.pem
-rw-rw-rw- 1 root root 1.2K Nov  5 19:51 gitlab.yuangezhizao.cn.csr
-rw-rw-rw- 1 root root 1.7K Nov  5 19:51 gitlab.yuangezhizao.cn.key
[root@cn-tx-bj7-a9 gitlab.yuangezhizao.cn_nginx]# cp gitlab.yuangezhizao.cn.key gitlab.yuangezhizao.cn_bundle.crt /etc/gitlab/ssl/

3. 修改配置文件 /etc/gitlab/gitlab.rb

因为不是 gitlab.example.com.key gitlab.example.com.crt 标准命名,gitlab.yuangezhizao.cn_bundle.crt 多了个 _bundle

所以需要修改

  • 更改前

#nginx'ssl_certificate' = "/etc/gitlab/ssl/#{node'fqdn'}.crt"

#nginx'ssl_certificate_key' = "/etc/gitlab/ssl/#{node'fqdn'}.key"

  • 更改后

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.yuangezhizao.cn_bundle.crt"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.yuangezhizao.cn.key"

注意更改为如下是不行的,因为 fqdn 实际上会是主机名 cn-tx-bj7-a9

nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}_bundle.crt"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"

gitlab-ctl reconfigure 自然会失败了

4. 运行 gitlab-ctl reconfigure

查看端口监听会发现从 80 变成了 443

代码语言:txt
复制
[root@cn-tx-bj7-a9 ~]# lsof -i:80
[root@cn-tx-bj7-a9 ~]# lsof -i:443
COMMAND      PID       USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
gitlab-ka 890585        git    8u  IPv4 192387165      0t0  TCP cn-tx-bj7-a9:54090-><rm>:https (SYN_SENT)
nginx     897800       root    7u  IPv4 192374884      0t0  TCP *:https (LISTEN)
nginx     897801 gitlab-www    7u  IPv4 192374884      0t0  TCP *:https (LISTEN)
nginx     897802 gitlab-www    7u  IPv4 192374884      0t0  TCP *:https (LISTEN)
nginx     897803 gitlab-www    7u  IPv4 192374884      0t0  TCP *:https (LISTEN)
nginx     897803 gitlab-www   12u  IPv4 192383913      0t0  TCP cn-tx-bj7-a9:https-><rm>:51777 (ESTABLISHED)
nginx     897803 gitlab-www   18u  IPv4 192389326      0t0  TCP cn-tx-bj7-a9:https-><rm>:51787 (ESTABLISHED)
nginx     897804 gitlab-www    7u  IPv4 192374884      0t0  TCP *:https (LISTEN)
nginx     897804 gitlab-www   11u  IPv4 192385586      0t0  TCP cn-tx-bj7-a9:https-><rm>:51779 (ESTABLISHED)

这样就可以通过 HTTPS 访问了

也可以查看到这里证书有效期是 90 天,注意续期即可

0x03.配置邮件发送

参照官方文档:https://docs.gitlab.com/omnibus/settings/smtp

1. 修改配置文件 /etc/gitlab/gitlab.rb

  • 更改前
代码语言:txt
复制
gitlab_rails'smtp_enable' = true
gitlab_rails'smtp_address' = "smtp.server"
gitlab_rails'smtp_port' = 465
gitlab_rails'smtp_user_name' = "smtp user"
gitlab_rails'smtp_password' = "smtp password"
gitlab_rails'smtp_domain' = "example.com"
gitlab_rails'smtp_authentication' = "login"
gitlab_rails'smtp_enable_starttls_auto' = true
gitlab_rails'smtp_tls' = false
gitlab_rails'smtp_pool' = false
代码语言:txt
复制
# gitlab_rails['gitlab_email_from'] = 'example@example.com'
  • 更改后
代码语言:txt
复制
gitlab_rails'smtp_enable' = true
gitlab_rails'smtp_address' = "smtp.exmail.qq.com"
gitlab_rails'smtp_port' = 465
gitlab_rails'smtp_user_name' = "root@yuangezhizao.cn"
gitlab_rails'smtp_password' = "<rm>"
gitlab_rails'smtp_domain' = "exmail.qq.com"
gitlab_rails'smtp_authentication' = "login"
gitlab_rails'smtp_enable_starttls_auto' = false
gitlab_rails'smtp_tls' = true
代码语言:txt
复制
gitlab_rails['gitlab_email_from'] = 'root@yuangezhizao.cn'

2. 运行 gitlab-ctl reconfigure

注意每次配置完成后都需运行,否则不会生效

3. 测试发送邮件

参考命令如下

代码语言:txt
复制
gitlab-rails console
Notify.test_email('954078278@qq.com', 'Message Subject', 'Message Body - yuangezhizao - 241105').deliver_now

执行完成,显示成功发送

实测自己也能收到邮件

0x04.配置 LDAP 登录

参照官方文档:https://docs.gitlab.com/ee/administration/auth/ldap/

1. 修改配置文件 /etc/gitlab/gitlab.rb

2. 运行 gitlab-ctl reconfigure

这里因为自己的环境目前还没有 LDAP 就不做演示了,之后如果有环境再来补充

0x05.后记

一口气写了 2h+,算是把工作中的生产环境中配置都介绍完毕了,之后的文章会继续介绍其他 GitLab 相关的实践

也欢迎购买轻量机进行尝试,双十一拼团有优惠:https://cloud.tencent.com/act/pro/double11-2024?fromSource=gwzcw.8891816.8891816.8891816

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00.前言
  • 0x01.申请 SSL 证书
  • 0x02.配置 SSL 证书
    • 1. 修改配置文件 /etc/gitlab/gitlab.rb
    • 2. 创建 /etc/gitlab/ssl 目录
    • 3. 修改配置文件 /etc/gitlab/gitlab.rb
    • 4. 运行 gitlab-ctl reconfigure
  • 0x03.配置邮件发送
    • 1. 修改配置文件 /etc/gitlab/gitlab.rb
    • 2. 运行 gitlab-ctl reconfigure
    • 3. 测试发送邮件
  • 0x04.配置 LDAP 登录
    • 1. 修改配置文件 /etc/gitlab/gitlab.rb
    • 2. 运行 gitlab-ctl reconfigure
  • 0x05.后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档