centos7搭建gitlab及初期设置


最近因为工作的原因,需要熟悉gitlab,就在自己的服务器上先建了一套了解一下,网上看了些教程操作下来基本没啥问题,只是很多文章都说的比较零散,故这里综合一下。

一、gitlab简介

gitlab是一个类似于github的代码仓库管理系统。由GitLabInc.开发并开源,使用MIT许可证。gitlab各方面体验和github非常相似,因为开源,个人和公司都可以用来搭建自己的私有代码仓库管理系统,非常方便。

gitlab原先全部由ruby编写,后来部分功能用go进行重写。其Web框架使用RubyonRails,数据库采用PostgreSQL,用户认证和授权基于Gitolite,邮箱服务采用postfix。

gitlab内部嵌入式集成了许多linux上常见的应用和服务。比如nginx, unicorn, logrotate, redis等。所以一键安装会很方便。当然其体量也会比较大。

下面是我在自己的服务器上(4C8G)获取的一些数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## 这里是重启的时候gitlab输出的启动服务
sudo gitlab-ctl restart
ok: run: alertmanager: (pid 2308) 1s
ok: run: gitaly: (pid 2324) 0s
ok: run: gitlab-monitor: (pid 2346) 0s
ok: run: gitlab-workhorse: (pid 2350) 0s
ok: run: logrotate: (pid 2379) 1s
ok: run: nginx: (pid 2387) 0s
ok: run: node-exporter: (pid 2396) 1s
ok: run: postgres-exporter: (pid 2403) 0s
ok: run: postgresql: (pid 2416) 0s
ok: run: prometheus: (pid 2500) 1s
ok: run: redis: (pid 2515) 0s
ok: run: redis-exporter: (pid 2641) 1s
ok: run: sidekiq: (pid 2689) 0s
ok: run: unicorn: (pid 2702) 1s

## 查看gitlab启动的进程数
ps -ef | grep -c gitlab
65

## 查看gitlab相关进程占用的内存
ps aux | grep gitlab | awk '{sum += $6} END{print sum "KB"}'
3838580KB

从以上数据可以看到gitlab启动65个进程,占用内存接近4G。所以服务器要求还是比较高的。

二、gitlab安装

2.1 配置yum源

1
2
3
4
5
6
7
8
sudo vim /etc/yum.repos.d/gitlab.repo
## 输入以下内容并保存
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
## gitlab ce即gitlab的社区版本

接下来缓存相关包

1
yum makecache

2.2 安装相关依赖

1
2
3
4
5
6
sudo yum -y install curl policycoreutils openssh-server openssh-clients postfix
#启动sshd和postfix服务
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl enable postfix
sudo systemctl start postfix

2.3 安装gitlab

1
yum -y install gitlab-ce

三、gitlab配置

GitLab 的相关参数配置都存在 /etc/gitlab/gitlab.rb 文件里,每次配置完成之后需要执行gitlab-ctl reconfigure,进行重新配置才能生效。

3.1 基本配置

主要调整下面一些参数:

1
2
3
4
5
6
external_url 'http://gitlab.example.com:8081' #修改成自己的域名和端口(80端口可省略)
#注意端口占用问题,因为gitlab自带nginx,如果服务器原本有一个nginx服务的话,两个端口不能一样;另外gitlab会启动unicorn服务,默认会占用8080端口

unicorn['worker_processes'] = 2 #CPU使用核数,默认是CPU核心数+1,根据性能适当调整

gitlab_rails['time_zone'] = 'Asia/Shanghai' # 时间区域

3.2 邮箱配置

gitlab可以通过SMTP服务给用户发送邮件,在/etc/gitlab/gitlab.rb文件中,邮箱有两处配置,一处是系统发件人配置,一处是邮箱的SMTP服务配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
### 以163邮箱为例
### 发件人设置
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'test@163.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'
gitlab_rails['gitlab_email_reply_to'] = 'test@163.com'

### SMTP配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "test@163.com"
gitlab_rails['smtp_password'] = "password" //这里填SMTP授权码,有的邮箱没有授权码,就填密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

注意gitlab_email_fromsmtp_user_name必须一致。

3.3 备份配置

可修改备份文件存储路径,备份文件访问权限,备份加密方式,备份网络上传等。

1
2
3
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644

3.4 配置完成重启

gitlab对其相关的每个服务都提供了一系列配置,可以基于此优化性能。可以参考这个文章:解决gitlab内存消耗过大问题
另外gitlab还提供禁用内置nginx,接入外部nginx的配置方式。因为可能会遇到一些问题,我没有尝试,所以就不写了。

相关的配置完成后,必须重新运行gitlab-ctl reconfigure生成最终配置,并且需要重启gitlab:

1
2
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

四、gitlab常用命令

1
2
3
4
5
6
7
8
9
10
11
gitlab-ctl start [service]   # 启动所有/单个服务 gitlab 组件
gitlab-ctl stop [service] # 停止所有/单个服务 gitlab 组件
gitlab-ctl restart [service] # 重启所有/单个服务 gitlab 组件
gitlab-ctl status [service] # 查看所有/单个服务状态
gitlab-ctl reconfigure # 重新生成配置
gitlab-ctl tail [service] # 查看所有/单个服务日志

gitlab-rails console # 进入rails控制台

gitlab-rake gitlab:backup:create #备份数据库
gitlab-rake gitlab:backup:restore BACKUP=1483198680 #备份恢复,后面的数字是备份的时间戳,可以通过备份文件名看到。

四、测试邮件和web服务

4.1 测试邮件服务

1
2
sudo gitlab-rails console
irb(main):003:0> Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now

4.2 测试web服务

从浏览器访问上面配置的external_url。gitlab提供了一个初始账号。

  • 初始账户: root 密码: 5iveL!fe

第一次登录会要求修改密码。

这样不出问题就完成了gitlab的部署,剩下的就是去网站摸索各种功能咯,祝玩的愉快o(∩_∩)o