gitlab的搭建(搭建、使用、备份、迁移恢复)

本文涉及的产品
云防火墙,500元 1000GB
简介:

本文章重点介绍如下内容:

1、git、gitlab、github的区别

2、gitlab的搭建

3、gitlab的备份

4、gitlab的迁移及数据恢复

所有的操作建立在centos7.3的环境中搭建,gitlab采用的版本为10.2.2


1、git、gitlab、github的区别

和SVN类似,Git是一个版本控制系统(Version Control System,VCS),不同的是SVN为集中式版本控制系统,为单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新,git为分布式版本控制系统,关于SVN和git的对比,可以通过下图进行说明(但最大的区别在于svn为集中式,git为分布式)

git.png

    svn好比一个巨大的图书馆,当你要借一本书的时候,需要先从图书馆借出,回家之后自己改,改完之后还是返回给图书馆,而git的方式完全不同,所有的客户端都一个是完整的版本库,没有中央控制的概念,可以这样类比,git提供了一个虚拟的全量图书馆,所有人都有一个虚拟的图书馆,当你想看其中一本书的时候,从自己的虚拟图书馆里面检索出来即可,如果你修改了其中的内容,可以直接提交到自己的虚拟图书馆里面,也不会影响其他人的图书馆,当有其他人想要看你修改的一本书的时候,你只要将对应的一本书的URL发给对方即可。

关于Git的诞生其实很有趣味性,在早期林纳斯·托瓦兹(Linux之父)面临Linux内核版本控制的问题,在最初,接受采用Bitkeeper进行Linux内核的代码管控,但有一个要求,不允许Linux社区开发人员对Bitkeeper进行破解,但对于追求开源软件的×××们,怎么可能这么听话,就有一个×××开发人员,对Bitkeeper进行了破解,基于之前的要求,Bitkeeper收回的林纳斯使用权,在协商无果的情况下,林纳斯闭关修炼7天,git就这样面试了,大神就是大神


Git是版本控制系统,Github是在线的基于Git的代码托管服务。GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,但是付费账户也可以创建私有的代码仓库,如果你在GitHub上面开源自己的项目,那么在面试的时候,这将是一个很大的优势和亮点,别人可以通过你在GitHub的开源项目,可以很好的了解到你的技术水平,同时GitHub上面项目的star越高,说明项目的影响力越大,这个很重要


由于GitHub对于私有的代码仓库是收费的,同时,并不是所有的公司会愿意将自己的项目托管在GitHub上面,因此gitlab就是为了解决这类问题的,gitlab搭建在个人的服务器上面,经过认证的人都可以在上面创建免费的私人repo,并进行多人协作。GitLab让开发团队对他们的代码仓库拥有更多的控制。



2、gitlab的搭建

本文搭建的gitlab是基于yum的方式进行安装的,具体的安装步骤如下:

(1)、配置yum源

vim /etc/yum.repos.d/gitlab-ce.repo

(2)、复制如下内容并保存,注意baseurl的配置是centos7的地址

