一个学习编程技术的公众号。每天推送高质量的优秀博文、开源项目、实用工具、面试技巧、编程学习资源等等。目标是做到个人技术与公众号一起成长。欢迎大家关注,一起进步,走向全栈大佬的修炼之路
需求
- 在新服务器上安装并搭建好gitlab
- 手动+自动将旧服务器上的gitlab备份
- 手动+自动将gitlab备份包scp到新服务器上
- 手动+自动恢复新服务器上的gitlab备份包
- 在新旧服务器上自动删除过期备份包
前提
- 版本
- gitlab-ce是社区版
- gitlab-ee是企业版
- 方案
- 定时器执行shell脚本
- 工具
- 操作
- 如果不是root用户请在所有命令前+sudo
- 新老服务器gitlab版本保持一致
- 旧服务器用的是
gitlab-ee_10.7.2-ee.0_amd64.deb
版本的gitlab,示例也选择这个企业版
- backups目录的只有root才能操作的,但是gitlab恢复操作使用者是git
所以将新旧服务器上/var/opt/gitlab/backups
文件夹设置为可读可写可执行,方便操作
sudo chmod 777 backups/
现在开始,我会一步一步操作,带领大家一条龙从安装到自动化备份,最终实现再也不要被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
Gitlab Community Edition 镜像使用帮助
里面有各种版本
备份需要和原服务器的gitlab版本一致,否则无法安装
在搜索栏里搜索gitlab,就会跳出相关gitlab的版本
gitlab-ee_10.7.2-ee.0_amd64.deb
版本在/ubuntu/pool/bionic/main/g/gitlab-ee/
下
或者是直接访问到gitlab-ee版本下,
直接访问到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
- 更新apt仓库,安装 gitlab-ee
sudo apt-get update
sudo apt-get install gitlab-ee=10.7.2-ee.0
下载gitlab-ee_10.7.2-ee.0
这样就安装了10.7.2-ee.0版本了。
配置并启动gitlab
sudo gitlab-ctl reconfigure
每当修改了GitLab的配置之后,都要执行如下的命令,重启配好的配置并重启GitLab,然后查看GitLab的状态
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl status
打开浏览器,默认是访问http://localhost
即可。如果改了ip和端口,则访问http://ip:端口
既可
这就是新搭建的gitlab
安装gitlab出现的问题
断口被占用
端口80以及端口8080分别被Ubuntu服务器上的Apache、Tomcat和nginx等服务所占用。
我的做法是修改 /etc/gitlab/gitlab.rb 文件
vim /etc/gitlab/gitlab.rb
修改其中的external_url
手动将旧服务器上的gitlab备份
修改gitlab备份地址
备份地址默认是在var/opt/gitlab/backups
- 打开原gitlab服务器终端,通过修改
gitlab.rb
配置文件来修改默认存放备份文件的目录
sudo vim /etc/gitlab/gitlab.rb
- 默认如下
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
- 将
backup_path
改为自定义的目录
gitlab_rails['backup_path'] = "/data/gitlab/backups"
- 修改后重启配置文件
sudo gitlab-ctl reconfigure
我的示例里是没有改,备份的时间倒是改成了7天
/etc/gitlab/gitlab.rb
# Change the external_url to the address your users will type in their browser
external_url 'http://192.168.3.2'
unicorn['port'] = 10086
gitlab_rails['manage_backup_path']=true
gitlab_rails['backup_path']="var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions']=0644
gitlab_rails[