Установка Sentry + Apache + Mysql

Материал из Wiki МИАЦ ВО
Версия от 09:58, 15 апреля 2014; Misha (обсуждение | вклад) (Настройка supervisord)
Перейти к навигации Перейти к поиску

Статья еще не дописана
Итак начнем. За основу взята статья.

Установка пакетов

Для работы Sentry нужно

  1. Python 2.5, 2.6, or 2.7
  2. python-setuptools, python-dev
  3. База данных (PostgreSQL предпочтительнее, MySQL - тоже работает)
  4. A UNIX-based operating system

Считаем,что mysql уже установлен. Если нет, то читаем и устанавливаем LAMP.
Устанавливаем недостающие пакеты для Python.

sudo apt-get install python-mysqldb python-dev build-essential libmysqlclient-dev python-setuptools

Создание пользователя

Мы будем запускать Sentry из под пользователя sentry

sudo adduser sentry

Входим в систему под пользователем sentry

su sentry

Настройка среды

В первую очередь нам надо поставить пакет Python virtualenv. Если Вы его устанавливали, то пропускаем этот шаг, если нет то устанавливаем:

sudo easy_install -UZ virtualenv

После его установки выбираем место, куда будем устанавливать Sentry с помощью команды virtualenv. Например в папку /var/www/html/sentry/:

virtualenv /home/sentry/sentry/

И активируем virtualenv:

source /home/sentry/sentry/bin/activate

Примечание: Активация среды устанавливает путь для установки с помощью easy_install по умолчанию.

Установка Sentry

Как только вы установили окружение, вы можете установить Sentry и все его зависимости той же командой, который вы указывали установить virtualenv:

easy_install -UZ sentry

Не беспокойтесь за зависимости, которые имеет Sentry. Наша философия - использовать правильные инструменты для работы, а не изобретать их, если они уже существуют.

Использование MySQL or Postgres

Мы очень рекомендуем использовать PostgreSQL Для Вашей базы данных, или MySQL, если у Вас нет другого выбора. По умолчанию используется sqlite. Если Вы используете MySQL, Вы должны использовать InnoDB таблицы.

Базы данных требуют дополнительные пакеты, но Sentry создала мега пакеты, для более простой установки:

# install sentry and its postgresql dependencies
easy_install -UZ sentry[postgres]
# or if you choose, mysql
easy_install -UZ sentry[mysql]

Но Мы будем иcиспользовать Mysql, поэтому дальше все о нем.

Инициализация конфигурации

Создаем конфигурацию по умолчанию. Для этого используем команду init. По умолчанию используется файл ~/.sentry/sentry.conf.py. Мы же будем использовать /etc/sentry.conf.py

# the path is optional
sentry init /home/sentry/.sentry/sentry.conf.py

Конфигурация для сервера базируется на файле sentry.conf.server, который включает базовую конфигурацию проекта Django. Он включает в себя SQLite, который не полностью поддерживается Sentry и его нельзя использовать на рабочем сервере.
Редактируем файл /etc/sentry.conf.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'sentry',
        'USER': 'sentry_user',
        'PASSWORD': 'passwd_db',
        'HOST': 'localhost',
        'PORT': '',

    }
}

# You MUST configure the absolute URI root for Sentry:
SENTRY_URL_PREFIX = ''  # Оставте пустым.

ALLOWED_HOSTS = ['localhost:9000']

SECRET_KEY = '1234567890asdfghjklnbvc'


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'},
}

Подключаемся к консоли MySQL под рутом.

$ mysql -u root -p

Создаем базу данных sentry.

mysql> CREATE DATABASE sentry;

Добавляем пользователя sentry_user для новой базы данных. Назначаем ему пароль passwd_db и даем доступ к базе только с самого сервера (localhost).

mysql> GRANT ALL PRIVILEGES ON sentry.* TO sentry_user@localhost IDENTIFIED BY 'passwd_db';

Конфигурация почтового ящика для отправки почты

