2018/3/17

Gitlab備份紀錄

最近把gitlab移植到新的Server花了蠻多時間,發現其實沒那麼容易,有一些眉眉角角的點在此紀錄一下。

先背景介紹原本舊的gitlab資訊
是用docker架設的
版本為8.13.1-ce.0
HTTP Port為80
HTTPS Port為443
SSH Port為22,後來改成2111

現在我要移植到新的Server,並且希望連線資訊為以下:
HTTP Port為非80
HTTPS Port:不管
SSH Port為非22
並且clone的網址後面會正常顯示port號

最後是使用官方推薦的方式備份並還原成功的。
還原有一個重點,就是舊的新的gitlab版本要一樣,不然很容易出錯!節錄一下官方的的段話:
在這張圖的最後一段,我是不敢嘗試,所以最好能保持這個原則。

那接下來簡略紀錄一下備份的流程:
  1. 從舊的gitlab產生備份檔,並且傳到新的Server
  2. 在新的Server安裝8.13.1-ce.0版本的gitlab,我這裡是用原始的方式安裝,沒用docker
  3. 於新Server啟動gitlab
  4. 於新Server的gitlab的gitlab.rb檔案將port改成你要的port,SSH port也是在這改
  5. 使用gitlab-ctl reconfigure指令重新配置
  6. 去瀏覽你的新gitlab網頁,看看是不是能看到正常的頁面,記得用你改的port去連,不用設定密碼創建帳號,因為等等會把備份檔還原
  7. 於gitlab.rb確認它抓取備份檔的路徑,我這裡manage_backup_path有打開並設為true,backup_path也打開並設為"/var/opt/gitlab/backups",其實只拿掉註解而已,因為它預設就是那樣了
  8. 使用gitlab-ctl reconfigure指令重新配置,並且再去瀏覽一次gitlab網頁,只是確保它還可以動
  9. 將備份檔複製到/var/opt/gitlab/backups,最後把權限全部打開(chmod 777),以方便等等它執行
  10. 依照官方說明停止unicorn與sidekiq,並用gitlab-ctl status確認。
  11. 我的備份檔檔名為這樣:1521280612_gitlab_backup.tar
  12. 執行還原指令:$ sudo gitlab-rake gitlab:backup:restore BACKUP=1521280612
  13. 你沒看錯,只放1521280612,後面的_gitlab_backup、tar都不用放,不用雞婆,否則他會跟你說找不到,它很像是認前面這串數字,正常的話他會開始跑一下,做一些把資料匯入的動作,中間會問你是否繼續,回yes
  14. 重啟:$ sudo gitlab-ctl restart
  15. 瀏覽你的gitlab,你應該可以用你舊的帳密登入,並且可以在http和ssh clone的網址的部分看到正確的port

  • 記得把新gitlab的備份檔權限還原,第9步是設為777了麻!

  • 為何不用docker?
因為用docker啟動gitlab的內部port很像不好改,原本預設是80 443 22麻,這個東西不好改,除非要重新去build一次Dockerfile。

  • 承上,為什麼要改內部port?
因為clone的網址的port是看docker的內部port,不是看外部的!所以如果我外面連進去是用5656,可以連!但我進去專案裡面看,clone的網址沒有port,因為它預設走80!這樣每次clone都要自己加5656,很不方便!

沒有留言:

張貼留言