Gitlab服务安装文档: https://gitlab.cn/install/

安装环境要求:https://docs.gitlab.com/ee/install/requirements.html

一、下载并部署gitlab

1.1 环境准备

ubuntu

apt update

apt install -y iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev  gcc openssh-server iotop unzip zip ipmitool

centos

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install vim gcc gcc-c++wget net-tools lrzsz iotop lsof bash-completion curl policycoreutils openssh-server openssh-clients postfix -y

systemctl disable firewalld

sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux

hostnamectl set-hostname gitlab

reboot

1.2 gitlab安装(尽量下载最新的)

安装包下载:https://packages.gitlab.com/gitlab/gitlab-ce

rpm包清华源:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

ubuntu环境gitlab下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/

root@ubuntu1804:~# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/gitlab-ce_15.4.2-ce.0_amd64.deb

root@ubuntu1804:~# dpkg -i gitlab-ce_15.4.2-ce.0_amd64.deb

1.3 gitlab配置

# 源配置
root@ubuntu1804:~# grep '^[a-Z]' /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'

# 修改后配置

root@ubuntu1804:~# vim /etc/gitlab/gitlab.rb
root@ubuntu1804:~# grep '^[a-Z]' /etc/gitlab/gitlab.rb
external_url 'http://10.100.0.200'

# 可选邮件通知设置
gitlab_rails['smtp_enable']=true
gitlab_rails['smtp_address']="smtp.qq.com"
gitlab_rails['smtp_port']=465
gitlab_rails['smtp_user_name']="11111111@qq.com
gitlab_rails['smtp_password']="111111"
gitlab_rails['smtp_domain']="qq.com"
gitlab_rails['smtp_authentication']=:login
gitlab_rails['smtp_enable_starttls_auto']=true
gitlab_rails['smtp_tls']=true
gitlab_rails['gitlab_email_from']="11111111@qq.com"
user["git_user_email"]="11111111@qq.com"

1.4 初始化服务

执行配置并启动服务
root@ubuntu1804:~# gitlab-ctl reconfigure

gitlab相关目录
/etc/gitlab        #配置文件目录
/run/gitlab        #运行pid目录
/opt/gitlab        #安装目录
/var/opt/gitlab    #数据目录

在这里插入图片描述

1.5 gitlab常用命令

gitlab-rails          # 用于启动控制台进行特殊操作,比如修改管理员密码、打开数据库控制台(gitlab-rails dbconsole)等
gitlab-psql           # 数据库命令行
gitlab-rake           # 数据备份恢复等数据操作
gitlab-ctl            # 客户端命令行操作行
gitlab-ctl stop       # 停止gitlab
gitlab-ctl start      # 启动gitlab
gitlab-ctl restart    # 重启gitlab
gitlab-ctl status     # 查看组件运行状态
gitlab-ctl tail nginx # 查看某个组件的日志

1.6 验证gitlab启动完成

root@ubuntu1804:~# gitlab-ctl status

run: alertmanager: (pid 28347) 67466s; run: log: (pid 27979) 67561s
run: gitaly: (pid 28377) 67464s; run: log: (pid 27447) 67697s
run: gitlab-exporter: (pid 28320) 67468s; run: log: (pid 27925) 67579s
run: gitlab-kas: (pid 28293) 67470s; run: log: (pid 27722) 67679s
run: gitlab-workhorse: (pid 28302) 67469s; run: log: (pid 27834) 67597s
run: grafana: (pid 28362) 67465s; run: log: (pid 28223) 67497s
run: logrotate: (pid 2332) 2908s; run: log: (pid 27368) 67709s
run: nginx: (pid 27861) 67592s; run: log: (pid 27869) 67591s
run: node-exporter: (pid 28314) 67469s; run: log: (pid 27905) 67585s
run: postgres-exporter: (pid 28355) 67465s; run: log: (pid 28000) 67555s
run: postgresql: (pid 27574) 67689s; run: log: (pid 27590) 67686s
run: prometheus: (pid 28328) 67469s; run: log: (pid 27960) 67567s
run: puma: (pid 27783) 67611s; run: log: (pid 27791) 67610s
run: redis: (pid 27387) 67707s; run: log: (pid 27399) 67704s
run: redis-exporter: (pid 28322) 67469s; run: log: (pid 27942) 67574s
run: sidekiq: (pid 27800) 67605s; run: log: (pid 27817) 67603s

