GitLab快速上手指南下篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
目录
一.gitlab的数据备份和恢复
1.手动备份配置文件
- 备份配置文件:
/etc/gitlab/gitlab.rb
gitlab的配置文件
/etc/gitlab/gitlab-secrets.json
gitlab双因子验证等使用此文件
- 备份配置文件案例:
gitlab-ctl backup-etc [-p, --backup-path BACKUP_PATH]
如果不指定"-p, --backup-path BACKUP_PATH",则默认备份至"/etc/gitlab/config_backup"。
举个例子:
如上图所示,若不指定备份路径,会使用gitlab默认的备份路径哟~
如下图所示,备份的文件可以尝试解压观察里面的文件。
参考链接:
https://docs.gitlab.com/ee/raketasks/backup_restore.html
2.手动备份数据
- 不同版本的备份数据命令
gitlab 12.2之后版本:
gitlab-backup create
gitlab 12:1 之前的版本:
gitlab-rake gitlab:backup:create
- 备份数据相关配置:
默认在"/etc/gitlab/gitlab.rb"文件中指定备份路径,如果目录空间不足,可以修改新的目录。
- gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
- 注意,修改完配置需要执行"gitlab-ctl reconfigure"
备份的文件权限,所有者和所属组为git
- gitlab_rails['backup_archive_permissions'] = 0644
默认备份过期时长为7天,单位为s,之后会被自动删除。
- gitlab_rails['backup_keep_time'] = 604800
- 备份数据案例:
gitlab-backup create
备份数据,如上图所示,备份完成会警告咱们要备份配置文件哟~但咱们已经备份过了,可以忽略该警告。
3.模拟删除meta-data项目数据
3.1 删除meta-data项目
如上图所示,依次点击鼠标后,就会弹出删除meta-data的项目的确认框,如下图所示。
3.2 meta-data被删除成功
如上图所示,删除会提示"meta-data"正在被删除,刷新页面后就看不到该提示了,如下图所示。
4.通过备份恢复meta-data项目数据
4.1 恢复前需要先停止puma和sidekiq服务
# gitlab-ctl stop puma
# gitlab-ctl stop sidekiq
# gitlab-ctl status
温馨提示:
puma服务:
是一个用于 Ruby 应用程序的简单、快速、多线程和高度并发的HTTP 1.1服务器。
sidekiq服务:
存储用户在后台执行队列任务(异步执行)
4.2 恢复时指定备份文件的时间部分,不要指定文件的全名
# gitlab-backup restore BACKUP=1676332446_2023_02_13_15.6.7
将前缀为"1676332446_2023_02_13_15.6.7"的备份文件进行恢复。
如上图所示,此过程需要输入2次yes哟~
# gitlab-ctl reconfigure
恢复数据后,需要还原配置文件路径,并重新配置一下gitlab使其生效。
值得注意的是,咱们并没有删除配置文件,而是删除了项目数据,此过程理论上应该是可用跳过的。
# gitlab-ctl restart
重启gitlab服务,确保每个服务都被重新拉起,如下图所示。
温馨提示:
旧版本恢复方法:
- 恢复前需要先停止两个服务
# gitlab-ctl stop puma
# gitlab-ctl stop sidekiq
- 恢复时指定备份文件的时间部分,不需要指定文件的名称。
gitlab-rake gitlab:backup:restore BACKUP=备份文件的时间部分
4.3 检查恢复是否成功
如上图所示,项目名称被成功恢复啦。
如下图所示,项目的数据也被成功恢复了哟。
二.gitlab的迁移和升级
在生产中升级往往伴随着服务器的迁移,比如从本地机房迁移到云环境中,而实现升级。
1.迁移流程概述
- 在原gitlab主机上备份配置文件和数据
- 在目标机器上安装相同版本的gitlab软件
- 还原配置和数据
- 本质上就是备份和恢复的过程
2.升级流程概述
- 如果是新机器,需要先安装旧版本,并还原配置和数据
- 不能直接跳过中间版本直接升级,选择最近的大版本进行升级
比如12.1想要升级到13.0,先升级到12.x最高版本,再升级到13.0。
- 下载新版本的安装,直接安装包
- 安装包时可能会提示出错,原因是版本升级后有些配置项会过时,根据提示修改配置即可
- 重新配置: gitlab-ctl reconfigure
- 重启服务: gitlab-ctl restart
3.迁移和升级案例
要先做迁移操作在做升级操作即可。
迁移数据验证无误后,升级时仅需要安装对应的软件包即可。升级完成后,需要重启下服务哟~
三.实现https
1.实现https概述
gitlab如果用于不安全的网络,建议使用https协议。
官方文档:
https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
2.gitlab实现https实战案例
(1)创建证书存放目录
[root@ubuntu11.yinzhengjie.com ~]# mkdir /etc/gitlab/ssl
(2)将公司的证书解压放在证书目录中,此处使用了我个人的域名
[root@ubuntu11.yinzhengjie.com ~]# unzip www.yinzhengjie.com_nginx.zip -d /etc/gitlab/ssl/
(3)修改gitlab的配置文件
[root@ubuntu11.yinzhengjie.com ~]# vim /etc/gitlab/gitlab.rb
...
# 注意协议变成了https,而且域名要和证书的名称一致哟~
external_url 'https://www.yinzhengjie.com'
# 是否启用nginx相关配置
nginx['enable'] = true
# 设置客户端最大传输消息大小限制
nginx['client_max_body_size'] = '1000m'
# 是否将http重定向到https
nginx['redirect_http_to_https'] = true
# 将80端口重定向到https,将所有请求80的都跳转到443
nginx['redirect_http_to_https_port'] = 80
# 指定证书文件
nginx['ssl_certificate'] = "/etc/gitlab/ssl/www.yinzhengjie.com_nginx/www.yinzhengjie.com_bundle.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/www.yinzhengjie.com_nginx/www.yinzhengjie.com.key"
(4)重新编译gitlab,使得配置生效
[root@ubuntu11.yinzhengjie.com ~]# gitlab-ctl reconfigure
(5)修改Windows和Linux的hosts文件解析
# gitlab证书配置
10.0.0.11 www.yinzhengjie.com
(6)访问gitlab服务
如下图所示。
四.找回gitlab忘记的密码(可用于破解别人的gitlab服务器)
1.官方文档
推荐阅读:
https://docs.gitlab.com/ee/security/reset_user_password.html#reset-the-root-password
2.实战案例
(1)在gitlab的字符终端控制台界面修改密码
[root@ubuntu11.yinzhengjie.com ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
GitLab: 15.6.7 (063acfb7f87) FOSS
GitLab Shell: 14.13.0
PostgreSQL: 13.8
------------------------------------------------------------[ booted in 17.47s ] # 此步骤可能需要17秒左右才能打开哟~
Loading production environment (Rails 6.1.6.1)
irb(main):001:0>
irb(main):002:0> user = User.where(id: 1).first # 找到id为1的用户,下面说第一个用户是root
=> #<User id:1 @root>
irb(main):003:0>
irb(main):004:0> user.password="12345678" # 将root用户密码重置为"12345678"
=> "12345678"
irb(main):005:0>
irb(main):006:0> user.password_confirmation="12345678" # 将root用户名密码再次确认设置为"12345678"
=> "12345678"
irb(main):007:0>
irb(main):008:0> user.save # 保存配置
=> true
irb(main):009:0>
irb(main):010:0> quit # 退出终端
[root@ubuntu11.yinzhengjie.com ~]#
(2)访问gitlab的WebUI
如上图所示,使用咱们重置后的密码进行登录即可。
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎交流学习技术交流,个人微信: "JasonYin2020"(添加时请备注来源及意图备注)
作者: 尹正杰, 博客: https://www.cnblogs.com/yinzhengjie/p/18551456