sentry部署整理 原

#依赖:

  1. redis
  2. postgresql
  3. python

sentry是python开发的一个应用,使用python uWSG框架运行,所有安装完sentry要记得在nginx的代理上禁用掉/admin路径,不然uwsg的后台管理入口就泄漏了 具体的安装资料地址为:

https://docs.sentry.io/server/installation/
#redis的启动
su - redis                                               
redis-server /etc/redis.conf

#postgresql因为是项目迁移,用的9.6版本,所以需要yum自己安装一下

systemctl restart postgresql-9.6
#使用的材料地址
https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7.2-x86_64/repodata/repomd.xml
https://www.postgresql.org/download/linux/redhat/

db准备好之后要先初始化

postgresql-setup initdb
/usr/pgsql-9.6/bin下也会有一个专用的命令
/usr/pgsql-9.6/bin/initdb -D /data/www/db
可以这样去指定一个目录来进行初始化

redis和pgsql都要要各自对用的用户来进行操作,pgsql的默认用户是postgres

初始化完成之后要注意两个文件: postgresql.conf #相当于mysql的my.cnf配置文件 pg_hba.conf #用户远程访问控制配置文件,这个文件弄不好,pgsql无法远程连接

pgsql的用户创建

CREATE USER dbuser WITH PASSWORD 'password';   #创建用户dbuser并设置密码
CREATE DATABASE sentry OWNER dbuser;  #创建库sentry并指定拥有者给dbuser
GRANT ALL PRIVILEGES ON DATABASE sentry TO dbuser;  #授权dbuser可以对sentry库进行任何操作
修改密码的语句
alter user dbuser with password 'password';

pgsql登录好坑爹的,要先切到postgers用户,然后再运行pgsql(我的不知道为什么叫psql) 送一个pgsql的数据导入和导出操作语句

导出DB数据到file文件
pg_dump -h $host -p $port sentry  -W  > file
从file导入数据到DB
psql -U dbuser -h $yourhost -p $port -W  -d sentry -f file 

#redis和DB做好之后下来安装sentry 最直接的办法是用pip进行安装 可以指定版本

pip install sentry==your-version

安装前的依赖

yum install python-setuptools python-devel  libxslt1-devel  gcc libffi-devel libjpeg-devel libxml2-devel libxslt-devel libyaml-devel   libpqxx-devel

pip的安装

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

安装好之后可以这样查看sentry的版本

sentry --version
sentry --help   #查看所有支持的命令

#启动sentry sentry要启动有三个东西,web worker cron,据说是缺一不可,不过我看可以先启动web,后面两个补上就行了

启动的方式:

sentry run web
sentry run worker
sentry run cron

but,在启动之前需要先生产sentry的配置文件,也就是文档上说的初始化

sentry init
sentry  upgrade   

运行之后会在当前目录造出来两个文件 config.yml sentry.conf.py upgrade 命令用来在pgsql创建所需的表

根据自己的配置填好redis和pgsql的地址和密码就可以run web了

[Unit]
Description=Sentry Main Service
After=network.target

[Service]
Type=simple
User=sentry
Group=sentry
WorkingDirectory=/data/www/sentry
Environment=SENTRY_CONF=/etc/sentry
ExecStart=/usr/bin/sentry run web

[Install]
WantedBy=multi-user.targe

启动sentry.service,可以放systemd进行服务的启动

另外要注意尽量新创建一个sentry帐号,启动服务的使用用指定的普通帐号

关于nginx的配置,nginx代理服务到sentry会更加灵活一点

  server {
    listen   80;
    server_name sentry.com;
    access_log  /logs/nginx/sentry_access.log main;
    error_log   /logs/nginx/sentry_error.log;

    return 301 https://$server_name$request_uri;
  }

server {
	listen 443 ssl;
	server_name sentry.com;

	access_log  /logs/nginx/sentry_access.log main;
	error_log   /logs/nginx/sentry_error.log;

	ssl_certificate      /etc/nginx/ca/sentry.cer;
	ssl_certificate_key  /etc/nginx/ca/sentry.key;
	
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
	ssl_prefer_server_ciphers on;
	ssl_session_cache shared:SSL:128m;
	ssl_session_timeout 10m;

	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_timeout 0;
	proxy_read_timeout 5s;
	proxy_send_timeout 5s;
	send_timeout 5s;
	resolver_timeout 5s;
	client_body_timeout 5s;
	client_max_body_size 5m;
	client_body_buffer_size 100k;
	
	location /admin/ {
		deny all;
	}
	location / {
		proxy_pass        http://localhost:$sentry-port;
		add_header Strict-Transport-Security "max-age=31526000";
	}
	
	location ^~  /auth/login/ {
		allow $your-ip-address; 
		deny all;
		proxy_pass        http://localhost:$sentry-port/auth/login/;
        add_header Strict-Transport-Security "max-age=31536000";
	}
}

#关于错误

Please wait while we load an obnoxious amount of JavaScript.

You may need to disable adblocking extensions to load Sentry.

这个错误找了好多资料 有一个说是要执行sentry django collectstatic,生成static的相关文件 反正核心的意思是js和css静态资源无法加载,这个如果找不到文件,就上面的办法生成一下,如果能找到,考虑static的访问权限问题,nginx用的是nobody用户,sentry是sentry用户,中间的tmp文件和static文件,应该多多少少都会碰到权限问题。

sentry repair

这个命令很实用,可以修复一些简单的数据错误,但是也有可能修复不了

还有一个遗留的问题,sentry数据迁移之后,启动的新实例中老数据会丢失,不知道是怎么回事

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分布式系统和大数据处理

linux上配置ssh实现免密登录

当有多台服务器彼此进行通信时,可以通过使用ssh来免去输入密码的步骤。这篇文章将以两台服务器作为范例,演示如何通过ssh进行登录。

4692
来自专栏Linux驱动

Linux-kill命令(11)

kill:指定将信号发送给某个进程,常用来杀掉进程,可以通过ps、top命令来查看进程 在默认情况下: 采用编号为15的TERM信号。TERM信号将终止所有不能...

2285
来自专栏北京马哥教育

Linux运维人员共用root帐户权限审计

一、应用场景 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度。不出问题还好,出了问题,就很难找出源头。 这里...

4487
来自专栏Youngxj

bat锁机代码

2.7K9
来自专栏北京马哥教育

5分钟教你学会Django系统错误监控

django.utils.log.AdminEmailHandler为django处理系统日志发送邮件的handler

1743
来自专栏跟着阿笨一起玩NET

EntityFramework 连接数据库出错

本文转载:http://www.cnblogs.com/shuang121/archive/2012/03/19/2406121.html

1081
来自专栏北京马哥教育

批量管理自动化运维100台小规模服务器

---- 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命...

1.9K15
来自专栏云计算教程系列

如何使用Spiped在Ubuntu 16.04上加密到Redis的流量

Redis是一个开源键值数据存储,使用内存存储模型和可选的磁盘写入来实现持久性。它具有事务,发布/订阅消息传递模式以及其他功能之间的自动故障转移功能。Redis...

2510
来自专栏惨绿少年

SSH服务详解

第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Wo...

3360
来自专栏Samego开发资源

shell脚本加密 | shc

2843

扫码关注云+社区

领取腾讯云代金券