三 Gitlab备份
1.gitlab安装
1.1 添加镜像地址
添加镜像地址的目的是为了提高国内用户软件下载的速度,编辑(新建)文件gitlab-ce.repo,指令:
vi /etc/yum.repos.d/gitlab-ce.repo
复制
输入:
[gitlab-ce]
name=gitlab-ce
# 清华大学的镜像源
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
1.2 安装依赖
依次输入以下指令
# 安装和配置openssh
sudo yum install curl policycoreutils-python openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
# 安装和配置邮件服务
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
1.3 安装gitlab指定版本14.0.0
curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm
安装:
rpm -i gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm
警告:gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
1.4 配置gitlab
sudo gitlab-ctl reconfigure
1.5 更改GitLab端口,
编辑文件gitlab.rb:
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.20.247:8091'
nginx['listen_port'] = 8091
nginx['listen_https'] = false
更改nigx端口,编辑文件gitlab-http.conf:
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
listen *:8091;
server_name 47.110.230.147;
...
if ($http_host = "") {
set $http_host_with_default "47.110.230.147:8091";
}
}
保存修改,执行以下指令:
gitlab-ctl reconfigure
1.6 启动并访问
启动GitLab:
gitlab-ctl restart
#停止gitlab
gitlab-ctl stop
对应端口放行
sudo firewall-cmd --permanent --zone=public --add-port=8091/tcp
sudo firewall-cmd --reload
查看默认的账号密码
vi /etc/gitlab/initial_root_password
2.gitlab备份还原
- 特别注意:
· 备份目录和gitlab.rb中定义的备份目录必须一致
· GitLab的版本和备份文件中的版本必须一致,否则还原时会报错。
执行下备份命令
gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1676883915_2023_02_20_14.0.0
注意:后面文件名称不用加_gitlab_backup.tar
中途输入两次yes
备份完后,可以看出已经还原成功
3.备份策略(每天23:30都进行备份作业)
-
修改备份的路径和备份的策略
输入配置修改对应的路径
vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true #备份的路径 gitlab_rails['backup_path'] = "/home/gitlab/backups" #生成的备份文件权限 gitlab_rails['backup_archive_permissions'] = 0644 #保留文件7天 gitlab_rails['backup_keep_time'] = 604800
保存并退出
-
更改完成后重载配置文件
gitlab-ctl reconfigure
执行备份命令
gitlab-backup create
可以看到我们备份已经成功了
设置脚本
touch gitlab.sh
chmod 777 gitlab.sh
vi gitlab.sh
#输出一下内容
#!/bin/bash
echo '开始执行gitlab备份'
gitlab-backup create
echo 'gitlab备份结束'
DATE=`date +%Y%m%d` #定义时间的格式,注意需要反引号。
REMOTEDIR=/home/backups/gitlab #远程本地服务器地址路径
localData=/var/opt/gitlab/backups #本机数据地址路径
echo "开始进行gitlab数据迁移到本地服务器"
expect << EOF
set timeout -1
spawn scp -P 85-r $localData root@112.94.31.288:$REMOTEDIR/$DATE
expect eof
exit
EOF
echo "数据gitlab迁移到本地服务器结束"
crontab -e
输入备份的时间(每天23:30都进行备份作业)
30 23 * * * /home/backups/gitlab/gitlab.sh > /tmp/gitlab.log 2>&1
crontab -l
本地服务器也要设置时间脚本
touch date.sh
脚本内容
#!/bin/bash
echo '开始新建目录'
DATE=`date +%Y%m%d` #定义时间的格式,注意需要反引号。
DIR=/home/backups/gitlab #这里定义创建文件夹的地址。
mkdir -p $DIR/$DATE #创建文件夹的语句,把上面两个变量引用进来。
echo '新建目录完成'
打开定时任务
crontab -e
输入备份时间
29 23 * * * /home/backups/gitlab/date.sh > /tmp/gitlab.log 2>&1
crontab -l