Centos 7部署並漢化Gitlab及基礎操作

Gitlab 是一個利用 Ruby on Rails 開發的開源應用程序,實現一個Git 項目倉庫,可通過Web 界面進行訪問公開的或者私人的項目 Gitlab 擁有與 Github 類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,他非常易於瀏覽提交過的版本並提供一個文件歷史庫。他還提供一個代碼片段收集功能可以輕鬆實現代碼複用,便於日後有需要的時候進行查找。

關於gitlab的詳細信息建議參考gitlab官網進行詳細的瞭解!

博文大綱:
一、準備環境
二、安裝Gitlab
三、漢化Gitlab
四、gitlab用戶組、用戶、項目
五、關閉用戶註冊功能
六、gitlab基本操作
七、遠端庫的基本操作
八、重置gitlab管理員密碼
九、gitlab的備份與恢復

一、準備環境

操作系統 內存 CPU
centos 7 4G以上 雙核

二、安裝Gitlab

1)安裝Gitlab所需依賴

[root@gitlab ~]# yum -y install  epel-release curl openssh-server openssh-clients postfix cronie policycoreutils-python wget vim

2)獲取Gitlab的RPM軟件包

方法一:通過清華大學的開源鏡像站獲取軟件包(推薦)

[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm

方法二:通過Gitlab官網來獲取軟件包(網絡穩定時使用)

[root@gitlab ~]# wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm/download.rpm

3)安裝Gitlab

[root@gitlab ~]# rpm -ivh gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm 
#安裝時間較長,耐心等待,安裝過程中會出現gitlab的logo
[root@gitlab ~]# yum -y localinstall gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
#效果較好,自動解決依賴關係

4) 修改gitlab的url並執行reconfigure

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb         #修改gitlab的配置文件
………………………………                 #省略部分內容
external_url 'http://192.168.1.8'
#將此處改爲本機的IP地址,便於訪問

#######以下爲郵箱配置,實驗環境不進行配置也可#############
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'         #發件人郵箱
gitlab_rails['gitlab_email_display_name'] = 'GitLab'              #發件人顯示名稱

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"         #發件人郵箱
gitlab_rails['smtp_password'] = ""                   #發件人郵箱授權碼
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

###############如需關閉Prometheus,配置如下###################

prometheus['enable'] = false

[root@gitlab ~]# gitlab-ctl reconfigure        #第一次時間較長
#重新配置gitlab,就算不修改配置文件,也需要在安裝後重新配置gitlab
#接下來對這個文件進行操作,也需執行該條命令
[root@gitlab ~]# gitlab-ctl  start | status | restart | stop

5)web頁面訪問測試

如圖:
Centos 7部署並漢化Gitlab及基礎操作
可以訪問到表示沒有問題,但是都是英文界面,對於英文不好的我表示很是頭疼,還好可以通過一些方法使其漢化,方法如下!

三、漢化Gitlab

1)獲取gitlab漢化補丁包(如果不需要漢化,則跳過此步驟即可)

[root@gitlab ~]# head -1 /opt/gitlab/version-manifest.txt           #查看gitlab的版本
gitlab-ce 12.3.5
[root@gitlab ~]# git clone https://gitlab.com/xhang/gitlab.git -b v12.3.5-zh
#獲取漢化補丁包(注意需與gitlab的版本保持一致)
[root@gitlab ~]# cd gitlab/               #進入剛纔clone下來的gitlab目錄
[root@gitlab gitlab]# git diff v12.3.5 v12.3.5-zh > /root/v12.3.5-zh.diff
#用diff將英文原版與中文版的對比生成.diff文件

2)將中文補丁導入gitlab

[root@gitlab gitlab]# gitlab-ctl stop              #停止gitlab
[root@gitlab gitlab]# yum -y install patch
[root@gitlab gitlab]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 <  ../v12.3.5-zh.diff
 #將剛纔的diff文件做爲補丁導入到gitlab中
#該命令執行過程中,一路回車跳過即可
[root@gitlab gitlab]# gitlab-ctl start                 #啓動gitlab
[root@gitlab gitlab]# gitlab-ctl reconfigure      #重新配置gitlab

3)web頁面再次訪問

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
登錄之後發現,只有局部漢化了,還需進行以下操作:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
再次刷新頁面即可!

四、gitlab用戶組、用戶、項目

1)創建用戶組

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作

2)創建項目並關聯用戶組

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作

3)創建用戶並進行郵箱驗證

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
收到的郵件如下:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
更改密碼完成後收到的郵件如下:
Centos 7部署並漢化Gitlab及基礎操作
以新創建的用戶張三登錄,如下:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作

