GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。omnibus方式即是通过gitlab提供的一个打包好的文件,通过类似一键似的安装来完成gitlab-ce企业私有代码库的安装。这里以centos7/rhel7 下的rpm包安装为例。

一、安装依赖

1yum -y install policycoreutils openssh-server openssh-clients postfix
2systemctl enable postfix && systemctl start postfix

二、gitlab-ce的安装

有外网连接环境的,可以直接通过官方的bash文件进行安装,如果连gitlab比较慢,也可以考虑使用国内的清华大学的源 进行安装。不过清华大学的源相对于gitlab上有些滞后。如果没有外网环境,可以打开:https://packages.gitlab.com/gitlab/gitlab-ce url下载相应版本的包,进行安装。

 1# shell 安装
 2curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
 3# 清华大学源安装
 4# 新建 /etc/yum.repos.d/gitlab-ce.repo,内容为
 5[gitlab-ce]
 6name=Gitlab CE Repository
 7baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
 8gpgcheck=0
 9enabled=1
10# 再执行
11sudo yum makecache
12sudo yum install gitlab-ce

无外网的直接下载相应的rpm包,执行rpm -ivh gitlab-ce-xxx.rpm 安装就行了。

三、gitlab.rb配置文件

默认rpm安装好,gitlab的配置文件是/etc/gitlab/gitlab.rb , gitlab配置对外的IP端口、备份目录、备份保存时间、时区、是否启用某些特性等全部在文件配置,这里以修改gitlab对外提供服务的地址为例,配置项见下图:

gitlab-omnibus.png

四、配置启用gitlab

完成配置后,可以通过如下命令配置和启用gitlab:

1gitlab-ctl reconfigure
2gitlab-ctl restart

其他常见命令如下:

1sudo gitlab-ctl start                 # 启动所有 gitlab 组件;
2sudo gitlab-ctl stop                 # 停止所有 gitlab 组件;
3sudo gitlab-ctl restart              # 重启所有 gitlab 组件;
4sudo gitlab-ctl status               # 查看服务状态;
5sudo gitlab-ctl reconfigure        # 启动服务;
6sudo vim /etc/gitlab/gitlab.rb        # 修改默认的配置文件;
7gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
8sudo gitlab-ctl tail        # 查看日志;

接下来打开相应的URL就会跳出gitlab的主界面了,新的版本现在第一次打开时,会让输入root用户的的新的密码。输入新密码后,可以通过登陆管理projcet。老版本中默认的用户密码是:Username: root 、Password: 5iveL!fe 。

五、更改nginx服务

gitlab-ce omnibus包里默认集成的有nginx,不过很多时候,一台主机上可能不仅仅只跑一个gitlab-ce服务,经常会出现几个服务在一台主机上的情况。比如jenkies、bamboo、jira之类的放在一起,在此之前主机上已经安装有nginx的,也可以使用主机上编译的nginx进行集成,方法如下:

打开/etc/gitlab/gitlab.rb,找到nginx[’enable’] = true,更改为nginx[’enable’] = false,检查默认nginx配置文件,并迁移至新Nginx服务,其配置文件位置如下:

1/var/opt/gitlab/nginx/conf/nginx.conf #nginx配置文件,包含gitlab-http.conf文件
2/var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab核心nginx配置文件

六、gitlab服务的构成

1Nginx:静态web服务器。
2gitlab-shell:用于处理Git命令和修改authorized keys列表。
3gitlab-workhorse: 轻量级的反向代理服务器。
4logrotate:日志文件管理工具。
5postgresql:数据库。
6redis:缓存数据库。
7sidekiq:用于在后台执行队列任务(异步执行)。
8unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。