1.7 验证端口及状态

80端口是在初始化gitlab的时候启动的,因此如果之前的有程序占用会导致初始化失败或无法访问!

root@ubuntu1804:~# lsof -i:80
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   27861       root    7u  IPv4 178143      0t0  TCP *:http (LISTEN)
nginx   27862 gitlab-www    7u  IPv4 178143      0t0  TCP *:http (LISTEN)
nginx   27863 gitlab-www    7u  IPv4 178143      0t0  TCP *:http (LISTEN)

1.8 登录gitlab web界面

http://10.100.0.200/

默认用户:root

默认密码:/etc/gitlab/initial_root_password(这个文件将在首次执行reconfigure后24小时自动删除,拿到这个密码后需要尽快登录web界面进行密码修改)

在这里插入图片描述

登录后首页(警告暂时不用管,后续关闭即可)
在这里插入图片描述

修改密码(按图顺序操作)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

保存设置,重新登录

在这里插入图片描述

密码至少8位

在这里插入图片描述

1.9 关闭账户注册

在这里插入图片描述

Anyone can register for an account.
任何人都可以注册一个账户。

Only allow anyone to register for accounts on GitLab instances that you intend to be used by anyone. Allowing anyone to register makes GitLab instances more vulnerable.
只允许任何人在您打算供任何人使用的GitLab实例上注册帐户。允许任何人注册使GitLab实例更容易受到攻击。

默认情况下可以直接注册账号,因此一般都关闭此功能

第一次登录会有提示,可直接点turn off进入设置,或者settings→general

在这里插入图片描述在这里插入图片描述

save保存

在这里插入图片描述
在这里插入图片描述

此时注册选项没有了(register now)

在这里插入图片描述

1.10 创建git账户

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.11 重新设置密码

第一次使用新账号登陆要设置密码(或者管理员设置密码)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.如果您的电子邮件地址存在于我们的数据库中,您将在几分钟内收到您的电子邮件地址的密码恢复链接。

通过邮件重置用户密码

或者创建完用户,编辑用户设置密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登录后会要求重置密码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

登录后界面

在这里插入图片描述

1.12 创建组

使用管理root创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.13 使用管理员创建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建项目后的效果

You can’t push or pull repositories using SSH until you add an SSH key to your profile.

在向配置文件添加SSH密钥之前,您不能使用SSH推或拉存储库。

The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found.

Auto DevOps管道已经启用,如果没有找到可替代的CI配置文件,将使用该管道。

Container registry is not enabled on this GitLab instance. Ask an administrator to enable it in order for Auto DevOps to work.

这个GitLab实例没有启用容器注册表。请管理员启用它,以便自动DevOps工作。

在这里插入图片描述

设置ssh keys

在这里插入图片描述

在这里插入图片描述

1.14 将用户添加到组

https://docs.gitlab.com/ee/user/permissions.html(更多权限)

  • edit
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • groups

在这里插入图片描述
在这里插入图片描述

1.15 创建一个测试页面

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.16 git客户端测试clone项目(哪个用户需要克隆,就哪个用户登录)

在这里插入图片描述

注:如果配置了ssh克隆,可选第一个

在这里插入图片描述

复制克隆地址

http://10.100.0.200/devtest1/web1.git

到服务器克隆

root@jenkins-master:/opt# git clone http://10.100.0.200/devtest1/web1.git
Cloning into 'web1'...
Username for 'http://10.100.0.200': dev1    # 克隆账号
Password for 'http://dev1@10.100.0.200':    # 克隆密码
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.

在这里插入图片描述

编辑文件并测试提交

