本文是一个系列,本篇为系列文章的第二篇:基于 AlmaLinux 9 配置 GitLab 社区版实战
第一篇:基于 AlmaLinux 9 安装 GitLab 社区版实战
第三篇:基于 AlmaLinux 9 备份 GitLab 社区版实战
本文仍基于在腾讯云购买的轻量机 cn-tx-bj7-a9 上安装,AlmaLinux 9.4 版本,配置为 4C4G60G
上一篇文章基于 AlmaLinux 9 安装 GitLab 社区版实战中介绍了最基础的安装步骤,这篇文章来介绍安装后的配置
本文中的配置均是工作中实际使用多年的生产环境配置,供参考
回到上一篇文章安装时的命令
[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 类型证书
参照官方文档:https://docs.gitlab.com/omnibus/settings/ssl/index.html#configure-https-manually
注意因为 NGINX 会被自动配置 HSTS,其有效期为 365 天,也就是如果 365 天内证书过期且未更换,则无法访问
因为最近两年公司内部的 GitLab 证书都是我去更换的,实测过期后没有类似【继续访问】的按钮
不过【thisisunsafe】大法应该是可以的,当然知道这个的人少之又少(
切换 external_url
关闭 letsencrypt
[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/
因为不是 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 自然会失败了
查看端口监听会发现从 80 变成了 443
[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 天,注意续期即可
参照官方文档:https://docs.gitlab.com/omnibus/settings/smtp
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
# gitlab_rails['gitlab_email_from'] = 'example@example.com'
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
gitlab_rails['gitlab_email_from'] = 'root@yuangezhizao.cn'
注意每次配置完成后都需运行,否则不会生效
参考命令如下
gitlab-rails console
Notify.test_email('954078278@qq.com', 'Message Subject', 'Message Body - yuangezhizao - 241105').deliver_now
执行完成,显示成功发送
实测自己也能收到邮件
参照官方文档:https://docs.gitlab.com/ee/administration/auth/ldap/
这里因为自己的环境目前还没有 LDAP 就不做演示了,之后如果有环境再来补充
一口气写了 2h+,算是把工作中的生产环境中配置都介绍完毕了,之后的文章会继续介绍其他 GitLab 相关的实践
也欢迎购买轻量机进行尝试,双十一拼团有优惠:https://cloud.tencent.com/act/pro/double11-2024?fromSource=gwzcw.8891816.8891816.8891816
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。