首發於:我的部落格
起因
IOS同事說他發現了sentry的一個bug。說是因為9.0.0的bug導致debug file 提示上傳成功,但是上網站卻發現根本沒有上傳。所以就開始了我的升級之路。
調研
因為我的sentry不僅僅用在了伺服器端,而且還用在了客戶端上。所以我需要解決如果sentry停止了,那麼如何解決請求等待的問題。
Nginx
那麼我首先想到的就是修改nginx的配置檔案。
下面是我更新的相關內容
server {
listen 80;
server_name track.example.com;
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
location / {
// 新增這兩行
default_type text/html; // 設定 content-type 表示這是一個網頁
return 202; # 返回 202 表示已經接收,但是並不處理
client_max_body_size 100M;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host-Real-IP $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-Pcol http;
proxy_pass http://localhost:10000;
}
}
使用這兩行,就可以保證客戶端正常請求了資料,但是我卻把它給拋棄了。保證客戶端的正常瀏覽。
sentry 升級
接下來就是對sentry進行升級了。
首先,進入到指定目錄
cd /data/
對相關目錄進行備份(備份是個好習慣,千萬不要丟棄)
cp -r onpremise onpremise2
然後進入目錄
cd onpremise
停止sentry的執行
docker-compose down
拉取最新程式碼
git pull
這個時候可能會提示以下錯誤:
error: Your local changes to the following files would be overwritten by merge:
docker-compose.yml
Please commit your changes or stash them before you merge.
首先我們先對內容進行diff,檢視修改的部分:
git diff docker-compose.yml
將輸出記錄下來,以便更新程式碼之後對該檔案進行還原。
這是因為你對該檔案進行了修改。但是該檔案是被追蹤的,所以說需要先還原,然後再次拉取,執行以下程式碼:
git checkout docker-compose.yml
git pull
執行完成後就表示拉取最新版本庫成功了。
現在就要把配置的docker-compse.yml
內容給還原回來。
接下來就是設定環境變數了:
export SENTRY_IMAGE='sentry:9.1.2'
為什麼要這麼設定呢。因為通過閱讀Dockerfile
檔案可得知,該檔案需要讀取環境變數SENTRY_IMAGE
來拉取相關的docker檔案。
再次構建我們的服務
docker-compose build --pull
執行中可能會提示:
09:31:05 [WARNING] sentry.utils.geo: settings.GEOIP_PATH_MMDB not configured.
這個提示應該沒有配置GEO資料庫的地址。先不管,等以後以後機會可以再去研究它。
現在就是要執行遷移了:
docker-compose run --rm web upgrade
在遷移中可能會提示如下訊息:
The following content types are stale and need to be deleted:
sentry | dsymapp
sentry | versiondsymfile
sentry | projectdsymfile
sentry | grouphashtombstone
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.
Type 'yes' to continue, or 'no' to cancel:
因為我也不清楚發生了什麼。所以我的回答是no
。
遷移完成就是剩下啟動服務了:
docker-compose up -d
一切正常。
最後我們就是把我們的nginx 202響應給登出掉,然後重啟nginx就ok了。
總結
再次進入之後,發現了UI有一些變化。並且IOS大哥的問題也解決了。但是也產生了一些問題,就是統計的bug統計資料都沒了。這不重要,只要bug資料還在,那就可以。
通過這次的升級,瞭解了很多的東西,對我的成長很有幫助。
本作品採用《CC 協議》,轉載必須註明作者和本文連結