root@ubuntu1804-1:~# ll
total 52
drwx------  5 root root  4096 Nov  7 21:57 ./
drwxr-xr-x 23 root root  4096 Nov 20  2021 ../
-rw-------  1 root root  1231 Oct 18 09:49 .bash_history
-rw-r--r--  1 root root  3106 Apr  9  2018 .bashrc
drwx------  2 root root  4096 Mar  7  2022 .cache/
drwx------  3 root root  4096 Mar  7  2022 .gnupg/
-rw-r--r--  1 root root   148 Aug 17  2015 .profile
drwxr-xr-x  3 root root  4096 Nov  7 21:57 test-project/
-rw-------  1 root root 15923 Oct 19 11:18 .viminfo
-rw-------  1 root root   634 Nov  7 21:57 .Xauthority
root@ubuntu1804-1:~# cd /opt/web1

# 提交前记得设置全局配置
root@ubuntu1804-1:~/opt/web1# git config --global user.name test
root@ubuntu1804-1:~/opt/web1# git config --global user.email test@qq.com
root@ubuntu1804-1:~/opt/web1# vim index.html
root@ubuntu1804-1:~/opt/web1# cat index.html
<h1>11111111</h1>
<h1>22222222</h1>
<h1>33333333</h1>
<h1>44444444</h1>
<h1>55555555</h1>

root@jenkins-master:/opt/web1# git add index.html      # 把当前目录的数据加载到暂存区,一般用git add . ,直接提交一个文件的情形较少
root@jenkins-master:/opt/web1# git commit -m "v2 version2" # git先将暂存区数据提交至本地仓库(体现分布式)
[main a5758be] v2 version2
1 file changed, 2 insertions(+)
root@jenkins-master:/opt/web1# git push      # 提交至gitlab仓库,只提交变化的部分
Username for 'http://10.100.0.200': dev1
Password for 'http://dev1@10.100.0.200':
Counting objects: 3, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 297 bytes | 297.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://10.100.0.200/devtest1/web1.git
   3d2f11e..a5758be  main -> main

1.17 git web端验证数据

在这里插入图片描述

在这里插入图片描述

安装测试环境,验证web服务

root@jenkins-master:~# apt install apache2
root@jenkins-master:~# cd /var/www/html/
root@jenkins-master:/var/www/html# rm index.html     # 刪除默认的页面
root@jenkins-master:/var/www/html# git clone http://10.100.0.200/devtest1/web1.git
Cloning into 'web1'...
Username for 'http://10.100.0.200': dev1
Password for 'http://dev1@10.100.0.200':
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
root@jenkins-master:/var/www/html# ls
web1

测试访问
在这里插入图片描述

1.18 gitlab使用

①保存数据的方式

  • SVN与CVS:

每次提交的文件都单独保存,即按照文件的提交时间区分不同的版本,保存至不同的逻辑存储区域,后期恢复的时候直接基于之前版本恢复。

  • Gitlab:

Gitlab与SVN的数据保存方式不一样,gitlab虽然也会在内部对数据进行逻辑划分保存,但是当后期提交的数据如果和之前提交过的数据没有变化,其就直接快照之前的文件,而不是在将文件重新上传一份在保存一遍,这样既节省了空间又加快了代码提交速度。

②常用git 命令

使用git命令下载代码与提交代码等操作

git config --global user.name "name"      # 设置全局用户名
git config --global user.email xxx@xx.com # 设置全局邮箱
git config --global --list                 # 列出用户全局设置
    --add                 add a new variable: name value
    --unset               remove a variable: name [value-regex]
    --unset-all           remove all matches: name [value-regex]
    --rename-section      rename section: old-name new-name
    --remove-section      remove a section: name
