Gitlab搭建及常用命令

  • Post author:
  • Post category:其他




Git成员

Git:是一种版本控制系统,是一个命令,是一种工具。

Gitlib:是用于实现Git功能的开发库。

Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。

GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。



什么是Gitlab

Gitlab是利用Ruby on Rail开发的开源应用程序,实现一个自托管的Git项目仓库,可以通过web界面进行访问公开的或者私人项目。

GitLab拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,它提供一个代码片段功能可以轻松实现代码复用,便于日后有需要的时候进行查找。



Gitlab搭建

1、 使用gitlab的rpm包安装:gitlab-ce-11.9.9-ce.0.el7.x86_64.rpm

# yum install gitlab-ce-11.9.9-ce.0.el7.x86_64.rpm -y

2、修改配置文件

# vim /etc/gitlab/gitlab.rb
	external_url 'http://172.25.14.10' # gitlab地址

3、重载服务

# gitlab-ctl reconfigure 

4、服务重载后查看gitlab组件

在这里插入图片描述

5、登陆gitlab: http://172.25.14.10

设置新密码:

在这里插入图片描述

新密码登陆

在这里插入图片描述

6、创建新的project

Project name–>>>private–>>>initialize–>>>Create project

在这里插入图片描述

在这里插入图片描述

安装git

# yum install git

6.2 将ssh公钥添加到gitlab

在这里插入图片描述

将公钥复制,点击Add key

在这里插入图片描述

添加完成后,进入myProject–>>clone,在本地生成同名目录,并且目录中会有所有的项目文件

在这里插入图片描述

在远程项目克隆到本地

# git clone git@172.25.14.10:root/myproject.git
[root@node1 ~]# cd myproject/
[root@node1 myproject]# ls
README.md
[root@node1 myproject]# cat README.md 
# myProject

在本地项目中编辑内容,并将内容推送到Gitlab远程项目下

# git config --global user.name "sql"  #添加git用户信息
# git config --global user.email "1055@localhost"
# echo hello >  test
[root@node1 myproject]# ls
README.md  test
[root@node1 myproject]# cat test 
hello

将test提交到版本库

[root@node1 myproject]# git add test 
[root@node1 myproject]# git commit -m"test"
[master bd9685d] test
 1 file changed, 1 insertion(+)
 create mode 100644 test
[root@node1 myproject]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.25.14.10:root/myproject.git
   71e51e5..bd9685d  master -> master
Branch master set up to track remote branch master from origin.

在这里插入图片描述

在这里插入图片描述



Gitlab由下面服务组成
  • nginx: 静态web服务器

    在这里插入代码片
  • gitlab-shell: 用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse: 轻量级的反向代理服务器,可以处理一些大的HTTP请求(磁盘上的 CSS、JS 文件、文件上传下载等),处理 Git Push/Pull 请求,处理到Rails 的连接会反向代理给后端的unicorn(修改由 Rails 发送的响应或发送给 Rails 的请求,管理 Rails 的长期 WebSocket 连接等)。
  • logrotate:日志文件管理工具
  • postgresql:repository 中的数据(元数据,issue,合并请求 merge request 等 , 可以登录 Web 的用户
  • redis:缓存每个客户端的sessions和后台队列,负责分发任务。Redis需求的存储空间很小,大约每个用户25KB
  • sidekiq:用于在后台执行队列任务(异步执行)
  • unicorn:Gitlab 自身的 Web 服务器(Ruby Web Server),包含了 Gitlab 主进程,负责处理快速/一般任务,与 Redis 一起工作,配置参考:CPU核心数 + 1 = unicorn workers数量。

    1. 通过检查存储在 Redis 中的用户会话来检查权限

    2. 为 Sidekiq 制作任务

    3. 从仓库(warehouse)取东西或在那里移动东西
  • gitlab-shell:用于 SSH 交互,而不是 HTTP。gitlab-shell 通过 Redis 与 Sidekiq 进行通信,并直接或通过 TCP 间接访问 Unicorn。用于处理Git命令和修改authorized keys列表
  • Gitaly:后台服务,专门负责访问磁盘以高效处理 gitlab-shell 和 gitlab-workhorse 的git 操作,并缓存耗时操作。所有的 git 操作都通过 Gitaly 处理,并向 GitLab web 应用程序提供一个 API,以从 git(例如 title, branches, tags, other meta data)获取属性,并获取 blob(例如 diffs,commits,files)
  • Sidekiq:后台核心服务,可以从redis队列中提取作业并对其进行处理。后台作业允许GitLab通过将工作移至后台来提供更快的请求/响应周期。Sidekiq任务需要来自Redis
  • prometheus:提供监控


gitlab常用命令
  • 运维管理
  1. 查看版本
# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 
  1. 检查gitlab
# gitlab-rake gitlab:check SANITIZE=true --trace
  1. 实时查看日志
# gitlab-ctl tail
  1. 数据库关系升级
# gitlab-rake db:migrate
  1. 清理redis缓存
# gitlab-rake cache:clear
  1. 升级gitlab-ce版本
# yum update gitlab-ce
  1. 升级postgreSQL最新版本
# gitlab-ctl pg-upgrade


日志
  1. 实时查看所有日志
# gitlab-ctl tail
  1. 实时查看redis日志
# gitlab-ctl  tail redis
  1. 实时查看postgresql日志
# gitlab-ctl  tail postgresql
  1. 实时查看gitlab-workhorse日志
# gitlab-ctl  tail gitlab-workhorse
  1. 实时查看logrotate日志
# gitlab-ctl  tail logrotate
  1. 实时查看nginx日志
# gitlab-ctl  tail nginx
  1. 实时查看sidekiq日志
# gitlab-ctl tail sidekiq
  1. 实时查看unicorn日志
# gitlab-ctl tail unicorn


Gitlab备份与恢复

gitlab备份的默认目录是/var/opt/gitlab/backups

  • 备份命令
# gitlab-rake gitlab:backup:create #该命令会在备份目录(默认:/var/opt/gitlab/backups/)下创建一个tar压缩包xxxxxxxx_gitlab_backup.tar,其中开头的xxxxxx是备份创建的时间戳,这个压缩包包括GitLab整个的完整部分。
  • 自动备份

    通过任务计划crontab 实现自动备份
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create # 每天两点备份gitlab数据
  • 备份保留时间修改,编辑配置文件/etc/gitlab/gitlab.rb
# gitlab_rails['backup_keep_time'] = xxxxxx # 数值单位:秒

重新加载配置文件

# gitlab-ctl reconfigure


恢复

停止unicorn和sidekiq,保证数据库没有新的连接,没有写数据情况

# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq
# gitlab-rake gitbab:backup:restore BACKUP=xxxxxx(恢复文件)
# gitlab-ctl start 启动gitlab



版权声明:本文为weixin_43314056原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。