Нужно установить несколько параметров, являющиеся частью Django framework, которые будут отвечать за связь с Вашим почтовым сервером. При использовании простого SMTP сервера, Вам надо изменить следующие строки:

EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = ''
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_USE_TLS = False

Тк Django это pluggable framework, у вас также есть возможность указать различные программы (backends)почты. См. официальную документацию Django для получения дополнительной информации об альтернативных возможностях.

Запуск миграции

Sentry обеспечивает простой способ для запуска миграции в базе данных при обновлений версий . Перед запуском его в первый раз, вы должны убедиться, что вы создали базу данных.
Для создания первоначальной структуры , используйте команду обновления:

sentry --config=/home/sentry/.sentry/sentry.conf.py upgrade

Это очень важно , что вы создаете superuser по умолчанию в процессе обновления. Если этого не сделать , есть хороший шанс, что у Вас будут вопросы в процессе установки.

Если вы не создать пользователя при первом запуске , вы можете исправить это , выполнив следующие действия:

# Создать нового пользователя
sentry --config=/home/sentry/.sentry/sentry.conf.py createsuperuser
# Запустить скрипт восстановлению
sentry --config=/home/sentry/.sentry/sentry.conf.py repair --owner=<username>

Все изменения схемы (настроек) и обновления базы данных обрабатываются с помощью команды обновления , и это первое, что вы должны сделать, чтобы запустить обновление до будущих версий Sentry.

Запуск веб-сервиса

У Sentry есть встроенный веб сервер (поддерживаемый gunicorn и eventlet), также вы можете установить Sentry как WSGI приложения, в таком случае перейдите к разделу Запуск Sentry как WSGI приложения.

Чтобы запустить веб-сервер, вы просто используете sentry start.

# Сервер Sentry работает на порту 9000 по умолчанию.
sentry --config=/home/sentry/.sentry/sentry.conf.py start

Теперь вы можете проверить веб-службу, посетив http://localhost:9000/.

Настройка Reverse Proxy

По умолчанию Sentry работает на порту 9000. Даже если вы изменить его, в нормальных условиях вы не сможете привязать его к порту 80. Чтобы обойти эту проблему (и, чтобы избежать запуска Sentry в качестве привилегированного пользователя, что вы не должны ), мы рекомендуем вам настроить простой веб-прокси.

Передача данных через прокси с Apache

Apache требует использования mod_proxy для экспедиторских запросов. Устанавливаем недостающие модули.

sudo a2enmod proxy_balancer
sudo a2enmod headers
sudo a2enmod proxy_http
sudo service apache2 restart

Создаем файл /etc/apache2/sites-enabled/sentry.conf

<VirtualHost *:80>
  ProxyPass / http://localhost:9000/
  ProxyPassReverse / http://localhost:9000/
  ProxyPreserveHost On
  RequestHeader set X-Forwarded-Proto "https" env=HTTPS
  ServerName sentry.domain.ru
  ServerAlias sentry.domain.ru
  ErrorLog /var/log/apache2/sentry-error_log
  CustomLog /var/log/apache2/sentry-access_log common
</VirtualHost>

Прописываем Sentry в DNS (или в /etc/hosts - для проверки), перезапускаем сервисы

sudo service apache2 restart
sudo service bind9 restart

И можем зайти на Sentry через браузер.

Запуск Sentry сервисом

Вы можете использовать любое программное обеспечение, с которым вы лучше всего знакомы с для управления сервисом Sentry. Мы считаем, что лучше всего использовать Supervisor.

Настройка supervisord

Устанавливаем supervisor

sudo apt-get install supervisor

Создаем файл /etc/supervisor/conf.d/sentry.conf

[program:sentry-web]
directory=/home/sentry/sentry/
user=sentry
command=/home/sentry/sentry/bin/sentry  start http
autostart=true
autorestart=true
redirect_stderr=true

И перезапустите службу

sudo service supervisor restart