Gitlab備份、遷移、恢復和升級
自建的Gitlab服務器常常會因為使用時間的增長,其空間容量等硬件需求都需要升級,或者遷移至更高配置的服務器上。備份、遷移、恢復、升級過程如下
1、gitlab備份
備份前gitlab的項目如圖所示
備份時需要保持gitlab處於正常運行狀態,直接執行gitlab-rake gitlab:backup:create進行備份
使用以上命令會在/var/opt/gitlab/backups目錄下創建一個名稱類似為1530156812_2018_06_28_10.8.4_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的1530156812_2018_06_28_10.8.4是備份創建的日期
/etc/gitlab/gitlab.rb 配置文件須備份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 郵件配置備份
1.1 修改備份文件目錄
可以通過/etc/gitlab/gitlab.rb配置文件來修改默認存放備份文件的目錄
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
修改完成之后使用gitlab-ctl reconfigure命令重載配置文件即可
1.2 設置備份過期時間
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 604800 #以秒為單位
1.3 gitlab自動備份
創建定時任務
[root@gitlab ~]# crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
2、gitlab遷移
遷移的整體思路是:
1、在新服務器上安裝相同版本的gitlab
2、將備份生成的備份文件發送到新服務器的相同目錄下
這里在10.0.0.6的機器上安裝了相同版本的gitlab並能正常運行使用
在老服務器上將備份文件發送至新服務器的相應目錄下
[root@gitlab ~]# scp /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar root@10.0.0.6:/var/opt/gitlab/backups/
3、gitlab恢復
[root@gitlab ~]# gitlab-ctl stop unicorn #停止相關數據連接服務
[root@gitlab ~]# gitlab-ctl stop sidekiq
[root@gitlab-new ~]# chmod 777 /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar
#修改權限,如果是從本服務器恢復可以不修改
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4
#從1530156812_2018_06_28_10.8.4編號備份中恢復
按照提示輸入兩次yes並回車
[root@gitlab ~]# gitlab-ctl start #啟動gitlab
瀏覽器訪問新服務器的地址進行查看,遷移成功
在實際情況中訪問gitlab可能是用域名訪問,我們可以修改gitlab配置文件中的url再進行備份,這樣就不會影響遷移過程,恢復完成后需要進行的只是修改域名對應的dns解析ip地址
4、gitlab升級
[root@gitlab ~]# gitlab-ctl stop #關閉gitlab服務
[root@gitlab ~]# gitlab-rake gitlab:backup:create #備份
下載新版gitlab的rpm包安裝,安裝時選擇升級
安裝的過程中可能會出現報錯
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
解決方法為
[root@gitlab ~]# chmod 2770 /var/opt/gitlab/git-data/repositories
安裝成功后重新加載配置並啟動
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart
5、gitlab更改默認的nginx
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
nginx['enable'] = false #不啟用nginx
檢查默認nginx配置文件,並遷移至新Nginx服務
/var/opt/gitlab/nginx/conf/nginx.conf #nginx配置文件,包含gitlab-http.conf文件
/var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab核心nginx配置文件
重啟 nginx、gitlab服務
[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# systemctl restart nginx.service
訪問可能出現報502。原因是nginx用戶無法訪問gitlab用戶的socket文件。 重啟gitlab需要重新授權
[root@gitlab ~]# chmod -R o+x /var/opt/gitlab/gitlab-rails