git add index.html / .                    # 添加指定文件、目录或当前目录下所有数据到暂存区
git commit -m "11"                        # 提交文件到工作区
git status    # 查看工作区的状态
git push      # 提交代码到服务器
git pull      # 获取代码到本地,已经在本地clone过代码,用户后期本地代码更新作用
git log       # 查看操作日志
vim ·gitignore            # 定义忽略文件上传至gitlab
git reset --hard HEAD^^    # git版本回滚,HEAD为当前版本,加一个^为上一个,^^为上上一个版本
git reflog                # 获取每次提交的ID,可以使用--hard根据提交的ID进行版本回退
git reset --hard 5ae4b06  # 退到指定id的版本
#git branch               # 查看当前所处的分支
#git checkout -b develop  # 创建并切换到一个新分支
#git checkout develop     # 切换分支

③git缓存区与工作区等概念

  • 工作区:clone的代码或者开发自己编写的代码文件所在的目录,通常是代码所在的个服务的目录名称。

  • 暂存区:用于存储在工作区中对代码进行修改后的文件所保存的地方,使用git add添加。

  • 本地仓库:用于提交存储在工作区和暂存区中改过的文件地方,使用git commit提交

  • 远程仓库:多个开发共同协作提交代码的仓库,即gitlab服务器。

1.19 代码合并

需要用具有owner权限的lhl进行代码合并操作

1.19.1 创建分支

gitlab中

branch:可以做代码提交和回滚,通常用于测试环境或多环境的代码隔离

tag:代码的当前状态快照,不能在快照中做代码提交,用于分支只读的备份

在这里插入图片描述

创建新的分支branch:“develop”

在这里插入图片描述

在新的终端克隆项目,修改代码

root@jenkins-master:/opt# git clone http://10.100.0.200/devtest1/web1.git
Cloning into 'web1'...
Username for 'http://10.100.0.200': dev1
Password for 'http://dev1@10.100.0.200':
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
root@jenkins-master:/opt# cd web1/
root@jenkins-master:/opt/web1# git checkout develop    # 选择分支
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
Switched to a new branch 'develop'
root@jenkins-master:/opt/web1# git branch
* develop
  main
# 修改代码,重新上传
root@jenkins-master:/opt/web1# vim index.html
root@jenkins-master:/opt/web1# cat index.html
<h1>111111</h1>
<h1>222222</h1>
<h1>333333</h1>
<h1>444444</h1>
root@jenkins-master:/opt/web1# git add .
root@jenkins-master:/opt/web1# git commit -m "v3 version3"
[develop 75d0dbb] v3 version3
1 file changed, 1 insertion(+)
root@jenkins-master:/opt/web1# git push
Username for 'http://10.100.0.200': dev1
Password for 'http://dev1@10.100.0.200':
Counting objects: 3, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 304 bytes | 304.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for develop, visit:
remote:   http://10.100.0.200/devtest1/web1/-/merge_requests/new?merge_request%5Bsource_branch%5D=develop
remote:
To http://10.100.0.200/devtest1/web1.git
   a5758be..75d0dbb  develop -> develop
<h1>555555</h1>
<h1>v666666</h1>

gitlab查看上传的develop分支和main分支

develop分支

在这里插入图片描述

main分支

在这里插入图片描述

1.19.2 合并分支

①开发账号申请合并

创建合并申请

在这里插入图片描述

设置合并信息,并创建合并请求(取消选择Delet source branch…)
在这里插入图片描述

等待合并批准

在这里插入图片描述

②登录管理员账号,批准合并请求
在这里插入图片描述

点merge(点merge之后,主分支版本也更新了)

在这里插入图片描述

合并成功

在这里插入图片描述

去看主分区版本
在这里插入图片描述

Main代码已经更新,客户端可以重新拉取代码进行更新

root@jenkins-master:~# cd /var/www/html/web1
root@jenkins-master:/var/www/html/web1# git pull
Username for 'http://10.100.0.200': dev1
Password for 'http://dev1@10.100.0.200':
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
From http://10.100.0.200/devtest1/web1
   a5758be..0a32af3  main       -> origin/main
