Gitlab算是目前最流行的一款开源代码管理工具了,由众多组件构成,包括gitaly、postgresql、redis、unicorn、nginx等,可见其复杂性(可从gitlab官网了解相关信息)。也因此服务器的硬件配置不能太低,当前我们生产用的云主机是1台c5.2xlarge(8vcpu、16G)的实例(官方软硬件要求:https://docs.gitlab.com/ce/install/requirements.html),使用起来勉强可以。

Gitlab在CentOs7.x上安装也仅是一个rpm包,所以安装非常简单。而原来在CentOs6.x上安装Gitlab-ce-8.x时对Git的client版本还有要求(perl-Git、git版本在1.7.9.6及以上)。

我这里选用目前最新版本12.5.2的rpm包来演示,在这里吐槽一下,gitlab版本更新实在太频繁了,我完全跟不上步伐。

使用清华的下载源:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.2-ce.0.el7.x86_64.rpm

如果想知道在使用的gitlab版本相关特性以及bug修复,可关注gitlab的blog:https://about.gitlab.com/blog/categories/releases/

一、环境说明:

为了搭建gitlab,并实现邮件通知功能,我在gitlab服务器上同时配置了postfix+dovecot

域名:demo.com

用于测试的邮箱有:[email protected];[email protected];[email protected]

IP: 192.168.59.250

hosts文件内容如下:

[root@mail home]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.59.250 mail.demo.com mail demo.com
192.168.59.250 pop
192.168.59.250 gitlab.demo.com
192.168.59.250 jenkins.demo.com

主机名配置如下:
[root@mail home]# cat /etc/hostname
mail.demo.com

二、安装配置

1、开始安装
[root@mail ~]# rpm -ivh gitlab-ce-12.5.2-ce.0.el7.x86_64.rpm
使用rpm包安装完成后,会提示Gitlab尚未配置,可通过修改/etc/gitlab/gitlab.rb文件来设置external_url,然后执行命令gitlab-ctl reconfigure来启动Gitlab实例。

2、修改配置文件/etc/gitlab/gitlab.rb
[root@mail home]# cat /etc/gitlab/gitlab.rb |grep -v "^#" |grep -v "^$"
#配置一个用于外部访问url
external_url 'http://gitlab.demo.com'
#开启邮件通知功能
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'noreply'
gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
#git仓库备份路径
gitlab_rails['backup_path'] = "/data/git-data/backups"
#备份保留周期,默认是7天,过期将被删除
gitlab_rails['backup_keep_time'] = 604800
#git仓库数据默认存放路径
git_data_dirs({
  "default" => {
  "path" => "/data/git-data"
  }
})
#smtp邮箱设置,用于发送邮件给到各个git账户
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.demo.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "noreply"
gitlab_rails['smtp_domain'] = "demo.com"
gitlab_rails['smtp_authentication'] = "login"
----------------------配置结束分割线----------------------

3、启动服务。完成上述配置后即可执行命令gitlab-ctl reconfigure即可完成初始化配置并启动相关服务

[root@mail ~]# gitlab-ctl reconfigure
[root@mail ~]# gitlab-ctl status
run: alertmanager: (pid 20578) 2681s; run: log: (pid 20577) 2681s
run: gitaly: (pid 20545) 2681s; run: log: (pid 20544) 2681s
run: gitlab-exporter: (pid 20569) 2681s; run: log: (pid 20568) 2681s
run: gitlab-workhorse: (pid 20551) 2681s; run: log: (pid 20550) 2681s
run: grafana: (pid 20576) 2681s; run: log: (pid 20575) 2681s
run: logrotate: (pid 20560) 2681s; run: log: (pid 20559) 2681s
run: nginx: (pid 20557) 2681s; run: log: (pid 20556) 2681s
run: node-exporter: (pid 20566) 2681s; run: log: (pid 20565) 2681s
run: postgres-exporter: (pid 20580) 2681s; run: log: (pid 20579) 2681s
run: postgresql: (pid 20549) 2681s; run: log: (pid 20543) 2681s
run: prometheus: (pid 20582) 2681s; run: log: (pid 20581) 2681s
run: redis: (pid 20584) 2681s; run: log: (pid 20583) 2681s
run: redis-exporter: (pid 20570) 2681s; run: log: (pid 20567) 2681s
run: sidekiq: (pid 20553) 2682s; run: log: (pid 20552) 2682s
run: unicorn: (pid 20562) 2682s; run: log: (pid 20561) 2682s
可以看到gitlab启动了如此多的服务。

4、通过本地浏览器访问,首先修改本地hosts(C:\Windows\System32\drivers\etc\HOSTS)文件增加如下记录:
127.0.0.1 localhost
192.168.59.250 mail.demo.com
192.168.59.250 gitlab.demo.com
192.168.59.250 jenkins.demo.com

完成了本地hosts设置,这时我们就可以通过在浏览器输入:http://gitlab.demo.com来访问了,首次登录需要更改密码,并且密码长度不能少于8位,如图1所示。

Gitlab搭建与使用第一篇_第1张图片

图1

登录成功后,我们进到gitlab的首页,如图2所示。

Gitlab搭建与使用第一篇_第2张图片

图2

三、常用设置

1、默认,gitlab是允许任意邮箱注册,并且不需要邮件确认就能完成注册并登录,为了规范,我们需要做一定限制,比如只允许公司邮箱以及个人手机邮件注册,如图3所示。

Gitlab搭建与使用第一篇_第3张图片

图3

完成上述设置后,我们一尝试注册一个名为firefly的账户,如图4所示。

Gitlab搭建与使用第一篇_第4张图片

图4

注册成功后,将会由[email protected][email protected]发送一封确认邮件,如图5和图6所示。

Gitlab搭建与使用第一篇_第5张图片

图5

Gitlab搭建与使用第一篇_第6张图片

图6

点击“Confirm your account"跳到登录页,输入开始注册的用户名以及密码完成登录,如图7和图8所示。

Gitlab搭建与使用第一篇_第7张图片

图7

Gitlab搭建与使用第一篇_第8张图片

图8

本想在一篇文章写更多的内容,奈何图太多,时间也有限,只能放到下一篇。


总结与思考,Gitlab作为公司的代码管理服务器,安全设置是很有必要的。如上述修改仓库默认存放路径,各仓库权限管理与分配、仓库的定期备份、访问日志归档(便于后期审计)、服务器的默认SSH端口修改等等将在下一篇分享。