Сервисы API Oz
Системные требования
- Любая операционная система, поддерживаемая Docker, и установленный на ней версия Docker.
- CPU: 4x cores
- RAM: 8Gb
- Disk 250Gb+:
- 50 Гб — для операционной системы
- от 100 Гб — для базы данных Postgres
- от 100 Гб — для клиентских медиа-файлов
Дополнительные требования
- Локальная установка nginx. Ниже приведена рекомендуемая конфигурация.
- Доменное имя, связанное с текущим IP-адресом.
- SSL-сертификат, связанный с доменным именем.
- Доступный внешний порт 443 для HTTPS-доступа.
- Все шаги по подготовке и настройке конфигурации выполняются от имени привилегированного пользователя.
Примечание. Доменное имя, SSL-сертификат и порт 443 не потребуются для тестирования в локальной сети.
Пошаговое описание установки
Вход в Docker Hub
Получите персональный токен Docker Hub для входа в частный репозиторий.
docker login -u ozcustomer -p your_token_here docker.io
Скачайте и запустите образ последней версии продукта
docker pull ozforensics/oz-api
Подготовьте файлы конфигурации и каталоги
Каталоги
Создайте корневой каталог для данных в своей системе. Здесь и далее мы будем исходить из того, что используется каталог по умолчанию /opt/oz.
mkdir -p /opt/oz/postgres
chown -R 999 /opt/oz/postgres
Запустите Postgres
docker run --restart unless-stopped --name oz-api-pg \
-v /opt/oz/postgres:/var/lib/postgresql/data
-e POSTGRES_PASSWORD=CHANGEME postgres:13
Примечание. Как правило, вместо контейнера Docker можно использовать установленный локально экземпляр Postgres, следуя тем же инструкциям, которые приведены ниже.
Запустите API
docker run -d --name oz-api --restart unless-stopped --privileged=true \
--mount source=oz-api-nginx-vol,destination=/etc/nginx/sites-enabled \
--mount source=oz-api-config-vol,destination=/opt/gateway/configs \
--mount source=oz-api-static-vol,destination=/opt/gateway/static \
--mount source=oz-api-log-vol,destination=/opt/gateway/log \
--link oz-api-pg \
-p 8000:8000 \
ozforensics/oz-api
Примечание. Удалите строку со ссылкой oz-api-pg, если экземпляр Postgres установлен локально, просто укажите правильное имя хоста вашей машины в настройке DB_HOST ниже.
Каталоги API Oz
После успешного запуска интерфейса 1 будет создано несколько связанных с ним томов каталогов. Вы найдете их по адресу /var/lib/docker/volumes:Several volumes related directories will be created afteroz-api succesfully started. You will find it at /var/lib/docker/volumes:
- oz-api-nginx-vol — файл конфигурации для внутреннего сервера nginx
- oz-api-config-vol — общие файлы конфигурации
- oz-api-static-vol — медиа-данные
- oz-api-log-vol — внутренние системные журналы. Актуальные данные вы найдете в подкаталогах inside _data. Ниже приведены подробные сведения о конфигурации.
Внимание! Необходимо следить за каталогом oz-api-static-vol, объем которого может расти неограниченно, при каждом запросе на анализ увеличиваясь на 10 Мб. При желании вы можете изменить место сохранения тома, указав другую команду для запуска docker
:
docker run -d --name oz-api --restart unless-stopped --privileged=true \
--mount source=oz-api-nginx-vol,destination=/etc/nginx/sites-enabled \
--mount source=oz-api-config-vol,destination=/opt/gateway/configs \
--mount source=oz-api-log-vol,destination=/opt/gateway/log \
--mount type=volume,dst=/opt/gateway/static,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/media/big-storage
--link oz-api-pg \
-p 8000:8000 \
ozforensics/oz-api
где /media/big-storage — альтернативное хранилище.
Файлы конфигурации
Большинство настроек по умолчанию не требуют изменений. Необходимо настроить только несколько обязательных параметров.
oz-api-nginx-vol/_data/api.conf — конфигурация внутреннего сервера nginx. Укажите server_name с доменным именем вашего хоста или просто set _ (нижнее подчеркивание).
oz-api-config-vol/_data/config.py — этот файл содержит глобальные переменные для использования API. Настройки конфигурации см. в дополнительной информации. Необходимо правильно указать следующие переменные:
- ALLOWED_HOSTS - добавьте в список ваше доменное имя.
- DB_HOST, DB_USER, DB_PASS - измените, если вы планируете переместить контейнер oz-api-pg или используете собственную сборку базы данных
- OZ_SERVICE_TFSS_HOST - укажите адрес вашего хоста сервисов Oz Bio. Пример адреса: http://oz-bio-tfss:8501/v1/
Для применения настроек необходимо перезапустить контейнер oz-api:
docker restart oz-api
Подготовка и запуск базы данных
Создать базу данных можно двумя способами:
- распаковать и использовать демонстрационную версию базы данных
- перестроить пустую базу данных
Использование демонстрационной версии базы данных
Используйте этот метод, если вы получили индивидуальный архив с базой данных: oz-api-pg-data-COMPANY-NAME.tar.gz Просто распакуйте архив в созданный перед этим каталог. При этом содержимое каталога базы данных будет переписано.
cd /opt/oz
tar -zxvf oz-api-pg-data-COMPANY-NAME.tar.gz
Построитель базы данных
Для сборки своей базы данных вы должны запустить несколько скриптов. Предполагается, что у вас запущены оба контейнера oz-api и oz-api-pg. После выполнения вы получите учетные данные:
- имя для входа в шлюз базы данных:
- имя: gateway_user
- пароль: CHANGEUSERPASS
- Данные для входа в API Oz (с правами администратора):
- имя: demo@ozforensics.com
- пароль: 123456 Вы в любой момент можете отредактировать скрипт, чтобы изменить эти данные по умолчанию. Чтобы изменения вступили в силу, следует перезапустить контейнер oz-api.
Создайте базу данных:
docker exec -ti oz-api-pg bash
su postgres
psql
\c postgres
DROP DATABASE gateway;
DROP ROLE gateway_user;
CREATE ROLE gateway_user WITH LOGIN PASSWORD 'CHANGEUSERPASS'
INHERIT
CONNECTION LIMIT -1
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOREPLICATION ;
CREATE DATABASE gateway
WITH OWNER = gateway_user
ENCODING = 'UTF8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1
LC_COLLATE='en_US.UTF-8'
LC_CTYPE='en_US.UTF-8'
TEMPLATE template0;
\c gateway
CREATE EXTENSION pgcrypto;
\q
exit
exit
Создайте таблицы API и встроенную учетную запись администратора:
docker exec -ti oz-api bash
su oz
cd /opt/gateway/
source env/bin/activate
python manage.py alchemy_create oz_core
python manage.py alchemy_create lamb.execution_time
python manage.py oz_create_admin --email=demo@ozforensics.com --password=123456
exit
exit
Создайте дополнительные индексы:
docker exec -ti oz-api-pg bash
su postgres
psql
\c gateway
CREATE INDEX IF NOT EXISTS gw_folder_time_created_idx ON gw_folder(time_created DESC);
CREATE INDEX IF NOT EXISTS gw_folder_time_created_folder_id_idx ON gw_folder(time_created DESC, folder_id DESC);
CREATE INDEX IF NOT EXISTS gw_folder_time_created_nonarchive_idx ON gw_folder(time_created DESC) WHERE is_archive = FALSE;
CREATE INDEX IF NOT EXISTS gw_folder_time_created_folder_id_nonarchive_idx ON gw_folder(time_created DESC, folder_id DESC) WHERE is_archive = FALSE;
CREATE INDEX IF NOT EXISTS gw_folder_resolution_comment_fts_idx ON gw_folder
USING GIN (to_tsvector('english', resolution_comment));
CREATE INDEX IF NOT EXISTS gw_analyse_source_media_association_analyse_id_idx ON gw_analyse_source_media_association
USING BTREE(analyse_id);
CREATE INDEX IF NOT EXISTS gw_folder_image_folder_id_idx ON gw_folder_image
USING BTREE(folder_id);
CREATE INDEX IF NOT EXISTS gw_folder_video_folder_id_idx ON gw_folder_video
USING BTREE(folder_id);
CREATE INDEX IF NOT EXISTS gw_analyse_abstract_folder_id ON gw_analyse_abstract
USING BTREE(folder_id);
CREATE INDEX IF NOT EXISTS gw_analyse_result_image_media_association_id_idx ON gw_analyse_result_image
USING BTREE(media_association_id);
CREATE INDEX IF NOT EXISTS gw_logging_event_session_time_created_idx ON gw_logging_event_session(time_created);
CREATE INDEX IF NOT EXISTS gw_logging_event_record_time_created_idx ON gw_logging_event_record(time_created);
CREATE INDEX IF NOT EXISTS gw_logging_event_record_session_id_idx ON gw_logging_event_record(session_id);
CREATE INDEX IF NOT EXISTS gw_logging_event_record_timemark_idx ON gw_logging_event_record(timemark);
\q
exit
exit
Перезапустите с новыми данными:
docker restart oz-api
Дополнительные инструкции
Пример конфигурации хоста nginx
Примечание. Используйте эту конфигурацию только при наличии доступа через Интернет.
Вставьте приведенный блок в раздел http
файла nginx.conf
. Перед тем как выполнять эту операцию, подготовьте ключи SSL.
server {
listen 443 ssl http2 default_server;
ssl_certificate "/etc/nginx/cert/fullchain.cer";
ssl_certificate_key "/etc/nginx/cert/your-server-name.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
client_max_body_size 50M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:8000/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
}
Проверка доступности API
Просто откройте в браузере адрес: https://your-server-name/api/version для тестирования через Интернет или http://your-server-name:8000/api/version для тестирования в локальной сети.
Тестирование при помощи мобильного приложения
1. Скачайте демонстрационную версию мобильного приложения из набора демонстрационных средств.
2. Укажите адрес своего сервера при помощи доменного имени или IP-адреса.
-
3. Используйте предварительно заданные учетные данные для входа:
- login: demo@ozforensics.com
- password: 123456
После выполнения входа попробуйте выполнить команду «селфи» или любой другой жест.
Приятной работы!