gitlab安装升级(大版本跨度9.4.5----13.2.1)
gitlab基础介绍
1、 repository: 代码库,可以是硬盘或NFS文件系统
2、 NGINX: web 入口
3、 数据库:包含信息Repository 中的数据(元数据,issue,合并请求merge request等)可以登陆的web用户信息
4、 Redis 缓存 ,负责分发信息
5、 sidekq: 后台任务,主要负责发送电子邮件,任务来自与redis
6、 unicorn (gitlab rails):gitlab自身的web,包含了gitlab主进程,负责处理快速/一般任务,与redis一起工作,内容有
A 通过检查存储在redis中的用户来检查权限
B 为sidekiq 制作任务
C 从仓库(warehouse) 取东西或在哪里移动东西
7、 gitlab-shell:用于SSH交互,而不是http,gitlab-shell 通过redis与sidekiq 进行通信,并直接通过TCP访问unicorn
8、 gitaly: 后台服务,专门负责访问磁盘以高效处理git,并处理缓存耗时操作,所有的git操作都通过gitaly 进行处理
9、 gitlab-workshorse: 反向代理服务器,可以处理与redis无关的请求,磁盘上的CSS,JS 文件等),处理git push/pull 请求,处理redis的链接(修改有redis发送的响应或发送给redis请求,管理redis的长期web socket链接)
10、 mail_room: 处理邮件请求,恢复gitlab发送的邮件时,gitlab会调用此服务.
大体原理: gitlab 使用nginx将前端请求代理到UNicorn web 服务器,默认情况下,unicorn 与前端之间的通信是通过unix domain 套接字进行的,但也支持通过TCP请求转发,web访问前端/home/git/gitlab/pubilc绕过unicorn 服务来提供静态页面,上传和预编译资源,gitlab使用Unicorn web 提供网页和gitlab api,使用sidekiq作为作业队列, 反过来,它使用redis 作为作业信息,元数据和作业的非持久化数据后端。 gitlab应用程序使用mysql或postgresql 作为持久化数据库,保存用户,权限,issue其他元数据等。 通过http/https提供repository时,gitlab使用gitlab API 来解释授权和访问以及提供git对象。 gitlab-shell 通过ssh提供repository,他管理/home/git/,ssh/authorized_keys 内的SSH密钥,不应该手动编辑,gitlab-shell通过gitaly访问bare repository 已提供git对象并与redis 进行通信以向sidekiq提交作业以供gitlab处理,gitlab-shell 查询gitlab API一确定授权和访问。
一、gitlab安装(安装方式:下载rpm包)
1、先去官网下载安装包(https://packages.gitlab.com),但是鉴于下载速度实在太慢了,比较推荐去清华源下载,地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/,我的安装环境是centos7.2,选择的版本是gitlab-ce-9.4.5-ce.0.el7.x86_64.rpm。
2、安装gitlab
# rpm -Uvh gitlab-ce-9.4.5-ce.0.el7.x86_64.rpm
3、编辑配置文件 /etc/gitlab/gitlab.rb
# grep '^[a-z]' /etc/gitlab/gitlab.rb
external_url 'http://172.16.68.154:10068' #gitlab监听地址和端口,默认监听端口号为80
unicorn['port'] = 28080 #组件unicorn监听的端口号,默认为8080
prometheus['enable'] = false #关闭prometheus监控,比较耗内存
4、初始化gitlab
# gitlab-ctl reconfigure
5、启动gitlab
# gitlab-ctl start
6、查看gitlab版本号
# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
7、查看gitlab各组件的启动情况
# gitlab-ctl status
8、gitlab默认安装目录
/opt/gitlab/ ## 主目录 /etc/gitlab/ ## 放置配置文件 /var/opt/gitlab/ ## 各个组件 /var/log/gitlab/ ## 放置日志文件
9、输入访问地址http://172.16.68.154:10068,第一次登陆会转跳到重置密码的界面,设置完成即可用root用户登陆。
二、忘记root用户密码,重置密码。
# gitlab-rails console production
irb(main):001:0> u=User.where(id:1).first irb(main):003:0> u.password=12345678 irb(main):004:0> u.password_confirmation=12345678 irb(main):005:0> u.save! irb(main):006:0> quit
三、备份与恢复
1、备份
# gitlab-rake gitlab:backup:create
2、恢复
(1)先停止服务
# gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq # gitlab-ctl stop nginx
(2) 恢复数据
# gitlab-rake gitlab:backup:restore BACKUP=1596428908_2020_08_03_9.4.5
四、升级
1、升级之前先做好备份
# gitlab-rake gitlab:backup:create
备份好的数据在没改备份路径的情况下,默认的目录是:/var/opt/gitlab/backups
2、参考https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations给出的升级跨度版本,一个版本一个版本的升级,千万不可跨大版本升级。
(1)升级前先停掉服务
# gitlab-ctl stop unicorn sidekiq nginx
(2)我要从9.4.5升级到13.2.1,需要升级的版本号依次是9.4.5-->9.5.10-->10.8.7-->11.11.8-->12.0.12-->12.10.6-->13.0.0-->13.2.1
每升级一个版本都要重启gitlab登陆页面看看,有没有问题,确定无误之后方可进行升级下一个版本。
# rpm -Uvh gitlab-ce-9.5.10-ce.0.el7.x86_64.rpm
# gitlab-ctl reconfigure
# gitlab-ctl restart
Firefox XPI插件安装方法
assert()函数用法总结
Linux下rsync的用法
windows XP下如何切换用户到Administrator
预编译命令#pragma once与 #ifndef的区别
DOS命令下获取远程主机MAC地址的三种方法
net send命令详解
Linux守护进程详解(init.d和xinetd)
如何在真机上调试Android应用程序(图文详解)