GitLab快速上手指南下篇

尹正杰發表於2024-11-21

                                              作者:尹正傑

版權宣告:原創作品,謝絕轉載!否則將追究法律責任。

目錄
  • 一.gitlab的資料備份和恢復
    • 1.手動備份配置檔案
    • 2.手動備份資料
    • 3.模擬刪除meta-data專案資料
      • 3.1 刪除meta-data專案
      • 3.2 meta-data被刪除成功
    • 4.透過備份恢復meta-data專案資料
      • 4.1 恢復前需要先停止puma和sidekiq服務
      • 4.2 恢復時指定備份檔案的時間部分,不要指定檔案的全名
      • 4.3 檢查恢復是否成功
  • 二.gitlab的遷移和升級
    • 1.遷移流程概述
    • 2.升級流程概述
    • 3.遷移和升級案例
  • 三.實現https
    • 1.實現https概述
    • 2.gitlab實現https實戰案例
  • 四.找回gitlab忘記的密碼(可用於破解別人的gitlab伺服器)
    • 1.官方文件
    • 2.實戰案例

一.gitlab的資料備份和恢復

1.手動備份配置檔案

- 備份配置檔案:
	/etc/gitlab/gitlab.rb 
		gitlab的配置檔案

	/etc/gitlab/gitlab-secrets.json 
		gitlab雙因子驗證等使用此檔案
		
		
- 備份配置檔案案例:
	gitlab-ctl backup-etc [-p, --backup-path BACKUP_PATH]
		如果不指定"-p, --backup-path BACKUP_PATH",則預設備份至"/etc/gitlab/config_backup"。
		
	舉個例子:
		如上圖所示,若不指定備份路徑,會使用gitlab預設的備份路徑喲~
		如下圖所示,備份的檔案可以嘗試解壓觀察裡面的檔案。

參考連結:
	https://docs.gitlab.com/ee/raketasks/backup_restore.html

2.手動備份資料

- 不同版本的備份資料命令
	gitlab 12.2之後版本:
		gitlab-backup create
	
	gitlab 12:1 之前的版本:
		gitlab-rake gitlab:backup:create
		
		
- 備份資料相關配置:
	預設在"/etc/gitlab/gitlab.rb"檔案中指定備份路徑,如果目錄空間不足,可以修改新的目錄。
		- gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
		- 注意,修改完配置需要執行"gitlab-ctl reconfigure"
		
	備份的檔案許可權,所有者和所屬組為git
		- gitlab_rails['backup_archive_permissions'] = 0644
		
	預設備份過期時長為7天,單位為s,之後會被自動刪除。
		- gitlab_rails['backup_keep_time'] = 604800
		
	
- 備份資料案例:
	gitlab-backup create 
		備份資料,如上圖所示,備份完成會警告咱們要備份配置檔案喲~但咱們已經備份過了,可以忽略該警告。
	

3.模擬刪除meta-data專案資料

3.1 刪除meta-data專案

如上圖所示,依次點選滑鼠後,就會彈出刪除meta-data的專案的確認框,如下圖所示。

3.2 meta-data被刪除成功

如上圖所示,刪除會提示"meta-data"正在被刪除,重新整理頁面後就看不到該提示了,如下圖所示。

4.透過備份恢復meta-data專案資料

4.1 恢復前需要先停止puma和sidekiq服務

# gitlab-ctl stop puma
# gitlab-ctl stop  sidekiq
# gitlab-ctl status



溫馨提示:
	puma服務:
		是一個用於 Ruby 應用程式的簡單、快速、多執行緒和高度併發的HTTP 1.1伺服器。
	sidekiq服務:
		儲存使用者在後臺執行佇列任務(非同步執行)

4.2 恢復時指定備份檔案的時間部分,不要指定檔案的全名

# gitlab-backup restore BACKUP=1676332446_2023_02_13_15.6.7
	將字首為"1676332446_2023_02_13_15.6.7"的備份檔案進行恢復。
	如上圖所示,此過程需要輸入2次yes喲~
	

# gitlab-ctl reconfigure
	恢復資料後,需要還原配置檔案路徑,並重新配置一下gitlab使其生效。
	值得注意的是,咱們並沒有刪除配置檔案,而是刪除了專案資料,此過程理論上應該是可用跳過的。


# gitlab-ctl restart
	重啟gitlab服務,確保每個服務都被重新拉起,如下圖所示。
	
	
	
溫馨提示:
	舊版本恢復方法:
		- 恢復前需要先停止兩個服務
			# gitlab-ctl stop puma
			# gitlab-ctl stop  sidekiq
			
		- 恢復時指定備份檔案的時間部分,不需要指定檔案的名稱。
			gitlab-rake gitlab:backup:restore BACKUP=備份檔案的時間部分

