去年末寫過一篇簡單而完整地體驗一遍sentry的sourcemap服務, 是徹底基於使用層面的. 因爲有需求須要自行搭建sentry, 整理一下搭建流程python
8.22.0 參考github releaselinux
官方推薦的方法是使用Docker, 咱們這裏以使用Docker爲例nginx
daocloud上附有教程, 請自行查閱git
$ docker --version
Docker version 18.05.0-ce, build f150324
$ docker-compose --version
docker-compose version 1.21.2, build a133471
複製代碼
onpremise是官方提供的包含了sentry搭建所須要的所有依賴的引導程序github
$ git clone https://github.com/getsentry/onpremise.git
複製代碼
$ cd onpremise
$ mkdir -p data/{sentry,postgres}
複製代碼
這樣須要說明一下, 我一開始沒執行這一步操做, 雖然在構建過程當中程序會給咱們新建這些本該有的目錄. 然而, 後續出現的一連串讓人崩潰的問題, 譬如There was an error loading data
, 也會與此相關.web
secret key
$ docker-compose run --rm web config generate-secret-key
複製代碼
這個時候會在終端輸出redis
Starting onpremise_redis_1 ... done
Starting onpremise_postgres_1 ... done
Starting onpremise_memcached_1 ... done
xxx+5%xxxxxxx!!xxxxxxxx&6(xxxxxxx%xoml)xxxxxxxxxx
複製代碼
複製祕鑰(即最後一行)到docker-compose.yml中的SENTRY_SECRET_KEY
對應的valuedocker
$ docker-compose run --rm web upgrade
複製代碼
正常的話, 終端會出現數據庫
...
Would you like to create a user account now...
...
複製代碼
正常鍵入便可segmentfault
在部署到linux機器上時, 出現過一種狀況就是: 根本沒出現這一步, 果斷從頭再來. 還好, 問題就此打住.
不像國內, 不少應用都支持郵件手機二選一的註冊方式. 而sentry, 少了郵件功能, 就好像被閹割了同樣, 也沒什麼好用的了.
在onpremise根目錄裏, 有一個config.yml配置文件, 裏面定義了一些常規配置, 包括郵件配置方式.
# Use dummy if you want to disable email entirely
mail.backend: 'smtp'
mail.host: 'smtp.qq.com'
mail.port: 587
mail.username: '123@qq.com'
# 郵箱受權碼, 非郵箱密碼
mail.password: '123'
mail.use-tls: true
# The email address to send on behalf of
mail.from: '123@qq.com'
# 請保持與域名嚴格一致
mail.list-namespace: 'sentry.yourdomain.com'
複製代碼
除了上述的註釋外, 還有:
587
, 用465會出現一些奇怪的問題. sentry只支持tls而非ssh,因此端口改587試試$ docker-compose up -d
複製代碼
如無心外, 一切正常, 端口默認是9000
, 本地的話能夠直接打開localhost:9000
訪問
官網上也有相關說明
配置https不要忽略了文檔末段的修改sentry.conf.py
import os
import os.path
# 添加變量
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
複製代碼
貼一下個人 nginx for https 配置
sentry.conf
server {
listen 80;
server_name sentry.yourdomain.com www.sentry.yourdomain.com;
location / {
if ($request_method = GET) {
rewrite ^ https://$host$request_uri? permanent;
}
return 405;
}
access_log /home/wwwlogs/sentry_yourdomain.log main;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
# keepalive + raven.js is a disaster
keepalive_timeout 0;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://localhost:9000;
add_header Strict-Transport-Security "max-age=31536000";
}
access_log /home/wwwlogs/sentry_yourdomain.log main;
}
複製代碼
首次須要配置Root URL等信息, 其中的Root URL填寫https://sentry.yourdomain.com
便可, 不要填相似https://sentry.yourdomain.com/
這種, 貌似對從郵件中點擊跳轉等操做不友好.
團隊內部使用可使用郵件邀請機制!!!!
結合文章開始介紹的簡單而完整地體驗一遍sentry的sourcemap服務, 能夠體驗一下本身搭建並使用sentry的快感!!!!