本文介绍用 docker 部署 sentry 的相关步骤和一些值得注意的地方
getsentry/onpremise 这个仓库是专提供来用 docker 启动本地服务的,也就是需要首先本地环境要能运行 docker 才行。另外 sentry 也可以用 python 启动服务,这里不提
./install.sh
前先下载下面这两个,这是淘宝的 docker 源,能把部署 sentry 需要的大部分镜像都下载下来,这样可以减少一点安装时间,但是需要开发者账号,hkoa9dfz 就是开发者账号对应的识别码📂 onpremise
中使用以下指令来拉起 sentry 服务了:因为是通过 docker 编译出来的,因此对应的指令都要在项目文件夹 📂 onpremise
中使用 docker-compose run
来执行,如果是用 python 来构建 sentry 的话,则应该要使用 sentry
指令,python 相关自行查看文档
也就是说假设在官方文档中查询到某条指令如:sentry createuser
那么如果你是通过本文介绍的用 docker 的方法来启动 sentry 服务的话,则应该要在项目文件夹 📂 onpremise
中使用:docker-compose run createuser
来替换上述指令
本文剩余章节的相关指令同样是通过这种 docker-compose
指令来使用的,注意要在 📂 onpremise
目录底下执行
--superuser
则为普通用户,--force-update
可以用来覆盖已经存在的相同账号)补充:如果进入页面登录时提示网络 CSRF 相关的报错,可能和这个 issue 有关:https://github.com/getsentry/self-hosted/issues/2751 。解决办法是在 sentry/config.yml
中添加:
参数说明:(更多参数应自行查看官方文档)
dsn
:错误上报的目标接口,也就是 sentry 服务部署的地方,如果是正式生产环境用了 nginx 等工具转发了部署项目的所在 ip 到具体域名,记得要把这里的地址也修改一下environment
:环境,不配置的话默认为 "production"
release
:版本,通常是用 "<ENV>@1.0.1"
这样的形式,理论上是唯一值,同一个项目中不会同时存在两个相同的版本,会和下方上传代码地图的 release
对应,详情在下面章节会说明一旦有错误上报成功,就会在对应的项目、环境的对应版本下生成 issue 及其详情,可以到 sentry 主界面自行查看
主动错误上报可以调用这个方法,更多 api 应自行查看官方文档
这一步的目的是让你的 sentry 账号和你的本地环境绑定,从而实现各种功能,例如下面章节会介绍的上传 source map 到 sentry 服务器从而实现抛错处的精确定位(但是要实现上传 source map 其实未必需要把账号和本地绑定,这点下面也会介绍)
因为安装过程需要运行脚本,可能会提示权限不够,那样的话用下面这个指令来安装
执行以下指令开始绑定账号:
📂 ~
)下生成 📄 .sentryclirc
配置文件--url
指定到本地的 sentry 上,可以通过 📄 .sentryclirc
配置文件进行修改默认服务器,具体配置下面的章节会说明📄 .sentryclirc
上进行配置。如果信息没问题,则说明 sentry 账号已经成功绑定到本地)sentry 的配置文件就是上一步生成的 📄 .sentryclirc
文件,这个文件默认情况下存在于用户目录 📂 ~
中,表示本地账户的登录信息和配置
但是这个文件并非一定要放在 📂 ~
下,就像上面章节提到的,要使用 sentry 的登录功能不需要本地环境也配置 📄 .sentryclirc
,你可以把这个文件放在任何前端项目的目录里,从而对不同的项目实现不同的 sentry 配置
提到这个也要说明一下 sentry-cli
这个指令会优先读取指令执行目录底下的 📄 .sentryclirc
,只有当当前目录下没有 📄 .sentryclirc
才会去读取用户目录 📂 ~
下的 📄 .sentryclirc
根据 📄 .sentryclirc
的这些特点,就可以很灵活地为不同的前端项目配置不同的 sentry 配置
下面就是一份比较典型的 📄 .sentryclirc
的配置,更多属性应自行查阅文档
token
:就是认证 tokenurl
:部署 sentry 的服务器地址,默认为 https://sentry.ioorg
:登录 sentry 主界面可以看到你自己的团队,选择你要设置的默认团队,注意名字没有井号,默认为 “sentry”project
: 设置默认项目代码地图在 sentry 中的作用是在上报的 issue 中显示报错代码对应的准确位置(精确到行列),有两种方式上传代码地图到 sentry
假设已经编译好了项目并存在 📂 .dist
文件夹,执行如下指令即可上传到对应的项目:
📄 .sentryclirc
中配置好了 url
org
和 project
,则可以省去 --url
-o
-p
这几个参数<VERSION>
对应的是上面前端上报初始化对象里的 release
,说明这里上传的 source map 对应的是和 release
一样的版本--url-prefix
是项目前缀,默认是"~/"
也就是根目录,如果项目不是部署在域名的根目录,则可以用这个参数自行调整📄 .sentryclirc
文件直接放到要执行命令的前端项目的根目录的话,那么 sentry-cli 就会优先使用本地的配置。而也因此,可以针对不同的项目使用不同的 sentry 配置,这一点,对于接下来要说明的使用 webpack 上传 source map 的方法同样适用。如果是用这种方式的话就可以省去 sentry 和本地环境绑定的步骤,十分灵活配置完成后会在每次 build 项目的时候,source map 文件自动上传到对应的 sentry 服务。注意要开启生成源码,建议为 devtool: "source-map"
属性说明:(访问官方文档查看更多属性)
include
:上传的目标文件夹,也可以指定 "."
上传整个根目录ignore
:上传时要忽略的文件夹或文件类型release
:和上述章节里介绍的 sentry 初始化对象中的 release
对应urlPrefix
:和上述章节里介绍的 --prefix-url
对应,默认为 "~/"
configFile
:如果不配置的话默认使用环境中的配置,也就是 📄 ~/.sentryclirc
,也可以像这样把 📄 .sentryclirc
文件放进前端项目的根目录中然后配置成 ".sentryclirc"
来使用项目自己的配置📄 .sentryclirc
配置,也就是用不同的 .sentryclirc
单独放到不同的项目根目录下,各个项目有各自的配置,这一点在上面的章节有说明。甚至可以利用 fs.existsSync()
方法判断到项目下有没有 .sentryclirc
文件,从而控制在什么环境下需要上传 source map以上就是在部署配置 sentry 的一些基础步骤和一些小提示,更多的内容应该要到 sentry 官方文档去了解,尤其是前端配置的部分有很多值得研究的 api
点击这里前往 Github 查看原文,交流意见~
文档信息
版权声明:自由转载 - 非商用 - 非衍生 - 保持署名(创意共享3.0许可证)