社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

前端必须会的gitlab的操作——安装和备份

qiufeihong2018 • 6 年前 • 434 次点击  
阅读 249

前端必须会的gitlab的操作——安装和备份

原文地址欢迎star

结果

  • 在新服务器上安装并搭建好gitlab;
  • 将原服务器上的gitlab备份到新服务器上;
  • 自动备份;
  • 逾期删除备份。

todo

  • 自动发送备份压缩包至新服务器;
  • 自动将压缩包备份

前提

  • 如果不是root用户请在命令前+sudo;
  • 新老服务器gitlab版本保持一致。
  • 我用的是gitlab-ee_10.7.2-ee.0_amd64.deb版本的gitlab

安装gitlab

  • gitlab-ce是社区版

  • gitlab-ee是企业版

官网安装gitlab

首先想用gitlab官网安装gitlab

请戳gitlab的官方网站

由于的我系统是ubuntu,所以我选择ubuntu 安装步骤就出现在下面了

安装和配置必须的依赖

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
复制代码

下一步,安装Postfix来发送通知邮件。如果你想要用另一个方式去发送邮件,请在gitlab安装好后,下一步就是配置一个额外的SMTP服务。

sudo apt-get install -y postfix
复制代码

在安装Postfix时一个配置屏幕会出现。选择Internet Site并且回车。mail name为你的服务器的DNS并且回车。如果额外的屏幕出现,继续接受默认配置并且回车。

添加gitlab安装包仓库并安装 添加gitlab包仓库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
复制代码

下一步,安装gitlab包。选择https://gitlab.example.com更改为要访问gitlab实例的url。安装将自动配置并启动gitlab到url。

为了https://gitlab将自动请求带有Let's Encrypt的证书,这需要入栈http访问和有效的主机名。

sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee
复制代码

此时你会发现慢的要死,速度是100k/s,毕竟两者隔了一堵墙。

清华镜像安装gitlab

Gitlab Community Edition 镜像使用帮助

既然官网太慢,那么我们选择清华镜像安装gitlab,我这边是速度达到30mb/s。

清华大学开源软件镜像站

里面有各种版本

备份需要和原服务器的gitlab版本一致,否则无法安装。

在搜索栏里搜索gitlab,就会跳出相关gitlab的版本。

我的gitlab-ee_10.7.2-ee.0_amd64.deb版本在/ubuntu/pool/bionic/main/g/gitlab-ee/

或者是直接访问https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu/pool/bionic/main/g/gitlab-ee/到gitlab-ee版本下,

直接访问https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/到gitlab-ce版本下。

先更新仓库

sudo apt-get update
复制代码

加入gitlab的GPG公钥

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
复制代码

写进再选择你的 Debian/Ubuntu 版本

文本框中内容写进/etc/apt/sources.list.d/gitlab-ce.list,

我是写进/etc/apt/sources.list.d/gitlab-ee.list,

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu xenial main

安装 gitlab-ee:

sudo apt-get update
sudo apt-get install gitlab-ee=10.7.2-ee.0
复制代码

更新apt仓库

下载gitlab-ee_10.7.2-ee.0

这样就安装了10.7.2-ee.0版本了。

断口被占用

端口80以及端口8080分别被Ubuntu服务器上的Apache、Tomcat和nginx等服务所占用。

我的做法是修改 /etc/gitlab/gitlab.rb 文件

vim /etc/gitlab/gitlab.rb
复制代码

配置并启动gitlab

sudo gitlab-ctl reconfigure
复制代码

有时候,像上面步骤修改了GitLab的ip地址一样,临时修改了GitLab的配置之后,得执行如下的命令,应用重新配好的配置并重启GitLab,然后查看GitLab的状态

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl status
复制代码

打开浏览器,默认是访问本机ip即可。如果改了端口,则访问ip+端口

gitlab创建备份

修改gitlab备份地址

打开原gitlab服务器终端,通过修改gitlab.rc配置文件来修改默认存放备份文件的目录

sudo vim /etc/gitlab/gitlab.rc
复制代码

默认如下:

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
复制代码

backup_path改为自定义的目录

gitlab_rails['backup_path'] = "/data/gitlab/backups"



    
复制代码

修改后重载配置文件

sudo gitlab-ctl reconfigure
复制代码

gitlab开始备份

通过命令来备份原服务器上gitlab的数据。

sudo gitlab-rake gitlab:backup:create
复制代码

备份的文件会放在data/gitlab/backups下,名称类似于1558509153_2019_05_22_10.7.2-ee_gitlab_backup.tar,这个压缩包包含了gitlab备份的时间和版本。

将备份文件scp到新服务器上

通过scp命令

不会请戳Linux scp命令

scp 1558509153_2019_05_22_10.7.2-ee_gitlab_backup.tar gitlab-backup@192.168.3.113:/var/opt/gitlabs/backups
复制代码

如果无法拷贝到该目录下,则先拷贝到tmp目录下。 由于backups不是一个可以编辑的目录,所以不能直接拷贝到该目录下。那就先将backups迁移到backup下,然后创建backups目录,存放备份文件。

注意,backups目录的只有root才能操作的,但是gitlab恢复操作使用者是git

贸然恢复,就会出现以下错误

正确操作是降低backups操作权限

sudo chown git backups/
sudo chmod 700 backups/
复制代码

修改备份文件权限

为了避免gitlab恢复时,由于权限,而产生不能解压的问题,我们就将备份文件权限改为777

chmod 777 1558509153_2019_05_22_10.7.2-ee_gitlab_backup.tar
复制代码

停止相关数据连接服务

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
复制代码

从备份文件恢复gitlab

sudo gitlab-rake gitlab:backup:restore BACKUP=1558509153_2019_05_22_10.7.2-ee
复制代码

安装开始

  • 是否丢掉之前的仓库

  • 是否丢掉之前的key文件

  • 安装成功

开启gitlab,并访问

sudo gitlab-ctl start
复制代码

打开浏览器,访问gitlab

gitlab自动备份

定时自动备份

不会crontab,请戳Linux crontab命令

  • 添加定时任务,每天凌晨6点执行gitlab备份
crontab -e
复制代码

加入

# edited by feihong 2019.5.22 添加定时任务,每天凌晨6点,执行gitlab备份
0 6 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
复制代码

  • 添加定时任务,每分钟执行gitlab备份
sudo vim /etc/crontab
复制代码

加入

* * * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
复制代码

编写完 /etc/crontab 文件之后,需要重新启动cron服务

#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart
复制代码

过了一天后,gitlab访问不了了,服务器炸了

看了下备份目录

猴塞雷……赶紧将他们删了

然后将定时备份的时间跳到每天6点

* 6 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
复制代码

最后需要重新启动cron服务

设置备份过期时间

就算是每天6点备份,一年下来也有356份,那也不得了了

那就可以设置备份过期时间,备份目录下只保存还没过期的压缩包,大大减轻了服务器的压力

通过编辑/etc/gitlab/gitlab.rb配置文件,找到gitlab_rails[‘backup_keep_time’]

我设置了7天内不过期

参考文献

gitlab官网

ubuntu16.04中gitlab安装

gitlab自动备份

【git学习】在CenterOS系统上恢复GitLab时出现错误:tar: 由于前次错误,将以上次的错误状态退出 unpacking backup failed

如何查看 GitLab 版本号

Linux上Gitlab卸载

git学习------> Gitlab如何进行备份恢复与迁移?

【git学习】在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33478
 
434 次点击