Переехавши на новый сервер, перетаскиваю туда всякие разные полезные сервисы. Что-то будет скопировано целиком, что-то ставлю заново. Вот sentry, систему для сбора всяческих ошибок (как со стороны сервера, так и клиента), решил переставить новую. Тем более, что со старой версией мой grails-raven не работал.
Дано: практически голый debian 7, есть правда postgresql, nginx, python 2.7.
Для начала мы создадим пользователя sentry и поставим несколько важных и полезных пакетов.
apt-get install redis-server memcached postgresql-server-dev-9.1 python-setuptools python-dev screen
useradd -d /home/sentry.domain.ru sentry
easy_install -UZ virtualenvДальше было настроено несколько "редисок", штука же полезная. Для этого был скопирован /etc/init.d/redis-server в /etc/init.d/redis-server2 и /etc/init.d/redis-server3, а также /etc/redis/redis.conf в /etc/redis/redis2.conf и /etc/redis/redis3.conf. Везде мы правим pid, имя файла с дампом базы, и порт. Ну и логи, куда же без них. Например, релевантная часть redis3.conf выглядит так:
dir /var/lib/redis # The filename where to dump the DB dbfilename dump3.rdb port 6381 pidfile /var/run/redis/redis-server3.pid logfile /var/log/redis/redis-server3.log
Как пользователь postgres, создадим нового пользователя БД sentry, с правом создания баз данных, но без прав суперпользователя и без прав создания новых пользователей.
su - postgres
createuser sentry
logoutПосле этого переключаемся на нового пользователя, sentry :). Я делал это уже по ssh, а не через su.
createdb sentry
virtualenv sentry
source sentry/bin/activate
cd sentry/
easy_install -UZ sentry
bin/sentry init
vim ~/.sentry/sentry.conf.py
easy_install -UZ psycopg2
easy_install -UZ redis
easy_install -UZ nydus
easy_install -UZ python-memcached
screen -d -m ~/sentry/bin/sentry start --verbosity=3 -w 5
Процитирую релевантную часть конфига:
DATABASES = {
'default': {
# package: psycopg2 (Postgres) or mysql-python
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'sentry', # os.path.join(CONF_ROOT, 'sentry.db'),
'USER': 'sentry',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': ['127.0.0.1:11211'],
}
}
BROKER_URL = 'redis://localhost:6381'
SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'
SENTRY_BUFFER_OPTIONS = {
'hosts': {
0: {
'host': '127.0.0.1',
'port': 6381,
}
}
}
SENTRY_KEY = '================ a very big secret =='
SENTRY_URL_PREFIX='http://s.domain.ru'
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
'workers': 5, # the number of gunicorn workers
'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'},
}Всё на удивление работает, правда возникают проблемы при использовании SENTRY_USE_QUEUE = True, пришлось закомментировать и теперь всё работает. Проверить можно, подключившись к 9000 порту сервера. Но понятное дело, этого нам недостаточно, и теперь мы идём настраивать nginx. Проще пареной репы:
server {
listen 80;
server_name s.domain.ru;
error_log /var/log/nginx/s.domain.ru.error_log;
location / {
proxy_pass http://localhost:9000;
}
}И оно работает!