В данном мануале мы расскажем как установить Sentry на ОС Centos 7, причем сделать это быстро, правильно и надежно. Кроме того мы подготовим конфигурацию для Supervisor, с помощью которого будем управлять основными службами Sentry.
Итак, прежде всего установим все необходимые зависимости:
yum install epel-release -y yum install wget python-setuptools.noarch python2-pip.noarch python-devel.x86_64 libxslt.x86_64 libxslt-devel.x86_64 libxml2 libxml2-devel.x86_64 libzip libzip-devel libffi.x86_64 libffi-devel.x86_64 openssl-libs.x86_64 libpqxx libpqxx-devel libyaml libyaml-devel libjpeg libjpeg-devel libpng libpng12 libpng12-devel libpng-devel net-tools gcc gcc-c++ libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel -y
Sentry использует PostgreSQL в качестве базы данных, поэтому установим пакет postgresql с помощью команды:
yum install postgresql-server.x86_64 postgresql-contrib -y postgresql-setup initdb systemctl enable postgresql.service systemctl start postgresql.service
Так же для работы Senry необходим Redis, поэтому так же установим и его с помощью команды:
yum install redis -y systemctl enable redis.service systemctl start redis.service
Ну и конечно же нам необходимо установить Supervisor, с помощью которого мы будем контролировать работу Sentry:
yum install supervisor -y
systemctl enable supervisord.service
Теперь обновим pip:
pip install --upgrade pip
Пример результата выполнения команды выше:
root@sentry ~ $ pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
100% |████████████████████████████████| 1.4MB 597kB/s
Installing collected packages: pip
Found existing installation: pip 8.1.2
Uninstalling pip-8.1.2:
Successfully uninstalled pip-8.1.2
Successfully installed pip-19.3.1
Далее установим virtualenv для создания изолированного Python-окружения:
pip install -U virtualenv
Пример результата выполнения команды выше:
root@sentry ~ $ pip install -U virtualenv
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting virtualenv
Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
|████████████████████████████████| 3.4MB 4.3MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
Для того что бы обеспечить необходимый уровень безопасности, мы будем запускать Sentry под отдельно созданным для него пользователем, которого создадим командой:
useradd sentry
Все необходимые пакеты установлены, так что теперь приступим к настройке и для начала создадим базу данных sentrydb и пользователя базы данных sentry:
su - postgres psql template1 create user sentry with password 'ваш_сложный_пароль'; alter user sentry with superuser; create database sentrydb with owner sentry; \q exit
Пользователь и БД готовы, теперь авторизуемся под пользователем сентри командой:
su - sentry
Создаём виртуальное окружение в домашней директории пользователя sentry:
virtualenv /home/sentry/sentry_app
Активируем shell внутри окружения:
source /home/sentry/sentry_app/bin/activate
Теперь приступим к установке самого Sentry, для этого выполним команду:
pip install -U sentry
результат выполнения данной команды будет достаточно обьёным, будет установлена масса зависимостей, и сам процесс может занять до 5 минут, в зависимости от скорости интернета на вашем сервере, вывод будем примерно следующим:
Successfully built mmh3 email-reply-parser python-openid parsimonious loremipsum setproctitle python-u2flib-server sqlparse strict-rfc3339 django-jsonfield querystring-parser cssutils toronado PyYAML uwsgi django-crispy-forms functools32 requests-oauthlib simplejson hiredis petname exam olefile httplib2 billiard anyjson pycparser
Installing collected packages: djangorestframework, mmh3, email-reply-parser, python-openid, six, parsimonious, redis, rb, loremipsum, setproctitle, enum34, pycparser, cffi, ipaddress, cryptography, python-u2flib-server, sqlparse, lxml, more-itertools, attrs, py, funcsigs, pluggy, pytest, pytest-html, Django, milksnake, semaphore, qrcode, python-memcached, python-dateutil, croniter, PyJWT, urllib3, selenium, python-utils, progressbar2, certifi, sentry-sdk, strict-rfc3339, honcho, jmespath, docutils, botocore, olefile, Pillow, django-jsonfield, msgpack, unidiff, django-templatetag-sugar, django-picklefield, httplib2, oauth2, idna, chardet, pyOpenSSL, requests, mistune, percy, ua-parser, click, querystring-parser, cssutils, psycopg2-binary, pytz, amqp, anyjson, kombu, billiard, celery, django-sudo, statsd, symbolic, cssselect, toronado, PyYAML, uwsgi, redis-py-cluster, futures, s3transfer, boto3, django-crispy-forms, functools32, pytest-django, oauthlib, requests-oauthlib, simplejson, hiredis, petname, pbr, mock, structlog, BeautifulSoup, jsonschema, exam, sentry
Successfully installed BeautifulSoup-3.2.2 Django-1.6.11 Pillow-4.2.1 PyJWT-1.5.3 PyYAML-3.11 amqp-1.4.9 anyjson-0.3.3 attrs-19.3.0 billiard-3.3.0.23 boto3-1.4.5 botocore-1.5.70 celery-3.1.18 certifi-2019.9.11 cffi-1.13.1 chardet-3.0.4 click-6.7 croniter-0.3.30 cryptography-2.8 cssselect-1.1.0 cssutils-0.9.10 django-crispy-forms-1.4.0 django-jsonfield-0.9.13 django-picklefield-0.3.2 django-sudo-2.1.0 django-templatetag-sugar-1.0 djangorestframework-2.4.8 docutils-0.15.2 email-reply-parser-0.2.0 enum34-1.1.6 exam-0.10.6 funcsigs-1.0.2 functools32-3.2.3.post2 futures-3.3.0 hiredis-0.1.6 honcho-1.0.1 httplib2-0.14.0 idna-2.7 ipaddress-1.0.23 jmespath-0.9.4 jsonschema-2.6.0 kombu-3.0.35 loremipsum-1.0.5 lxml-4.4.1 milksnake-0.1.5 mistune-0.8.4 mmh3-2.3.1 mock-2.0.0 more-itertools-5.0.0 msgpack-0.6.2 oauth2-1.9.0.post1 oauthlib-3.1.0 olefile-0.46 parsimonious-0.8.0 pbr-5.4.3 percy-2.0.2 petname-2.0 pluggy-0.6.0 progressbar2-3.10.1 psycopg2-binary-2.7.7 py-1.8.0 pyOpenSSL-19.0.0 pycparser-2.19 pytest-3.5.1 pytest-django-2.9.1 pytest-html-1.9.0 python-dateutil-2.8.0 python-memcached-1.59 python-openid-2.2.5 python-u2flib-server-4.0.1 python-utils-2.3.0 pytz-2019.3 qrcode-5.3 querystring-parser-1.2.4 rb-1.7 redis-2.10.5 redis-py-cluster-1.3.4 requests-2.20.1 requests-oauthlib-0.3.3 s3transfer-0.1.13 selenium-3.141.0 semaphore-0.4.57 sentry-9.1.2 sentry-sdk-0.13.1 setproctitle-1.1.10 simplejson-3.8.2 six-1.10.0 sqlparse-0.1.19 statsd-3.1 strict-rfc3339-0.7 structlog-16.1.0 symbolic-6.1.4 toronado-0.0.11 ua-parser-0.7.3 unidiff-0.5.5 urllib3-1.24.2 uwsgi-2.0.18
После завершения процесса установки выполним инициализацию Sentry:
/home/sentry/sentry_app/bin/sentry init
Далее нам необходимо настроить файлы конфигураций Sentry, поэтому откроем первый конфиг файл:
nano /home/sentry/.sentry/sentry.conf.py
и изменим следующие строки, указав данные от пользователя бд и имя бд, которые мы создали выше:
… DATABASES = { 'default': { 'ENGINE': 'sentry.db.postgres', 'NAME': 'sentrydb', 'USER': 'sentry', 'PASSWORD': 'ваш_сложный_пароль', 'HOST': '127.0.0.1', 'PORT': '5432', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, } } …
так же отредактируем второй конфиг файл:
nano /home/sentry/.sentry/config.yml
указав данные для подключения к redis:
... redis.clusters: default: hosts: 0: host: 127.0.0.1 port: 6379 ...
Теперь нам необходимо настроить права доступа к PostgreSQL, что бы пользователь Sentry без проблем подключился к базе. Редактируем файл командой:
nano /var/lib/pgsql/data/pg_hba.conf
приводим его к следующему виду:
# TYPE DATABASE USER ADDRESS METHOD local all postgres peer # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 ident #host replication postgres ::1/128 ident
Перезапускаем PostgreSQL командой:
systemctl restart postgresql.service
Теперь выполним команду:
/home/sentry/sentry_app/bin/sentry upgrade
ВНИМАНИЕ
в процессе вам необходимо будет ввести email для супер пользователя.
Далее, нам необходимо настроить supervisor, который будет управлять службами Sentry, для этого отредактируем конфиг файл supervisr командой:
nano /etc/supervisord.conf
и в самом низу укажем следующее:
files = supervisord.d/*.conf
Тем самым, мы указываем, что в папке /etc/supervisord.d/ будут располагаться файлы конфигурации, которые необходимо учитывать при работе службы.
Создадим конфигурационный файл для управления службами Sentry командой
nano /etc/supervisord.d/sentry.conf
и вставим в него следующее содержимое:
[program:sentry-web] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run web autostart=true autorestart=true redirect_stderr=true user=sentry stdout_logfile=syslog stderr_logfile=syslog [program:sentry-worker] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run worker autostart=true autorestart=true redirect_stderr=true user=sentry stdout_logfile=syslog stderr_logfile=syslog startsecs=1 startretries=3 stopsignal=TERM stopwaitsecs=10 stopasgroup=false killasgroup=true [program:sentry-cron] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run cron autostart=true autorestart=true redirect_stderr=true user=sentry stdout_logfile=syslog stderr_logfile=syslog
Перезапустим supervisor и обновим его конфигурацию командами:
service supervisord restart supervisorctl reread supervisorctl update
Установка и настройка Sentry завершена. Теперь мы можем используя url вида:
http://ип_вашего_сервера:9000
войти в web-панель управления Sentry и подключить своё приложения для сбора ошибок.
UPD: обновлён список зависимостей при установке пакетов, благодарим Ивана Бордаковского за актуальную информацию.
0 Comments