GitLab升級維護及升級後報500錯誤
早先給公司內網搭建了一套基於Git的伺服器GitLab,GitLab升級包更新較快,筆者在升級過程中記錄下爬的教程以及遇到了不少的問題,現在分享給出來以供需要時參考。
備份GitLab
修改預設備份目錄:
預設備份目錄是/var/opt/gitlab/backups,如果不想修改可以略過此步,編輯檔案/etc/gitlab/gitlab.rb,找到程式碼
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
移除該行程式碼前的註釋並修改目錄:
# gitlab_rails['backup_path'] = "/home/backups"
在修改完後需要鍵入gitlab-ctl reconfigure命令過載配置檔案即可。
執行備份:
直接執行下述程式碼:
gitlab-rake gitlab:backup:create
顯示執行成功:
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
* group/project ... [DONE]
done
Dumping uploads ...
done
Dumping builds ...
done
Dumping artifacts ...
done
Dumping lfs objects ...
done
Creating backup archive: 1453173545_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
Deleting old backups ... skipping
升級GitLab
下載完整包
筆者想過下載個很小的升級包是不是就可以了,答案是否定的,而且由於一些原因,下載比較費力,老老實實用迅雷去下載吧。
點選gitlab-ce-8.3.4-ce.0.el7.x86_64.rpm進入下載頁,點右上角Download,生成下載連結後用迅雷下載,否則龜速
上傳gitlab-ce-8.3.4-ce.0.el7.x86_64.rpm到伺服器/root目錄下
開始升級
回到linux命令列,依次鍵入命令(最後一步是備份意思,可以活力)
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
sudo gitlab-rake gitlab:backup:create
然後鍵入安裝命令
# Ubuntu/Debian系統:
sudo dpkg -i gitlab_x.x.x-omnibus.xxx.deb
# CentOS系統:
sudo rpm -Uvh gitlab-x.x.x_xxx.rpm
耐心等待100%完成後,鍵入重建和重啟命令:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
遇到的問題
程序佔用
在reconfigure時遇到錯誤: Chef client 11936 is running,查得Chef client程序佔用,查程序列表,鍵入ps命令
ps
相關gitlab的命令全殺掉,kill -9 11936,-9意思是強制結束程序,11936是程序pid
kill -9 11936
然後重新重建和重啟,完美地完成
500錯誤
前面高興的太早,訪問GitLab發現報500錯誤,爬文得知大意為DB資料關係錯誤,需要升級資料庫關係
輸入以下指令檢視資料升級狀態
sudo gitlab-rake db:migrate:status
果然發現有一些顯示為Down,顯示為Up即表示正常同,再執行資料庫關係升級
sudo gitlab-rake db:migrate
執行完成再重複重建、重啟命令,問題解決