- CentOS 7.5 64位
- docker: 18.09.6
- docker-compose: 1.24.0
- sentry: sentry 9.1-onbuild
- 安装
docker
和docker-compose
- 如果没有启动 docker。 执行
systemctl start docker
启动 docker。 可执行systemctl enable docker
将启动 docker 加入开机自启 - 执行
sudo yum install git
安装 git - 执行
git clone https://github.com/getsentry/onpremise.git
克隆到主机 - 执行
cd onpremise
进入 onpremise 文件夹 - 执行
docker volume create --name=sentry-data && docker volume create --name=sentry-postgres
- 使用docker volume
必须手动创建本地数据库和 sentry 卷 - 执行
cp -n .env.example .env
- 创建.env
文件 - 执行
docker-compose build
- 构建并标记docker
服务。 - 执行
docker-compose run --rm web config generate-secret-key
- 生成密钥。将它添加到.env
作为SENTRY_SECRET_KEY
的值,还要将其添加到docker-compose.yml
中。
-
执行
docker-compose run --rm web upgrade
- 构建数据库。 官方文档()说这里会使用交互式提示创建用户帐户。在实际操作中却没有提示。::如果没有提示需要执行第 12 步::。 -
执行
docker exec -it onpremise_postgres_1 bash
进入docker容器 执行 postgres bash 命令查看是否有数据。- 执行
psql -h 127.0.0.1 -d postgres -U postgres
进入postgres数据库 - 执行
select * from sentry_project;
查看 sentry_project 表是否有数据。 - 执行
select * from sentry_organization;
查看 sentry_organization 表是否有数据。 - 执行
ctrl + d
退出shell。
- 执行
-
如果没有数据需要添加, 执行
docker-compose run --rm web shell
进入sentry的web的shell里面。初始化数据- 执行
from sentry.models import Project
- 执行
from sentry.receivers.core import create_default_projects
- 执行
create_default_projects([Project])
- 执行
ctrl + d
退出。
- 执行
-
执行
docker-compose up -d
- 构建启动容器 -
在浏览器中输入
[ip]:9000
-
在执行
docker-compose run --rm web upgrade
的时候。可能会出现没有执行完就退出了终端。 -
登录到项目后点击 Create a sample event 测试时, 会发现是失败的,而且这个时候在项目中产生的错误不会在这个 Issues 列表中展示。
执行 docker container logs <web容器id>
查看日志。发现在执行 SQL 的时候 没有找到给定名称和参数类型匹配的函数。
解决方案: Waiting for events… Our error robot is waiting to devour receive your first event - #sentry
- 执行
docker exec -it onpremise_postgres_1 bash
进入docker容器 执行 postgres bash 命令查看是否有数据。 - 执行
psql -h 127.0.0.1 -d postgres -U postgres
进入postgres数据库 - 执行下面SQL 语句后。在浏览器中点击 Create a sample event 就好了,也正常记录Issue了。
create or replace function sentry_increment_project_counter( project bigint, delta int)
returns int as $$ declare new_val int;
begin loop update sentry_projectcounter set value = value + delta where project_id = project returning value into new_val;
if found then return new_val;
end if;
begin insert into sentry_projectcounter(project_id, value) values (project, delta) returning value into new_val; return new_val;
exception when unique_violation then end; end loop;
end $$ language plpgsql;