Skip to content

Instantly share code, notes, and snippets.

@rocLv
Forked from bjmc/install_sentry.sh
Created February 25, 2019 06:23
Show Gist options
  • Save rocLv/8753f72070f01b4af39d642ff5c24a73 to your computer and use it in GitHub Desktop.
Save rocLv/8753f72070f01b4af39d642ff5c24a73 to your computer and use it in GitHub Desktop.
Basic setup script for installing Sentry (http://getsentry.com) + Redis on new Ubuntu 14.04 Amazon EC2 instance
#! /bin/bash
export RUN_AS='ubuntu';
export INSTALL_DIR='/var/www/sentry';
HOSTNAME='http://mysentry.example.com'; # No trailing slash
DB_HOST='something.rds.amazonaws.com';
DB_PORT='5432';
DB_USER='sentry';
DB_NAME='sentry';
DB_PASSWORD='DB_PASSWORD';
EMAIL_HOST='email-smtp.us-east-1.amazonaws.com';
EMAIL_PASSWORD='EMAIL_PASSWORD';
EMAIL_USER='EMAIL_USER';
EMAIL_PORT=465;
sudo apt-get install python-virtualenv libpq-dev python-dev supervisor redis-server;
sudo mkdir -p $INSTALL_DIR
sudo chown $RUN_AS:$RUN_AS $INSTALL_DIR
virtualenv $INSTALL_DIR
$INSTALL_DIR/bin/pip install sentry[postgres]
mkdir ~/.sentry/
cat << EOF > ~/.sentry/sentry.conf.py
# This file is just Python, with a touch of Django which means you
# you can inherit and tweak settings to your hearts content.
from sentry.conf.server import *
import os.path
CONF_ROOT = os.path.dirname(__file__)
DATABASES = {
'default': {
# You can swap out the engine for MySQL easily by changing this value
# to ``django.db.backends.mysql`` or to PostgreSQL with
# ``django.db.backends.postgresql_psycopg2``
# If you change this, you'll also need to install the appropriate python
# package: psycopg2 (Postgres) or mysql-python
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '$DB_NAME',
'USER': '$DB_USER',
'PASSWORD': '$DB_PASSWORD',
'HOST': '$DB_HOST',
'PORT': '$DB_PORT',
#If you're using Postgres, we recommend turning on autocommit
'OPTIONS': {
'autocommit': True,
}
}
}
# If you're expecting any kind of real traffic on Sentry, we highly recommend
# configuring the CACHES and Redis settings
###########
## CACHE ##
###########
# You'll need to install the required dependencies for Memcached:
# pip install python-memcached
#
# CACHES = {
# 'default': {
# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
# 'LOCATION': ['127.0.0.1:11211'],
# }
# }
###########
## Queue ##
###########
# See http://sentry.readthedocs.org/en/latest/queue/index.html for more
# information on configuring your queue broker and workers. Sentry relies
# on a Python framework called Celery to manage queues.
# You can enable queueing of jobs by turning off the always eager setting:
CELERY_ALWAYS_EAGER = False
BROKER_URL = 'redis://localhost:6379/1'
####################
## Update Buffers ##
####################
# Buffers (combined with queueing) act as an intermediate layer between the
# database and the storage API. They will greatly improve efficiency on large
# numbers of the same events being sent to the API in a short amount of time.
# (read: if you send any kind of real data to Sentry, you should enable buffers)
# You'll need to install the required dependencies for Redis buffers:
# pip install redis hiredis nydus
#
#SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'
#SENTRY_REDIS_OPTIONS = {
# 'hosts': {
# 0: {
# 'host': 'localhost',
# 'port': 6379,
# }
# }
# }
################
## Web Server ##
################
# You MUST configure the absolute URI root for Sentry:
SENTRY_URL_PREFIX = '$HOSTNAME' # No trailing slash!
# If you're using a reverse proxy, you should enable the X-Forwarded-Proto
# and X-Forwarded-Host headers, and uncomment the following settings
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# USE_X_FORWARDED_HOST = True
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
'workers': 3, # the number of gunicorn workers
'limit_request_line': 0, # required for raven-js
'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'},
}
#################
## Mail Server ##
#################
# For more information check Django's documentation:
# https://docs.djangoproject.com/en/1.3/topics/email/?from=olddocs#e-mail-backends
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '$EMAIL_HOST'
EMAIL_HOST_PASSWORD = '$EMAIL_PASSWORD'
EMAIL_HOST_USER = '$EMAIL_USER'
EMAIL_PORT = $EMAIL_PORT
EMAIL_USE_TLS = True
# The email address to send on behalf of
SERVER_EMAIL = 'notifications@sentry'
###########
## etc. ##
###########
# If this file ever becomes compromised, it's important to regenerate your SECRET_KEY
# Changing this value will result in all current sessions being invalidated
SECRET_KEY = 'soqoues4eJ6esikdacjodNguWV9jz6y2M+7LbRTkHjDSmt61iXgu3A=='
# http://twitter.com/apps/new
# It's important that input a callback URL, even if its useless. We have no idea why, consult Twitter.
TWITTER_CONSUMER_KEY = ''
TWITTER_CONSUMER_SECRET = ''
# http://developers.facebook.com/setup/
FACEBOOK_APP_ID = ''
FACEBOOK_API_SECRET = ''
# http://code.google.com/apis/accounts/docs/OAuth2.html#Registering
GOOGLE_OAUTH2_CLIENT_ID = ''
GOOGLE_OAUTH2_CLIENT_SECRET = ''
# https://github.com/settings/applications/new
GITHUB_APP_ID = ''
GITHUB_API_SECRET = ''
# https://trello.com/1/appKey/generate
TRELLO_API_KEY = ''
TRELLO_API_SECRET = ''
# https://confluence.atlassian.com/display/BITBUCKET/OAuth+Consumers
BITBUCKET_CONSUMER_KEY = ''
BITBUCKET_CONSUMER_SECRET = ''
EOF
sudo -E bash -c 'cat << EOF > /etc/supervisor/conf.d/sentry.conf
[program:sentry-web]
user=$RUN_AS
directory=$INSTALL_DIR
command=$INSTALL_DIR/bin/sentry start
autostart=true
autorestart=true
redirect_stderr=true
[program:sentry-worker]
user=$RUN_AS
directory=$INSTALL_DIR
command=$INSTALL_DIR/bin/sentry celery worker -B
autostart=true
autorestart=true
redirect_stderr=true
EOF'
sudo bash -c 'echo "maxmemory 1gb" >> /etc/redis/redis.conf';
sudo bash -c 'echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf';
sudo service redis-server restart;
sudo service supervisor restart;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment