天天看點

gitlab的搭建(搭建、使用、備份、遷移恢複)

本文章重點介紹如下内容:

1、git、gitlab、github的差別

2、gitlab的搭建

3、gitlab的備份

4、gitlab的遷移及資料恢複

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

和SVN類似,Git是一個版本控制系統(Version Control System,VCS),不同的是SVN為集中式版本控制系統,為單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過用戶端連到這台伺服器,取出最新的檔案或者送出更新,git為分布式版本控制系統,關于SVN和git的對比,可以通過下圖進行說明(但最大的差別在于svn為集中式,git為分布式)

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讓開發團隊對他們的代碼倉庫擁有更多的控制。

本文搭建的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
      

注意安裝的過程中可能會報如下錯誤

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密碼

使用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中存在,如下圖:

遷移如同備份與恢複的步驟一樣, 隻需要将老伺服器/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版本不一緻,會報如下錯誤,是以版本必須要一緻

(3)、資料恢複

cd /var/opt/gitlab/backups

chmod 777 1534793618_gitlab_backup.tar

gitlab-rake gitlab:backup:restore BACKUP=1534793618
      

開始恢複的進度如下:

恢複完成之後,會提示如下:

可以登入gitlab位址進行驗證,所有的資料都做了恢複

繼續閱讀