Created
June 26, 2014 01:32
-
-
Save bjmc/31edaf9f8b84e9f410c5 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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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