4)將用戶加入剛纔的devops組中

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
收到的郵件,如圖:
Centos 7部署並漢化Gitlab及基礎操作
再次以張三的身份進行訪問,如圖:
Centos 7部署並漢化Gitlab及基礎操作

從上可以看出:
1)對用戶進行何種操作,都會發郵件進行通知;
2)項目是基於用戶組創建的,所以用戶組中的成員對項目也有相應的權限;
3)gitlab對用戶權限方面的功能非常強大;

實驗環境,接下來還是選擇以管理員的身份進行接下來的操作!

五、關閉用戶註冊功能

看一下不關閉註冊功能,會有什麼影響?如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
可以看到只要可以訪問gitlab的用戶都可以自行進行註冊、登錄,因爲gitlab一般都是公司內部的人進行訪問的,所以非常危險!

需要以管理員身份進行以下操作,關閉gitlab的註冊功能!如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
註冊功能已經消失!

六、gitlab基本操作

1)配置SSH方式免密登錄

[root@gitlab ~]# ssh-keygen -t rsa -C "[email protected]"
#生成祕鑰對,一路回車即可,“-C”後是自己的郵箱
[root@gitlab ~]# cat ~/.ssh/id_rsa.pub         #查看生成的公鑰並複製 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvNm+nXc59ugb0SGr9iMHDSFjvmdSJk0ORuX3hbjt822Y2ofXysUrIuBSQ1Jn0Rss/LPU54K32i4bIDsa/jD9gIpN/GqU+YP1MQ9bEw3YVUONAs+nYeWJWahQ1rMTeM0HC9aKvNTrNsOqrXIboJymBrs6Odt+1NnZsYHMwA/KlpYCFsi0HQgBzsLbrD5v++cIDTvM/V4rMq6fqFsfWoYYMHWc8JeNMl/aWJV1RhJpt7wm17FEv3XiH+wyoef5ZYI60IkH5qMJkjWhKcRXCWG5SH3nphUb1fmktB4DH92TW/EGw///VQEnE7tkpNjyJpOTXDuHnEk2tw43cctDN2sJH [email protected]

回到web頁面,操作如下:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作

2)創建一個基本庫

如圖:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作
回到服務器上輸入測試的命令,如下:

[root@gitlab ~]# git config --global user.name "Administrator"
[root@gitlab ~]# git config --global user.email "[email protected]"
[root@gitlab ~]# git clone [email protected]:root/test01.git         
#克隆到本地,根據提示輸入“yes”即可!
[root@gitlab ~]# cd test01/
[root@gitlab test01]# touch README.md
[root@gitlab test01]# git add README.md
[root@gitlab test01]# git commit -m "add README"
[root@gitlab test01]# git push -u origin master

刷新web頁面即可,如圖:
Centos 7部署並漢化Gitlab及基礎操作

七、遠端庫的基本操作

當你從遠端倉庫克隆時,實際上git自動把本地的master分支和遠端的master分支對應起來了,並且遠程倉庫的默認名稱是origin。

1)查看關聯的遠程庫的信息

[root@gitlab test01]# git remote        #簡潔信息
origin
[root@gitlab test01]# git remote -v         #詳細信息
origin  [email protected]:root/test01.git (fetch)
origin  [email protected]:root/test01.git (push)

2)推送分支到遠程倉庫

[root@gitlab test01]# git checkout -b dev             #創建並切換到dev分支
[root@gitlab test01]# git push origin dev              #將本地的分支推送到遠程倉庫

刷新頁面之後,如圖:
Centos 7部署並漢化Gitlab及基礎操作

3)解決多人協作產生的問題

當我們整個小組對同一個分支進行開發時,如果在你提交之前,你的同事已經修改了分支的內容並推送到遠端倉庫,而碰巧你也對同樣的文件做了修改,並試圖推送,那麼會推送失敗,因爲你的同事的最新提交的數據和你試圖提交的數據有衝突(你本地的內容比遠端倉庫的舊了),解決的辦法會在提示你推送失敗的返回信息中給出,這裏我們模擬一下這一過程。

#進入另一個目錄,克隆遠端倉庫,模擬多人操作
[root@gitlab test01]# cd /tmp           
[root@gitlab tmp]# git clone [email protected]:root/test01.git
[root@gitlab tmp]# cd test01/
[root@gitlab test01]# git checkout -b etc            #重新創建一個分支並切換
[root@gitlab test01]# echo -e "touch /tmp/test01" > tmp.txt
[root@gitlab test01]# git add tmp.txt
[root@gitlab test01]# git commit -m "commmit from /tmp"
[root@gitlab test01]# git push origin etc                #將新修改的內容推送到遠端

