Для установки RT.DataVision на серверном оборудовании предъявляются следующие системные требования в части поддерживаемых операционных систем:
Поскольку подключение пользователей к RT.DataVision выполняется с помощью веб-приложения, специальных системных требований к клиентскому оборудованию не предъявляется.
На клиентском оборудовании могут использоваться различные версии Windows, Linux и Mac OS X. На операционной системе должен быть установлен поддерживаемый браузер: любой (например, Mozilla Firefox, Google Chrome и прочие), за исключением Internet Explorer (этот браузер не поддерживается RT.DataVision).
Для установки серверной части RT.DataVision предъявляются следующие минимальные требования к оборудованию:
Специальных требований к клиентскому оборудованию не предъявляется.
• Подготовленный Linux сервер (CentOS 7, RedOS 7.3, RedOS 7.3.x)
• Установленный RT.ClusterManager
• Загруженные на него плагины RT.DataVision и RT.System
• Добавленный ssh-ключ
• Созданный в CM провайдер (плагин RT.System)
• Созданный в CM кластер (на 1 сервер)
Важно: Установка datavision на тот же сервер что и RT.CM не рекомендуется.
В rtcm → Кластеры → <наш_кластер> → Конфигурация → Version (вкладка superset) - убедится, что стоит версия не ниже 1.5.2
Порядок установки:
1. postgresql
2. nginx
3. redis
4. datavision
После установки проверить доступность сервиса
http://<datavision_server>:80
login: datavison
pass: datavision
Внимание. Развёртывание RT.DataVision осуществляется с использованием одного из двух репозиториев.
Используйте корректный репозиторий:
- Внутренний репозиторий repo.data.rt.ru — если вы устанавливаете RT.DataVision из внутренней сети ПАО “Ростелеком”.
- Внешний репозиторий vm-dcp-repo-int.dh.rt.ru — если вы разворачиваете RT.DataVision из интернета.
RT.DataVision хранит информацию о подключении к базе данных в своей БД метаданных. Для этого используется криптографическая библиотека Python для шифрования паролей подключения. Данная библиотека имеет зависимости на уровне ОС:
1. Debian и Ubuntu: Следующая команда обеспечит установку необходимых зависимостей:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
Для Ubuntu 20.04 используйте следующую команду, которая обеспечит установку необходимых зависимостей:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
2. Fedora, RedOS и RHEL-производные дистрибутивы Linux: Установите следующие пакеты с помощью менеджера пакетов yum:
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
bzip2-devel xz-devel zlib-devel sqlite-devel
В более поздних версиях CentOS и Fedora вам может потребоваться установить другой набор пакетов с помощью dnf:
sudo dnf install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
bzip2-devel xz-devel zlib-devel sqlite-devel
3. Mac OS X: Если вы не используете последнюю версию Mac OS X, рекомендуется выполнить обновление, поскольку многие проблемы, с которыми сталкиваются пользователи RT.DataVision, связаны с более старыми версиями Mac OS X. После обновления Mac OS X установите последнюю версию инструментов командной строки XCode:
xcode-select --install
Установите менеджер homebrew, а затем выполните следующие команды:
brew install readline pkg-config libffi openssl mysql postgres
Затем установите версию Python, совместимую с устанавливаемой версией RT.DataVision:
Рекомендуется использовать менеджер виртуальных окружений Python, такой как pyenv (а также pyenv-virtualenv). Также убедитесь, что установлена последняя версия pip и setuptools:
pip3 install --upgrade setuptools pip
Наконец, вам может понадобиться установить LDFLAGS и CFLAGS для определённых пакетов Python для корректной сборки. Экспортируйте эти переменные с помощью:
export LDFLAGS="-L$(brew --prefix openssl)/lib"
export CFLAGS="-I$(brew --prefix openssl)/include"
После этого они будут доступны при установке требований к pip.
Рекомендуется собирать Python из исходников на целевой машине, а не использовать предустановленные версии.
Вы можете собрать и установить Python из исходников командой ниже. Доступные версии для сборки: 3.9.1 и 3.11.8.
Чтобы изменить версию Python для сборки и установки, замените значение переменной окружения в первой строке команды на нужную. В примере введена версия 3.9.1, которая может использоваться для установки любой версии продукта.
Вместо LOGIN и PASSWORD во второй строке команды подставьте ваши учётные данные от репозитория, выданные вам.
export PYTHON_VER_INSTALL=3.9.1 && \
wget https://LOGIN:PASSWORD@repo.data.rt.ru/repository/RT.DataVision-raw/raw/Python-${PYTHON_VER_INSTALL}.tgz && \
tar -xf Python-${PYTHON_VER_INSTALL}.tgz && \
cd Python-${PYTHON_VER_INSTALL} && \
./configure --enable-optimizations && \
sudo make altinstall && \
rm -rf Python-${PYTHON_VER_INSTALL} && \
rm -rf Python-${PYTHON_VER_INSTALL}.tgz
Рекомендуется устанавливать RT.DataVision внутри виртуальной среды. Python поставляется с virtualenv из коробки. Если вы используете pyenv, вы можете установить pyenv-virtualenv. Или вы можете установить его с помощью pip:
pip install virtualenv
Создайте и активируйте виртуальную среду, используя команду:
# virtualenv поставляется с Python 3.6+ в качестве venv взамен pyvenv.
# Здесь представлено описание venv: https://docs.python.org/3.6/library/venv.html
python3 -m venv venv
. venv/bin/activate
Или с использованием pyenv-virtualenv:
# Здесь мы называем виртуальную среду 'rt.datavision'
pyenv virtualenv rt.datavision
pyenv activate rt.datavision
Как только вы активируете виртуальную среду, все пакеты Python, которые вы устанавливаете или удаляете, будут ограничены этой средой. Вы можете выйти из среды, запустив deactivate в командной строке.
Перед установкой продукта нужно указать подключение к публичному репозиторию для загрузки из него пакетов:
pip config --user set index https://user:pass@repo.data.rt.ru/repository/RT.DataVision-pypi/ && \
pip config --user set index-url https://user:pass@repo.data.rt.ru/repository/RT.DataVision-pypi/simple && \
pip config --user set trusted-host repo.data.rt.ru
Вместо user и pass в первых двух командах укажите выданный вам логин и пароль от репозитория.
Для корректного развёртывания и инициализации RT.DataVision последовательно выполните шаги:
1. Сначала установите rt.datavision:
pip install rt.datavision
2. Экспортируйте Flask:
export FLASK_APP=superset
3. Затем инициализируйте базу данных:
superset db upgrade
4. Создайте роли и права по умолчанию:
superset init
5. Создайте пользователя admin в БД метаданных (используйте `admin` в качестве имени пользователя, чтобы иметь возможность загружать примеры):
superset fab create-admin
6. Загрузите пример данных для тестирования:
superset load_examples
7. Запустите RT.DataVision:
gunicorn --access-logfile - --workers 5 --bind http://localhost:5000 "superset.app:create_app()" -e SUPERSET_CONFIG_PATH=путь_до_конфигу
8. Если все шаги выполнены корректно, вы сможете перейти на hostname:port в браузере (например, локально по умолчанию на localhost:8088) и войти в RT.DataVision, используя имя пользователя и пароль, которые вы создали.
В продуктивной среде рекомендуется разворачивать RT.DataVision через установку Nginx и создание демона datavision, как описано в данном пункте.
Чтобы развернуть RT.DataVision с помощью Nginx, последовательно выполните шаги:
1. Настройте Nginx:
sudo systemctl status nginx
CentOS/RedOS:
sudo yum install nginx
Debian/Ubuntu:
sudo apt install nginx
touch /etc/nginx/conf.d/datavision.conf
server {
listen 80;
server_name some.datavision.host.ru 10.13.23.111;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://unix:/run/datavision.sock;
proxy_redirect default;
}
}
Пояснения к параметрам конфигурации:
sudo systemctl restart nginx
2. Настройте демона RT.DataVision:
touch /etc/systemd/system/datavision.socket && touch /etc/systemd/system/datavision.service
[Unit]
Description=RT.Datavision Socket
[Socket]
ListenStream=/run/datavision.sock
[Install]
WantedBy=sockets.target
[Unit]
Description=RT.DataVision daemon
Requires=datavision.socket
After=network.target
[Service]
User=some_user
Group=some_group
WorkingDirectory=/path/to/rt.datavision/work_directory/
ExecStart=/path/to/gunicorn \
--access-logfile - \
--workers 5 \
--bind unix:/run/datavision.sock \
"superset.app:create_app()" \
-e SUPERSET_CONFIG_PATH=/path/to/datavision/config.py
[Install]
WantedBy=multi-user.target
Пояснения к файлу datavision.service:
sudo systemctl daemon-reload
sudo systemctl enable datavision
sudo systemctl start datavision
Если всё выполнено корректно, то RT.DataVision будет доступен извне по порту Nginx.
Для развёртывания RT.DataVision с помощью Docker Compose выполните:
1. Установите Docker, который содержит движок Docker и последнюю версию docker compose из коробки, в соответствии с используемой ОС.
2. Загрузите установочный архив RT.DataVision из репозитория:
wget https://vm-dcp-repo-int.dh.rt.ru/repository/RT.DataVision-raw/docker/rtdv-docker.tar.gz
И распакуйте его в отдельную директорию:
mkdir rtdv-docker && tar -xf rtdv-docker.tar.gz -C rtdv-docker
После успешного выполнения команды вы должны увидеть новый каталог со следующим составом файлов:
3. Сконфигурируйте RT.DataVision. Для тестового запуска будет достаточно:
openssl rand -base64 42
Описание параметров environment-файла datavision.env:
# First admin credentials
ADMIN_USERNAME=admin - Имя пользователя первого администратора
ADMIN_PASSWORD=admin - Пароль первого администратора
ADMIN_EMAIL=admin@datavision.rt.ru - Адрес почты первого администратора
ADMIN_FIRSTNAME=Datavision - Имя первого администратора
ADMIN_LASTNAME=Admin - Фамилия первого администратора
# Datavision server configuration
DATAVISION_VERSION=1.1.1 - Версия RT.DataVision
DATAVISION_LOAD_EXAMPLES=no - Загрузить ли при следующем запуске демо-данные (yes/no)
DATAVISION_BIND_ADDRESS=0.0.0.0 - IP-адрес, на которой биндить сервер RT.DataVision
DATAVISION_PORT=8088 - Порт, на который биндить сервер RT.DataVision
ACCESS_LOG_FILE=- - Путь до access лог-файла
ERROR_LOG_FILE=- - Путь до error лог-файла
SERVER_WORKER_AMOUNT=1 - Количество воркеров
SERVER_WORKER_CLASS=gthread - Класс воркеров (не стоит менять без необходимости)
SERVER_THREADS_AMOUNT=20 - Количество тредов (не стоит менять без необходимости)
GUNICORN_TIMEOUT=60
GUNICORN_KEEPALIVE=2
WORKER_MAX_REQUESTS=0
WORKER_MAX_REQUESTS_JITTER=0
SERVER_LIMIT_REQUEST_LINE=0
SERVER_LIMIT_REQUEST_FIELD_SIZE=0
4. Запустите RT.DataVision через Docker Compose:
docker compose --env-file datavision.env up -d
Дождитесь выполнения команды. RT.DataVision будет доступен по IP-адресу и порту, указанным в environment-файле datavision.env.
Примечание. Если в ходе развёртывания требуется изменить версию RT.DataVision, выполните:
- Укажите корректную версию в переменной DATAVISION_VERSION в файле datavision.env.
- Перезапустите RT.DataVision командой docker compose --env-file datavision.env down && docker compose --env-file datavision.env up -d
После завершения установки RT.DataVision выполните его конфигурирование в соответствии с Инструкцией администратора.