gitlab的安装以及使用

一、概述

GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。

它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找

二、Gitlab服务构成

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

Gitlab工作流程:

GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表

  • 限制执行预定义好的Git命令(git push,git pull,git annex)
  • 调用GitLab Rails API检查权限
  • 执行pre-receive钩子(在企业版中叫做Git钩子)
  • 执行用户请求的动作,处理GitLab的post-receive动作
  • 处理自定义的post-receive动作

当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码:

  • 如果是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作
  • 如果是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理
1、调用GitLab Rails API 检查权限
2、执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
3、执行你请求的动作
4、处理GitLab的post-receive动作
5、处理自定义的post-receive动作

GitLab Workhorse:

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

三、部署

基础环境要求:服务器内存至少2G以上

1、方法一:下载gitlab-ce的rpm包:

可通过清华大学的源地址进行下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

将对应版本的gitlab-ce下载到本地后,直接yum安装即可 :

# 要先将这个rpm包下载到本地
yum install -y gitlab-ce-13.6.1-ce.0.el7.x86_64.rpm

默认安装在/var/opt/gitlab目录下

2、方法二:配置yum源:

在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:

[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.key

然后创建cache,再直接安装gitlab-ce :

yum makecache  # 这一步会创建大量的数据

# 直接安装最新版
yum install -y gitlab-ce 

# 如果要安装指定的版本,在后面填上版本号即可
yum install -y  gitlab-ce-13.6.1

# 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证
yum install gitlab-ce -y --nogpgcheck

查看gitlab版本的命令如下:

gitlab-rake gitlab:env:info

3、修改gitlab的配置:

配置文件位置  /etc/gitlab/gitlab.rb,可将一些不需要的配置修改为false,如图:

上图中的都是可不启动的,默认情况下是启动的,可先将注释去掉,然后修改true为false,如图:

修改URL地址,IP就是gitlab所在的机器IP,端口可自定义,如图:

上图中的external_url实际对应的是一个NGINX地址,后续使用此地址打开gitlab

修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效

gitlab-ctl reconfigure # 重载配置文件
#注意:重载配置文件的时候,会将其余相关组件都安装到本地中,组件都在下载的gitlab的rpm包里集成好了

初始化后的页面如下:

上图中黄线区域文件中为root用户的初始密码,可通过此密码登录gitlab

4、修改root用户密码:

通过IP和端口登录gitlab,如图:

点击右上角的头像下方的用户按钮,如图:

在打开页面中,点击右侧的编辑按钮,如图:

点击左侧的Password按钮,如图:

修改之后通过新密码登录即可

5、Gitlab常用命令:

gitlab-ctl start         # 启动所有 gitlab 组件
gitlab-ctl stop          # 停止所有 gitlab 组件
gitlab-ctl restart       # 重启所有 gitlab 组件
gitlab-ctl status        # 查看服务状态

gitlab-ctl reconfigure   # 启动服务
gitlab-ctl show-config   # 验证配置文件

gitlab-ctl tail          # 查看日志

gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab

vim /etc/gitlab/gitlab.rb # 修改默认的配置文件

四、修改默认端口

gitlab的默认端口为80,如果要修改为其他端口,可通过如下方式

1、编辑gitlab.rb配置文件,修改其中的监听端口,如下:

vim /etc/gitlab/gitlab.rb
external_url 'http://10.9.2.247:8081'  #在IP后面添加端口8081
nginx['listen_port'] = 8081            #取消掉注释,并修改端口为8081

2、编辑gitlab-http.conf文件,修改其中端口,如下:

vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

3、重启gitlab,执行命令如下:

gitlab-ctl restart

4、通过8081端口访问,如图:

五、备份

执行如下命令即可完成备份,此命令会备份仓库、数据库、用户、用户组、密钥、权限等,如下:

gitlab-rake  gitlab:backup:create      #备份数据
cp /etc/gitlab/gitlab.rb               #备份配置文件

执行完成后,会在/var/opt/gitlab/backups目录下生成一个tar包

六、恢复

1、停止gitlab,防止数据不一致,如下:

gitlab-ctl stop

2、在新机器安装完gitlab后(假设是yum安装),复制配置文件过去,如下:

cp gitlab.rb /etc/gitlab/          #备份的配置文件替换到新的

3、在新机器执行命令恢复,如下:

gitlab-rake gitlab:backup:restore BACKUP=backupfile.tar #备份生成的tar包

4、加载gitlab配置,然后启动gitlab,如下:

 gitlab-ctl reconfigure
 gitlab-ctl start

如果出现redis异常,那就重启服务器,应该就可以恢复了

注:执行恢复后,原有的gitlab中配置的person access tokens会失效,需要重置,配置的公钥不会失效

七、忘记root密码,重置

1、首先登录gitlab服务器控制台,命令如下:

2、查找用户为root,如图:

3、设置root密码,然后保存设置,如图:

注:密码要稍微复杂一些,否则user.save会提示false

标签