4.3 檢查恢復是否成功

如上圖所示,專案名稱被成功恢復啦。

如下圖所示,專案的資料也被成功恢復了喲。

二.gitlab的遷移和升級

在生產中升級往往伴隨著伺服器的遷移,比如從本地機房遷移到雲環境中,而實現升級。

1.遷移流程概述

- 在原gitlab主機上備份配置檔案和資料

- 在目標機器上安裝相同版本的gitlab軟體

- 還原配置和資料

- 本質上就是備份和恢復的過程

2.升級流程概述

- 如果是新機器,需要先安裝舊版本,並還原配置和資料

- 不能直接跳過中間版本直接升級,選擇最近的大版本進行升級
	比如12.1想要升級到13.0,先升級到12.x最高版本,再升級到13.0。
	
- 下載新版本的安裝,直接安裝包

- 安裝包時可能會提示出錯,原因是版本升級後有些配置項會過時,根據提示修改配置即可

- 重新配置: gitlab-ctl reconfigure

- 重啟服務: gitlab-ctl restart

3.遷移和升級案例

要先做遷移操作在做升級操作即可。

遷移資料驗證無誤後,升級時僅需要安裝對應的軟體包即可。升級完成後,需要重啟下服務喲~

三.實現https

1.實現https概述

gitlab如果用於不安全的網路,建議使用https協議。

官方文件:
	https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https

2.gitlab實現https實戰案例

	(1)建立證書存放目錄
[root@ubuntu11.yinzhengjie.com ~]# mkdir /etc/gitlab/ssl


	(2)將公司的證書解壓放在證書目錄中,此處使用了我個人的域名
[root@ubuntu11.yinzhengjie.com ~]# unzip www.yinzhengjie.com_nginx.zip -d /etc/gitlab/ssl/


	(3)修改gitlab的配置檔案
[root@ubuntu11.yinzhengjie.com ~]# vim /etc/gitlab/gitlab.rb 
...
# 注意協議變成了https,而且域名要和證書的名稱一致喲~
external_url 'https://www.yinzhengjie.com'
# 是否啟用nginx相關配置
nginx['enable'] = true
# 設定客戶端最大傳輸訊息大小限制
nginx['client_max_body_size'] = '1000m'
# 是否將http重定向到https
nginx['redirect_http_to_https'] = true
# 將80埠重定向到https,將所有請求80的都跳轉到443
nginx['redirect_http_to_https_port'] = 80
# 指定證書檔案
nginx['ssl_certificate'] = "/etc/gitlab/ssl/www.yinzhengjie.com_nginx/www.yinzhengjie.com_bundle.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/www.yinzhengjie.com_nginx/www.yinzhengjie.com.key"


	(4)重新編譯gitlab,使得配置生效
[root@ubuntu11.yinzhengjie.com ~]# gitlab-ctl reconfigure


	(5)修改Windows和Linux的hosts檔案解析
# gitlab證書配置
10.0.0.11   www.yinzhengjie.com


	(6)訪問gitlab服務
如下圖所示。

四.找回gitlab忘記的密碼(可用於破解別人的gitlab伺服器)

1.官方文件

推薦閱讀:
	https://docs.gitlab.com/ee/security/reset_user_password.html#reset-the-root-password

2.實戰案例

	(1)在gitlab的字元終端控制檯介面修改密碼
[root@ubuntu11.yinzhengjie.com ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
 GitLab:       15.6.7 (063acfb7f87) FOSS
 GitLab Shell: 14.13.0
 PostgreSQL:   13.8
------------------------------------------------------------[ booted in 17.47s ]  # 此步驟可能需要17秒左右才能開啟喲~
Loading production environment (Rails 6.1.6.1)
irb(main):001:0> 
irb(main):002:0> user = User.where(id: 1).first  # 找到id為1的使用者,下面說第一個使用者是root
=> #<User id:1 @root>
irb(main):003:0> 
irb(main):004:0> user.password="12345678"  # 將root使用者密碼重置為"12345678"
=> "12345678"
irb(main):005:0> 
irb(main):006:0> user.password_confirmation="12345678"  # 將root使用者名稱密碼再次確認設定為"12345678"
=> "12345678"
irb(main):007:0> 
irb(main):008:0> user.save  # 儲存配置
=> true
irb(main):009:0> 
irb(main):010:0> quit  # 退出終端
[root@ubuntu11.yinzhengjie.com ~]# 


	(2)訪問gitlab的WebUI
如上圖所示,使用咱們重置後的密碼進行登入即可。

相關文章