本文最后编辑于 前,其中的内容可能需要更新。
最近因为工作的原因,需要熟悉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
|
接下来缓存相关包
2.2 安装相关依赖
1 2 3 4 5 6
| sudo yum -y install curl policycoreutils openssh-server openssh-clients 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_from
与smtp_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-ctl stop [service] gitlab-ctl restart [service] gitlab-ctl status [service] gitlab-ctl reconfigure gitlab-ctl tail [service]
gitlab-rails console
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提供了一个初始账号。
第一次登录会要求修改密码。
这样不出问题就完成了gitlab的部署,剩下的就是去网站摸索各种功能咯,祝玩的愉快o(∩_∩)o