回到web界面進行刷新,即可看到新提交的分支:
Centos 7部署並漢化Gitlab及基礎操作
Centos 7部署並漢化Gitlab及基礎操作

#上述操作是在/tmp目錄下執行的,接下來的操作在/root目錄下執行:
[root@gitlab test01]# cd /root/test01/
[root@gitlab test01]# git checkout -b etc
[root@gitlab test01]# echo "touch /root/test01.txt" > root.txt
[root@gitlab test01]# git add root.txt
[root@gitlab test01]# git commit -m "commit from /root"
[root@gitlab test01]# git push origin  etc            
#再次推送,將會出現以下錯誤
To [email protected]:root/test01.git
 ! [rejected]        etc -> etc (fetch first)
error: 無法推送一些引用到 '[email protected]:root/test01.git'
提示:更新被拒絕,因爲遠程版本庫包含您本地尚不存在的提交。這通常是因爲另外
提示:一個版本庫已推送了相同的引用。再次推送前,您可能需要先合併遠程變更
提示:(如 'git pull')。
提示:詳見 'git push --help' 中的 'Note about fast-forwards' 小節。
[root@gitlab test01]# git pull origin etc              #將遠端的etc分支pull到本地
[root@gitlab test01]# ls               #可以看出在/tmp目錄下提交的文件就存在了
README.md  root.txt  tmp.txt
[root@gitlab test01]# git push origin etc                  #然後再次將本地的dev分支推送到gitlab,即可成功

再次刷新web頁面,etc分支下就會有了我們在/tmp目錄和/root目錄下提交的所有內容,如圖:
Centos 7部署並漢化Gitlab及基礎操作

4)合併遠程分支

[root@gitlab test01]# git checkout master           #切換至master分支
[root@gitlab test01]# git merge etc                    #合併etc分支
[root@gitlab test01]# ls                   #查看合併後的分支下內容
README.md  root.txt  tmp.txt
[root@gitlab test01]# git add .
[root@gitlab test01]# git commit -m "提交"
[root@gitlab test01]# git push origin master             #推送到遠端版本庫

再次刷新web頁面,如圖:
Centos 7部署並漢化Gitlab及基礎操作

5)刪除遠程的分支

[root@gitlab test01]# git branch -d etc                 #刪除本地的dev分支
[root@gitlab test01]# git branch -r -d origin/etc     #刪除指定的遠程分支
[root@gitlab test01]# git push origin :etc               #將刪除的分支提交到遠程版本庫中
[root@gitlab test01]# git branch -d dev
[root@gitlab test01]# git branch -r -d origin/dev
[root@gitlab test01]# git push origin :dev                      #同上

再次刷新web頁面,如下:
Centos 7部署並漢化Gitlab及基礎操作

八、重置gitlab管理員密碼

[root@gitlab ~]# gitlab-rails console production             #必須是root用戶登錄服務器執行該命令
irb(main):001:0> user = User.where(id: 1).first             #id爲1的是超級管理員
irb(main):002:0> user.password = 'yourpassword'       #密碼必須至少8個字符
irb(main):003:0> user.save!                  #保存用戶修改信息,如沒有問題返回true
irb(main):004:0> exit                             #退出

至此,再次登錄,就需要使用新密碼yourpassword進行登錄了。

九、gitlab的備份與恢復

1)更改配置文件,實現備份

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb             #更愛gitlab配置文件
gitlab_rails['backup_path'] = "/data/gitlab/backups"          #更改備份路徑
gitlab_rails['backup_keep_time'] = 604800              #備份保留的時間
[root@gitlab ~]# mkdir -p /data/gitlab/backups
[root@gitlab ~]# gitlab-ctl reconfigure

2)手動備份、自動備份

[root@gitlab ~]# gitlab-rake gitlab:backup:create       #手動進行備份
[root@gitlab ~]# crontab -e              #創建計劃任務的方式實現自動備份
00 20 * * *  /usr/bin/gitlab-rake gitlab:backup:create

3)恢復數據

[root@gitlab ~]# gitlab-ctl stop unicorn
[root@gitlab ~]# gitlab-ctl stop sidekiq          #停止數據寫入服務
[root@gitlab ~]# ls /data/gitlab/backups/
1581862634_2020_02_16_12.3.5_gitlab_backup.tar
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1581862634_2020_02_16_12.3.5
[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# gitlab-ctl tail
#查看gitlab的日誌信息

————————本文到此結束,感謝閱讀——————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章