* [new branch]      develop    -> origin/develop
Updating a5758be..0a32af3
Fast-forward
index.html | 1 +
1 file changed, 1 insertion(+)
root@jenkins-master:/var/www/html/web1# cat index.html
<h1>111111</h1>
<h1>222222</h1>
<h1>333333</h1>
<h1>444444</h1>
<h1>555555</h1>
<h1>6666666</h1>

浏览器查看

在这里插入图片描述

1.20 gitlab数据备份恢复(可以在凌晨设置个调度,进行备份)

①停止gitlab数据服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up

②手动备份

# 在任意目录即可备份当前gitlab数据
root@gitlab:~# gitlab-rake gitlab:backup:create    
2022-11-07 22:21:28 +0800 -- Dumping main_database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2022-11-07 22:21:32 +0800 -- Dumping main_database ... done
2022-11-07 22:21:32 +0800 -- Dumping ci_database ... [DISABLED]
2022-11-07 22:21:32 +0800 -- Dumping repositories ...
{"command":"create","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring","level":"info","msg":"started create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2022-11-07T14:21:32.520Z"}
{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring","level":"warning","msg":"skipped create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2022-11-07T14:21:32.562Z"}
{"command":"create","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring.wiki","level":"info","msg":"started create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2022-11-07T14:21:32.703Z"}
{"command":"create","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring","level":"info","msg":"started create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design.git","storage_name":"default","time":"2022-11-07T14:21:32.706Z"}
{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring","level":"warning","msg":"skipped create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.design.git","storage_name":"default","time":"2022-11-07T14:21:32.709Z"}
{"command":"create","gl_project_path":"test-service/test-project","level":"info","msg":"started create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git","storage_name":"default","time":"2022-11-07T14:21:32.710Z"}
{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"gitlab-instance-f0cc9ad7/Monitoring.wiki","level":"warning","msg":"skipped create","relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2022-11-07T14:21:32.721Z"}
{"command":"create","gl_project_path":"test-service/test-project.wiki","level":"info","msg":"started create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki.git","storage_name":"default","time":"2022-11-07T14:21:32.732Z"}
{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"test-service/test-project.wiki","level":"warning","msg":"skipped create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.wiki.git","storage_name":"default","time":"2022-11-07T14:21:32.752Z"}
{"command":"create","gl_project_path":"test-service/test-project","level":"info","msg":"started create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.design.git","storage_name":"default","time":"2022-11-07T14:21:32.752Z"}
{"command":"create","gl_project_path":"test-service/test-project","level":"info","msg":"completed create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git","storage_name":"default","time":"2022-11-07T14:21:32.755Z"}
{"command":"create","error":"manager: repository empty: repository skipped","gl_project_path":"test-service/test-project","level":"warning","msg":"skipped create","relative_path":"@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.design.git","storage_name":"default","time":"2022-11-07T14:21:32.756Z"}
2022-11-07 22:21:32 +0800 -- Dumping repositories ... done
2022-11-07 22:21:32 +0800 -- Dumping uploads ...
2022-11-07 22:21:32 +0800 -- Dumping uploads ... done
2022-11-07 22:21:32 +0800 -- Dumping builds ...
2022-11-07 22:21:32 +0800 -- Dumping builds ... done
2022-11-07 22:21:32 +0800 -- Dumping artifacts ...
2022-11-07 22:21:32 +0800 -- Dumping artifacts ... done
2022-11-07 22:21:32 +0800 -- Dumping pages ...
2022-11-07 22:21:32 +0800 -- Dumping pages ... done
2022-11-07 22:21:32 +0800 -- Dumping lfs objects ...
2022-11-07 22:21:32 +0800 -- Dumping lfs objects ... done
2022-11-07 22:21:32 +0800 -- Dumping terraform states ...
2022-11-07 22:21:32 +0800 -- Dumping terraform states ... done
2022-11-07 22:21:32 +0800 -- Dumping container registry images ... [DISABLED]
2022-11-07 22:21:32 +0800 -- Dumping packages ...
2022-11-07 22:21:32 +0800 -- Dumping packages ... done
2022-11-07 22:21:32 +0800 -- Creating backup archive: 1667830888_2022_11_07_15.4.2_gitlab_backup.tar ...
2022-11-07 22:21:32 +0800 -- Creating backup archive: 1667830888_2022_11_07_15.4.2_gitlab_backup.tar ... done
2022-11-07 22:21:32 +0800 -- Uploading backup archive to remote storage  ... [SKIPPED]
2022-11-07 22:21:32 +0800 -- Deleting old backups ... [SKIPPED]
2022-11-07 22:21:32 +0800 -- Deleting tar staging files ...
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/db
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/repositories
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2022-11-07 22:21:32 +0800 -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2022-11-07 22:21:32 +0800 -- Deleting tar staging files ... done
2022-11-07 22:21:32 +0800 -- Deleting backups/tmp ...
2022-11-07 22:21:32 +0800 -- Deleting backups/tmp ... done

# 警告:你的gitlab.rb和gitlab-secrets.Json文件包含敏感数据和不包括在此备份中。您将需要这些文件来恢复备份。请手动备份它们。
2022-11-07 22:21:32 +0800 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually. 
2022-11-07 22:21:32 +0800 -- Backup 1667830888_2022_11_07_15.4.2 is done.

# 备份完成后启动gitlab
gitlab-ctl start

③查看要恢复的文件

  • /var/opt/gitlab/backups/ # gitlab数据备份目录,需要使用命令备份的

  • /var/opt/gitlab/nginx/conf # nginx配置文件

  • /etc/gitlab/gitlab.rb # gitlab配置文件

  • /etc/gitlab/gitlab-secrets.json # key文件

root@gitlab:~# ll /var/opt/gitlab/backups/
total 400
drwx------  2 git  root   4096 Nov  7 22:21 ./
drwxr-xr-x 21 root root   4096 Nov  4 09:53 ../
-rw-------  1 git  git  399360 Nov  7 22:21 1667830888_2022_11_07_15.4.2_gitlab_backup.tar
root@gitlab:~# ll /var/opt/gitlab/nginx/conf/
total 28
drwxr-x--- 2 root gitlab-www 4096 Nov  4 09:51 ./
drwxr-x--- 9 root gitlab-www 4096 Nov  7 21:26 ../
-rw-r--r-- 1 root root        902 Nov  4 09:51 gitlab-health.conf
-rw-r--r-- 1 root root       4671 Nov  4 09:51 gitlab-http.conf
-rw-r--r-- 1 root root       3093 Nov  4 09:51 nginx.conf
-rw-r--r-- 1 root root        603 Nov  4 09:51 nginx-status.conf
root@gitlab:~# ll /etc/gitlab/gitlab.rb
-rw------- 1 root root 138163 Nov  4 09:48 /etc/gitlab/gitlab.rb
root@gitlab:~# ll /etc/gitlab/gitlab-secrets.json
-rw------- 1 root root 19349 Nov  4 09:49 /etc/gitlab/gitlab-secrets.json

④执行恢复

删除一些数据,测试能否恢复

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq    #恢复数据之前停止服务
gitlab-rake gitlab:backup:restore BACKUP=备份文件名    # 备份文件名为:Unix时间戳_ 年_月_日_gitlab版本号
yes

root@gitlab:~# gitlab-rake gitlab:backup:restore BACKUP=1667830888_2022_11_07_15.4.2
2022-11-07 22:32:14 +0800 -- Unpacking backup ...
2022-11-07 22:32:14 +0800 -- Unpacking backup ... done
2022-11-07 22:32:14 +0800 -- Restoring main_database ...
2022-11-07 22:32:14 +0800 -- Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations

Before restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? yes

在这里插入图片描述

确认恢复数据yes

在这里插入图片描述

⑤启动服务

root@gitlab:~# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 7787) 0s
root@gitlab:~#gitlab-ctl startunicorn

1.21 gitlab汉化(目前版本已经支持中文,直接在登录用户→preferences→找到语言设置修改即可)

gitlab中文设置,配置完成刷新即可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