[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.ke

如果是centos6的,baseurl修改为

[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/
Repo_gpgcheck=0
Enabled=1
Gpgkey=https://packages.gitlab.com/gpg.ke

(3)、更新本地yum缓存

sudo yum makecache

(4)、yum安装gitlab,此处安装版本是10.2.2

sudo yum intall gitlab-ce        #自动安装最新版
sudo yum install gitlab-ce-10.2.2    #安装指定版本,此处为10.2.2

注意安装的过程中可能会报如下错误

1.png


sudo yum install gitlab-ce-10.2.2 --nogpgcheck      ####跳过校验

(5)、更改配置

    vim /etc/gitlab/gitlab.rb
    找到 external_url 'http://000.00.00.00:8081'
    修改成你的地址,此处为http://192.168.1.157:8081

(6)、对GitLab进行编译

gitlab-ctl reconfigure

(7)、清除缓存

gitlab-rake cache:clear RAILS_ENV=production

(8)、启动gitlab服务,以及关闭防火墙等操作

sudo gitlab-ctl start    # 启动所有 gitlab 组件;并加入开机启动项里面:/etc/rc.local
sudo gitlab-ctl stop     # 停止所有 gitlab 组件;
sudo gitlab-ctl restart   # 重启所有 gitlab 组件;
sudo gitlab-ctl status    # 查看服务状态;
sudo gitlab-ctl tail       # 查看日志;

关闭防火墙:

service iptables stop      ###centos6关闭防火墙
systemctl stop firewalld.service  ###centos7关闭防火墙

(9)、访问gitlab:192.168.1.157:8081,gitlab默认的root账号密码为qazwsxed,首次进入需要修改root密码




3、gitlab的备份

使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份


gitlab-rake gitlab:backup:create

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1481598919_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1481598919是备份创建的日期

此处以事务的形式进行gitlab的定时备份,创建定时脚本/iyunwen/bin/git_backup/git_backup.sh ,内容如下

#!/bin/bash
cd /var/opt/gitlab/backups/
gitlab-rake gitlab:backup:create  
find  /var/opt/gitlab/backups/  -type f -ctime +5 -exec rm -rf {} \;
加入事务:echo "30 03 * * * root run-parts /iyunwen/bin/git_backup/" >>  /etc/crontab 
每天3:30分定时备份gitlab版本数据

备份后的数据在/var/opt/gitlab/backups中存在,如下图:

图片.png




4、gitlab的迁移及数据恢复

迁移如同备份与恢复的步骤一样, 只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话)
但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的10.2.2版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为10.2.2在进行备份

查看gitlab的版本信息如下:

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

(1)、停止gitlab服务

 gitlab-ctl stop unicorn
 gitlab-ctl stop sidekiq

(2)上传备份文件至/var/opt/gitlab/backups,此处的备份文件名称为:1534793618_gitlab_backup.tar

注意,如果迁移前后的gitlab版本不一致,会报如下错误,所以版本必须要一致

diff.png

(3)、数据恢复

cd /var/opt/gitlab/backups
chmod 777 1534793618_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=1534793618

开始恢复的进度如下:

QQ截图20180822155217.png

恢复完成之后,会提示如下:



可以登录gitlab地址进行验证,所有的数据都做了恢复

目录
相关文章
|
6月前
gitlab迁移后报错OpenL::cipher::CipherError
gitlab迁移后报错OpenL::cipher::CipherError
202 0
|
存储 Shell 网络安全
docker 安装gitlab,配置邮件,备份全流程
docker 安装gitlab,配置邮件,备份全流程
625 0
docker 安装gitlab,配置邮件,备份全流程
|
5月前
|
运维 Java Devops
阿里云云效操作报错合集之在进行GitLab代码分支迁移时遇到报错,一般是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
jenkins 持续交付 开发工具
【gitlab】旧的gitlab项目迁移新的gitlab
【gitlab】旧的gitlab项目迁移新的gitlab
1041 0
|
6月前
|
存储 网络安全 数据安全/隐私保护
docker 安装gitlab,配置邮件,备份全流程
docker 安装gitlab,配置邮件,备份全流程
243 0
|
5月前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
Docker 容器
gitlab备份还原
gitlab备份还原
55 0
|
6月前
|
网络安全 开发工具 数据安全/隐私保护
Git - 记一次完整的新旧Gitlab迁移
Git - 记一次完整的新旧Gitlab迁移
427 0
|
存储 Kubernetes Linux
GitLab 最新安装&备份&升级教程(全)
本文介绍了gitlab从安装、升级、备份、恢复一系列操作方法,便于日常更新维护。
665 0
GitLab 最新安装&备份&升级教程(全)
|
网络安全 开发工具 数据安全/隐私保护
gitlab在服务器上的安装与配置-自己搭建一个gitlab服务器
gitlab在服务器上的安装与配置-自己搭建一个gitlab服务器
1188 0