纪录一次sentry升级历史

首发于: 个人博客

原由

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

调研

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

Nginx

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

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

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;
    }
}

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

sentry 升级

接下来就是对sentry进行升级了。docker

首先,进入到指定目录数据库

cd /data/

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

cp -r onpremise onpremise2

而后进入目录服务器

cd onpremise

中止sentry的运行app

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

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

相关文章
相关标签/搜索