一次 GitLab 部署小记

Posted by Yun on Sat, Jul 25, 2020

本文记录笔者的第一次 GitLab 部署和配置的经历。

1. 准备工作

一台云服务器,我使用的是阿里云 ECS,配置为:

  • Ubuntu 18.04 x64
  • CPU Core 2
  • RAM 4GB

ECS 能够直接访问互联网。

2. 安装 GitLab

访问 TUNA - GitLab 页面,按不同操作系统的类型进行安装即可。下面将以 Ubuntu 18.04 为例:

1# 首先信任 GitLab 的 GPG 公钥
2curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
3
4# 将 `deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main` 写入以下文件中
5vim /etc/apt/sources.list.d/gitlab-ce.list
6
7# 安装 gitlab-ce
8sudo apt-get update
9sudo apt-get install gitlab-ce

3. 邮箱配置

阿里云默认封锁端口 25,我尝试使用 postfix 和 mailutils 并没有发送出邮件

所以下面将会使用 gitlab 的 smtp 配置网易邮箱

3.1 网易邮箱申请授权码

我们可以专门申请一个新的网易邮箱,用于 GitLab 发送邮件使用。

在网易邮箱的 设置 - POP3/SMTP/IMAP 中,开启 IMAP/SMTP服务,我们可以得到一个用于第三方客户端登录的授权密码。

3.2 GitLab 邮箱配置

修改 /etc/gitlab/gitlab.rb 文件:

 1# 在文件中搜索 smtp 可定位到如下配置部分
 2# 修改并添加配置项目如下所示
 3gitlab_rails['smtp_enable'] = true
 4gitlab_rails['smtp_address'] = "smtp.163.com"
 5gitlab_rails['smtp_port'] = 465
 6gitlab_rails['smtp_user_name'] = "邮箱账户@163.com"
 7gitlab_rails['smtp_password'] = "邮箱授权密码"
 8gitlab_rails['smtp_domain'] = "163.com"
 9gitlab_rails['smtp_authentication'] = "login"
10gitlab_rails['smtp_enable_starttls_auto'] = true
11gitlab_rails['smtp_tls'] = true
12gitlab_rails['gitlab_email_from'] = "邮箱账户@163.com"
13user['git_user_email'] = "邮箱账户@163.com"

重新配置并启动:

1gitlab-ctl stop
2gitlab-ctl reconfigure
3gitlab-ctl start

测试邮件是否能发送成功(注意检查垃圾箱):

1gitlab-rails console
2......
3> Notify.test_email('目标邮箱地址@address.com', '邮件标题', '邮件内容').deliver_now

3.3 GitLab 其他配置

1# /etc/gitlab/gitlab.rb
2# 设置为云主机 ip 地址 + 想要启动服务的端口号
3external_url 'http://39.107.44.33:8090'

同样需要 reconfigure 后生效。

4. 优化 GitLab 的 CPU 占用

毕竟云服务器的配置并不算很好,在 top 面板经常看到 GitLab 占用 CPU 比较高,所以在 /etc/gitlab/gitlab.rb 中再修改一些配置项:

1gitlab_rails['time_zone'] = 'Asia/Shanghai'
2unicorn['worker_processes'] = 2
3unicorn['worker_memory_limit_min'] = "100 * 1 << 20"
4unicorn['worker_memory_limit_max'] = "250 * 1 << 20"
5postgresql['shared_buffers'] = "128MB"
6postgresql['max_worker_processes'] = 2
7sidekiq['max_concurrency'] = 10
8sidekiq['min_concurrency'] = nil
9prometheus_monitoring['enable'] = false

同样需要 reconfigure 后生效。

5. 登录 GitLab

初次访问 GitLab(external_url 指定的地址)会要求设置管理员账号密码。

在管理员的管理面板可以设置要求用户注册时需要邮件确认:

Admin
Admin

参考资料


版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.