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頁面訪問測試
如圖:
可以訪問到表示沒有問題,但是都是英文界面,對於英文不好的我表示很是頭疼,還好可以通過一些方法使其漢化,方法如下!
三、漢化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頁面再次訪問
如圖:
登錄之後發現,只有局部漢化了,還需進行以下操作:
再次刷新頁面即可!
四、gitlab用戶組、用戶、項目
1)創建用戶組
如圖:
2)創建項目並關聯用戶組
如圖:
3)創建用戶並進行郵箱驗證
如圖:
收到的郵件如下:
更改密碼完成後收到的郵件如下:
以新創建的用戶張三登錄,如下:
4)將用戶加入剛纔的devops組中
如圖:
收到的郵件,如圖:
再次以張三的身份進行訪問,如圖:
從上可以看出:
1)對用戶進行何種操作,都會發郵件進行通知;
2)項目是基於用戶組創建的,所以用戶組中的成員對項目也有相應的權限;
3)gitlab對用戶權限方面的功能非常強大;
實驗環境,接下來還是選擇以管理員的身份進行接下來的操作!
五、關閉用戶註冊功能
看一下不關閉註冊功能,會有什麼影響?如圖:
可以看到只要可以訪問gitlab的用戶都可以自行進行註冊、登錄,因爲gitlab一般都是公司內部的人進行訪問的,所以非常危險!
需要以管理員身份進行以下操作,關閉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頁面,操作如下:
2)創建一個基本庫
如圖:
回到服務器上輸入測試的命令,如下:
[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頁面即可,如圖:
七、遠端庫的基本操作
當你從遠端倉庫克隆時,實際上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 #將本地的分支推送到遠程倉庫
刷新頁面之後,如圖:
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界面進行刷新,即可看到新提交的分支:
#上述操作是在/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目錄下提交的所有內容,如圖:
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頁面,如圖:
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頁面,如下:
八、重置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的日誌信息
————————本文到此結束,感謝閱讀——————————————