纪录一次sentry升级历史

首发于:个人博客html

原由

IOS同事说他发现了sentry的一个bug。说是由于9.0.0的bug致使debug file 提示上传成功,可是上网站却发现根本没有上传。因此就开始了个人升级之路。nginx

调研

由于个人sentry不单单用在了服务器端,并且还用在了客户端上。因此我须要解决若是sentry中止了,那么如何解决请求等待的问题。git

Nginx

那么我首先想到的就是修改nginx的配置文件。github

下面是我更新的相关内容web

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;
    }
}
复制代码

使用这两行,就能够保证客户端正常请求了数据,可是我却把它给抛弃了。保证客户端的正常浏览。docker

sentry 升级

接下来就是对sentry进行升级了。数据库

首先,进入到指定目录bash

cd /data/
复制代码

对相关目录进行备份(备份是个好习惯,千万不要丢弃)服务器

cp -r onpremise onpremise2
复制代码

而后进入目录app

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数据还在,那就能够。

经过此次的升级,了解了不少的东西,对个人成长颇有帮助。

相关文章
相关标签/搜索