手把手教你部署与使用gitlab
文章目录
- 一、下载并部署gitlab
- 1.1 环境准备
- 1.2 gitlab安装(尽量下载最新的)
- 1.3 gitlab配置
- 1.4 初始化服务
- 1.5 gitlab常用命令
- 1.6 验证gitlab启动完成
- 1.7 验证端口及状态
- 1.8 登录gitlab web界面
- 1.9 关闭账户注册
- 1.10 创建git账户
- 1.11 重新设置密码
- 1.12 创建组
- 1.13 使用管理员创建项目
- 1.14 将用户添加到组
- 1.15 创建一个测试页面
- 1.16 git客户端测试clone项目(哪个用户需要克隆,就哪个用户登录)
- 1.17 git web端验证数据
- 1.18 gitlab使用
- 1.19 代码合并
- 1.20 gitlab数据备份恢复(可以在凌晨设置个调度,进行备份)
- 1.21 gitlab汉化(目前版本已经支持中文,直接在登录用户→preferences→找到语言设置修改即可)
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安装(尽量下载最新的)
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→找到语言设置修改即可)
-
https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
-
https://gitlab.com/xhang/gitlab/-/archive/v11.11.5-zh/gitlab-v11.11.5-zh.tar
-
https://gitlab.com/xhang/gitlab/-/archive/v11.9.8-zh/gitlab-v11.9.8-zh.tar
gitlab中文设置,配置完成刷新即可



更多推荐

所有评论(0)