本文章重點介紹如下内容:
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位址進行驗證,所有的資料都做了恢複