一、Gitlab簡介
Gitlab 是一個基於Git實現的WEB代碼倉庫托管軟件,你可以用Gitlab自己搭建一個類似於Github一樣的代碼倉庫,一般使用gitlab搭建私有代碼倉庫主要是用在公司的內部代碼管理。
Gitlab 功能是能夠對代碼的提交審核和問題跟蹤,這個對於軟件工程(代碼)質量的管理是至關重要的。
Gitlab分為社區版(CE)和企業版(EE)。大多數的公司還是會選擇社區版。部署Gitlab是對服務器有配置要求的建議是CPU兩核,內存4G以上
二、Gitlab的工作原理
gitlab的原理其實就是git的工作原理,GitHub也是基於git實現的
工作圖示:

三、Gitlab的服務構成
1.Nginx:靜態Web服務器 2.gitlab-shell:用於處理Git命令和修改authorized keys列表 3.gitlab-workhorse:輕量級的反向代理服務器(這個是個敏捷的反向代理,它會處理一些大的HTTP請求,比如文件的上傳下載,其他的請求會反向代理給Gitlab Rails應用) 4.logrotate:日志文件管理工具 5.postgresql:數據庫 6.redis:緩存數據庫 7.sidekiq:用於在后台執行隊列的任務 8.unicorn:Gitlab Rails應用是托管在這個服務器上面的
一.項目實驗拓撲圖
二.項目實驗思路及重點內容(步驟及重難知識點)
| 主機名 | OS | IP地址 | 軟件 | 服務器配置 | 說明概述 |
| gitlab-01 | Centos7 | 10.10.10.11 | gitlab | 4c,4G,100G | 部署gitlab服務 |
GitLab 主要目錄
/var/opt/gitlab:數據目錄 /opt/gitlab: 安裝目錄 /etc/gitlab: 配置文件目錄 /etc/gitlab/gitlab.rb gitlab配置文件 /var/log/gitlab:此目錄下存放了 gitlab 各個組件產生的日志 /var/opt/gitlab/backups/:備份文件生成的目錄
1. gitlab下載與部署
官網:https://about.gitlab.com/ 清華大學鏡像站:https://mirrors.tuna.tsinghua.edu.cn/
- 訪問清華大學鏡像站,找到 gitlab-ce

- 選擇yum

- 選擇centos對應的版本

- 選擇需要的版本

2. 安裝對應的依賴
yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python
3. 啟動postfix,並設置開機自啟
[root@gitlab ~]# systemctl start postfix [root@gitlab ~]# systemctl enable postfix
報錯提示:

解決方法:
vi /etc/postfix/main.cf 發現配置為: inet_interfaces = localhost inet_protocols = all 改成: inet_interfaces = all inet_protocols = all 重新啟動 systemctl start postfix
4. 關閉防火牆或者設置對應的防火牆策略
iptables -F setenforce 0 systemctl stop firewalld firewall-cmd --add-service=http --permanent firewall-cmd --reload
5. 安裝並修改配置文件/etc/gitlab/gitlab.rb,生產環境下可以跟據需求修改
[root@gitlab ~]# rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm [root@gitlab ~]# vim /etc/gitlab/gitlab.rb 13 external_url 'http://192.168.200.111'
6. 重新加載配置文件
[root@gitlab ~]# gitlab-ctl reconfigure [root@gitlab ~]# gitlab-ctl restart [root@gitlab ~]# netstat -lnpt | grep :80
7. 管理命令
啟動:gitlib-ctl start 關閉:gitlab-ctl stop 重啟:gitlab-ctl restart 重載配置:gitlab-ctl reconfigure 查看狀態:gitlab-ctl status
8. 查看版本
[root@gitlab ~]# head -1 /opt/gitlab/version-manifest.txt
四、 web頁面管理功能
瀏覽器訪問:http://ip地址

輸入用戶名密碼

案例一:調整gitlab為中文

點擊preferences


案例二:創建項目

這里最好不要寫中文





在gitlab的web界面創建文件



項目的查看

案例三:將項目授權給某個用戶


用戶這時候沒有密碼


設置密碼

這樣我們使用普通用戶就登錄進來了



這樣xiaoli這個用戶就有項目的權限了

案例四:客戶端下載和提交代碼

下載:
[root@k8s-node1 ~]# git clone http://10.10.10.11/share/dmw.git #克隆下代碼 正克隆到 'dmw'... Username for 'http://10.10.10.11': xiaoli # 輸入賬號 Password for 'http://xiaoli@10.10.10.11': # 輸入密碼 remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. [root@k8s-node1 ~]# ls anaconda-ks.cfg dmw initial-setup-ks.cfg # 這個dmw就是克隆下來的代碼目錄
提交:


打開gitlab驗證:

案例五:設置發郵件功能
1. 修改或者添加配置文件
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb 517 gitlab_rails['smtp_enable'] = true 518 gitlab_rails['smtp_address'] = "smtp.163.com" 519 gitlab_rails['smtp_port'] = 25 520 gitlab_rails['smtp_user_name'] = "lixie0215@163.com" 521 gitlab_rails['smtp_password'] = "123456" 522 gitlab_rails['smtp_domain'] = "163.com" 523 gitlab_rails['smtp_authentication'] = "login" 524 gitlab_rails['smtp_enable_starttls_auto'] = true #修改gitlab配置的發信人 53 gitlab_rails['gitlab_email_from'] = 'lixie0215@163.com' 677 user['git_user_email'] = "lixie0215@163.com"
2. 重新加載配置並重啟服務
[root@gitlab ~]# gitlab-ctl reconfigure [root@gitlab ~]# gitlab-ctl restart
案例六:Gitlab的備份與恢復
步驟一:
停止gitlab的數據服務(禁止用戶寫入數據)
[root@gitlab01 ~]# gitlab-ctl stop unicorn ok: down: unicorn: 1s, normally up [root@gitlab01 ~]# gitlab-ctl stop sidekiq ok: down: sidekiq: 0s, normally up
步驟二:
通過gitlab-rake命令備份gitlab
gitlab-rake gitlab:backup:create gitlab-ctl start # 備份完成后啟動gitlab
溫馨提示:
該命令會備份gitlab倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。備份完成后備份文件會出現在/var/opt/gitlab/backups/ (會生成以下這樣的文件)

步驟三:
模擬gitlab服務器模擬用戶及數據
假如:把以下代碼模擬刪除


步驟四:
模擬:恢復數據
禁止寫入數據: [root@gitlab01 ~]# gitlab-ctl stop unicorn ok: down: unicorn: 1s, normally up [root@gitlab01 ~]# gitlab-ctl stop sidekiq ok: down: sidekiq: 0s, normally up 執行恢復命令: gitlab-rake gitlab:backup:restore BACKUP=1632376876_2021_09_23_11.11.3 # 輸入yes進行確認 gitlab-ctl start
驗證:(數據被還原了)

