Пошаговое развертывание из apt-репозитория
Данный раздел содержит подробную информацию о пошаговом развертывании компонентов FindFace. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.
Совет
Сначала обязательно ознакомьтесь с архитектурой FindFace.
В этом разделе:
Установка apt-репозитория
Прежде всего установите apt-репозиторий FindFace следующим образом:
Загрузите файл инсталлятора
findface-*.run
.Поместите файл
.run
в любой каталог на сервере установки (например,/home/username
).Из данного каталога сделайте файл
.run
исполняемым.Примечание
Вместо
findface-*
укажите актуальное имя файла.chmod +x findface-*.run
Запустите файл
.run
.sudo ./findface-*.run
Инсталлятор задаст вам несколько вопросов, после чего проверит, соответствует ли сервер системным требованиям. Ответьте на вопросы надлежащим образом, после ответа каждый раз нажимая Enter. Вопросы и ответы следующие:
В:
Which product should be installed?
(Какой продукт следует установить?)О:
1
Which product should be installed? 1. [security] FindFace Multi 2. [server ] FindFace Server 3. [video-worker] FindFace Video Worker 4. [nvidia-drivers] NVIDIA CUDA drivers (installed automatically when you install gpu-variant of the products above) (default: security) product> 1
В:
Please choose installation type:
(Пожалуйста, выберите тип установки:)О:
3
Please choose installation type: - 1 [stand-alone ] Single Server - 2 [multi-worker] Single Server, Multiple video workers - 3 [repo ] Don't install anything, just set up the APT repository - 4 [custom ] Fully customized installation (default: stand-alone) type> 3
В:
APT repository doesn't include recognition models. Do you want to install them now?(y/n)
(В apt-репозиторий не включены модели распознавания. Вы хотите установить их сейчас?)О:
y
(да) илиn
(нет) в зависимости от плана развертывания. В любом случае не забудьте установить необходимые модели нейронной сети на сервере с компонентомfindface-extraction-api
. Чтобы установить их позже, см. Установка моделей нейронных сетей.APT repository doesn't include recognition models. Do you want to install them now?(y/n) (default: yes) repo_data> y
В:
Select models to install
(если вы ввелиy
на предыдущем шаге)О: По умолчанию установке подлежат все модели нейронных сетей. Вы можете оставить все как есть, введя
done
, или выбрать конкретные модели. Для этого снимите выделение со всех моделей, введя в командной строке-*
, затем введите порядковые номера нужных моделей через пробел, например:1 3 4
и т. д. Введитеdone
для сохранения выбора и перехода к следующему шагу.Select models to install. Note that you will need to accordingly edit extraction-api and tntapi configuration files. At least one of recognition models has to be enabled. - 1 [v] ./findface-data-age.v2-cpu_3.0.0_all.deb ... ... - 68 [v] ./findface-data-quality.v1-gpu_3.0.0_all.deb Enter keyword to select matching choices or -keyword to clear selection. Enter "done" to save your selection and proceed to another step. findface-data.models> done
После этого apt-репозиторий FindFace будет автоматически установлен.
Установка необходимого стороннего ПО
Для работы FindFace необходимо стороннее программное обеспечение PostgreSQL, Pgbouncer, NATS, etcd и memcached. Выполните следующие действия:
Установите пакеты с указанным сторонним ПО следующим образом:
sudo apt update sudo apt install -y postgresql-10 nats-server etcd memcached pgbouncer
Откройте файл конфигурации
/etc/memcached.conf
. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементовmemcached
:-m 1024
. Установите максимальный размер элемента:-I 16m
. Если один или оба этих параметра отсутствуют, добавьте их в файл.sudo vi /etc/memcached.conf -m 1024 -I 16m
Предоставьте надежный пароль пользователю
ntech
(9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3
в примере ниже). Внесите учетные данные в список пользователейpgbouncer
.echo '"ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"' | sudo tee -a /etc/pgbouncer/userlist.txt
Настройте
pgbouncer
. В/etc/pgbouncer/pgbouncer.ini
вставьте следующее содержимое вместо существующего, как показано в примере ниже.sudo vi /etc/pgbouncer/pgbouncer.ini [databases] ffsecurity = dbname=ffsecurity host=localhost port=5432 user=ntech ffsecurity_session = dbname=ffsecurity host=localhost port=5432 user=ntech pool_mode=session pool_size=10 [pgbouncer] pidfile = /var/run/postgresql/pgbouncer.pid listen_addr = 127.0.0.1 listen_port = 5439 unix_socket_dir = /var/run/postgresql auth_type = plain auth_file = /etc/pgbouncer/userlist.txt pool_mode = transaction server_reset_query = DISCARD ALL max_client_conn = 16384 default_pool_size = 70 syslog = 1 log_connections = 0 log_disconnections = 0 stats_period = 300
Добавьте сервисы стороннего ПО в автозагрузку Ubuntu и перезапустите их:
sudo systemctl enable postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service sudo systemctl restart postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service
Развертывание сервера лицензий
Важно
См. Лицензирование, чтобы узнать о политике лицензирования NtechLab.
Для обеспечения лицензирования FindFace разверните findface-ntls
, сервер лицензий в составе ядра FindFace.
Важно
Система на базе FindFace может включать в себя только один экземпляр
findface-ntls
.
sudo apt update
sudo apt install -y findface-ntls
sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service
Развертывание основной базы данных
Основная база данных FindFace построена на PostgreSQL. Для того чтобы развернуть основную базу данных, выполните следующие действия:
Откройте список пользователей
pgbouncer
/etc/pgbouncer/userlist.txt
. Скопируйте пароль пользователяntech
(9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3
в примере ниже).sudo cat /etc/pgbouncer/userlist.txt "ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"
В консоли PostgreSQL создайте пользователя
ntech
под скопированным паролем, а также базы данныхffsecurity
иffcounter
PostgreSQL.sudo -u postgres psql postgres=# CREATE ROLE ntech WITH LOGIN PASSWORD '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3'; postgres=# CREATE DATABASE ffsecurity WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0; postgres=# CREATE DATABASE ffcounter WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='C.UTF-8' LC_CTYPE='C.UTF-8' TEMPLATE template0;
Совет
Для выхода из консоли PostgreSQL введите
\q
и нажмите Enter.Разрешите авторизацию в PostgreSQL по UID клиента сокета. Перезапустите PostgreSQL.
echo 'local all ntech peer' | sudo tee -a /etc/postgresql/10/main/pg_hba.conf sudo systemctl restart postgresql@10-main.service
Развертывание ядра FindFace
Для развертывания ядра FindFace выполните следующие действия:
Совет
Вы можете найти описание компонентов ядра FindFace в разделе Архитектура.
Для FindFace на GPU установите драйверы NVIDIA.
Важно
Обязательно перезагрузите сервер после завершения установки драйверов NVIDIA. В противном случае при последующей установке GPU-компонентов произойдет сбой.
Установите компоненты ядра FindFace:
На CPU:
sudo apt update sudo apt install -y findface-tarantool-server findface-extraction-api findface-sf-api findface-upload findface-video-manager findface-video-worker-cpu
На GPU:
sudo apt update sudo apt install -y findface-tarantool-server findface-extraction-api-gpu findface-sf-api findface-upload findface-video-manager findface-video-worker-gpu
Примечание
Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.
Важно
Обязательно установите модели нейронных сетей на серверах с
findface-extraction-api
позднее.В файле конфигурации
/etc/findface-extraction-api.ini
измените нейронную сеть для распознавания лиц наmango_320
.На CPU:
sudo vi /etc/findface-extraction-api.ini extractors: ... models: ... face_emben: face/mango_320.cpu.fnk ...
На GPU:
sudo vi /etc/findface-extraction-api.ini extractors: ... models: ... face_emben: face/mango_320.gpu.fnk ...
В файле конфигурации
/etc/findface-sf-api.ini
включите параметрallow-return-facen
.sudo vi /etc/findface-sf-api.ini ... limits: ... allow-return-facen: true ...
Откройте файл конфигурации
/etc/findface-video-worker-cpu.ini
(/etc/findface-video-worker-gpu.ini
). Задайте следующие параметры:В параметре
mgr-static
укажите IP-адрес сервераfindface-video-manager
, который будет обеспечиватьfindface-video-worker
настройками и списком видеопотоков для обработки.В параметре
capacity
укажите максимальное количество видеопотоков, которое может быть обработаноfindface-video-worker
.
sudo vi /etc/findface-video-worker-cpu.ini sudo vi /etc/findface-video-worker-gpu.ini mgr-static=127.0.0.1:18811 capacity=10 [streamer] #------------------------------ ## streamer/shots webserver port, 0=disabled ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port port = 18999 ## streamer url - how to access this worker on streamer_port ## type:string env:CFG_STREAMER_URL longopt:--streamer-url url = 127.0.0.1:18999
Добавьте сервисы ядра FindFace в автозагрузку Ubuntu и запустите их.
На CPU:
sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
На GPU:
sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu
Развертывание прикладного модуля FindFace и базы данных векторов признаков
Для развертывания прикладного модуля FindFace, выполните следующие действия:
Установите компоненты
findface-security
,findface-security-ui
иfindface-counter
. Добавьте сервисfindface-counter
в автозагрузку Ubuntu и запустите его.sudo apt update sudo apt install -y findface-security findface-security-ui findface-counter sudo systemctl enable findface-counter && sudo systemctl start findface-counter
Создайте структуру базы данных векторов признаков на основе Tarantool, выполнив следующую команду.
sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
Откройте файл конфигурации
/etc/tarantool/instances.available/FindFace.lua
. Проверьте, содержит ли файл командуdofile
и определениеspaces
, как показано в примере ниже. При необходимости измените файл.sudo vi /etc/tarantool/instances.available/FindFace.lua dofile("/etc/findface-security/tnt_schema.lua") -- host:port to bind, HTTP API FindFace = require("FindFace") FindFace.start("127.0.0.1", 8101, { license_ntls_server="127.0.0.1:3133", replication = replication_master, spaces = spaces })
Важно
IP-адрес и номер порта, указанные в секции
shards
файла конфигурации/etc/findface-sf-api.ini
, должны быть идентичны указанным в секцииFindFace.start
.sudo vi /etc/tarantool/instances.available/FindFace.lua ... FindFace.start("127.0.0.1", 8101...)
sudo vi /etc/findface-sf-api.ini storage-api: ... shards: - master: http://127.0.0.1:8101/v2/ ...
Важно
Если вы внесли изменения в файл конфигурации
/etc/findface-sf-api.ini
, обязательно перезапустите сервисfindface-sf-api
:sudo systemctl restart findface-sf-api.service
Добавьте сервис
findface-tarantool-server
в автозагрузку Ubuntu и запустите его.sudo systemctl enable tarantool@FindFace.service && sudo systemctl start tarantool@FindFace.service
Откройте файл конфигурации
/etc/findface-security/config.py
. Задайте следующие параметры:Совет
Просмотреть исходную версию файла
/etc/findface-security/config.py
вы можетездесь
.EXTERNAL_ADDRESS
: (опционально) IP-адрес или URL, который используется для доступа в веб-интерфейс FindFace. Если этот параметр не указан вручную, система автоматически определяет его как внешний IP-адрес сервера.Примечание
Для доступа в FindFace вы можете использовать оба IP-адреса: как автоопределенный, так и указанный вручную в
EXTERNAL_ADDRESS
.VIDEO_DETECTOR_TOKEN
: придумайте токен и укажите его в данном параметре, чтобы авторизовать модуль видеодетекции объектов.Совет
Рекомендуется сгенерировать токен, выполнив следующую команду:
pwgen -sncy 50 1|tr "'" "."
VIDEO_MANAGER_ADDRESS
: IP-адрес сервераfindface-video-manager
.NTLS_HTTP_URL
: IP-адрес сервераfindface-ntls
.ROUTER_URL
: IP-адрес сервераfindface-security
, который будет получать обнаруженные на видео объекты от экземпляровfindface-video-worker
. Адрес указывается внутренний или внешний, в зависимости от сети, в которойfindface-video-worker
взаимодействует сfindface-security
. Измените порт по умолчанию с учетом настроек переадресации с HTTP на HTTPS или вообще не указывайте его, оставив только IP-адрес.SF_API_ADDRESS
: IP-адрес сервераfindface-sf-api
.DATABASES
(раздел): заполните его следующим образом:'PORT': 5439, 'USER': 'ntech', 'PASSWORD': ‘<пароль из /etc/pgbouncer/userlist.txt>’
(см. Установка необходимого стороннего ПО).
Совет
Если необходимо обеспечить безопасность данных, включите SSL-шифрование.
Используя приведенную ниже команду, сгенерируйте ключ подписи для шифрования сессии (используется в Django) и задайте его в параметре
SECRET_KEY
.pwgen -sncy 50 1|tr "'" "."
Перенесите схему базы данных из FindFace в PostgreSQL, создайте предустановленные пользовательские роли и первого администратора (т. н. Супер Администратора).
Важно
Супер Администратор не может лишиться прав администратора даже при смене роли.
sudo findface-security migrate sudo findface-security create_groups sudo findface-security create_default_user
Запустите сервисы.
sudo systemctl enable findface-security sudo systemctl start findface-security
Отключите сервер nginx, активный по умолчанию, и добавьте сервер
findface-security
в список включенных серверов. Перезапустите nginx.sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/ffsecurity-nginx.conf /etc/nginx/sites-enabled/ sudo nginx -s reload
Обеспечение лицензирования:
Обеспечьте лицензирование. Используйте веб-интерфейс FindFace, чтобы загрузить лицензионный файл, который вы до этого получили от своего менеджера ( ).
При лицензировании в закрытой системе с помощью USB-ключа аппаратной защиты вставьте его в USB-порт.
Для лицензирования в закрытой системы по слепку с оборудования см. Лицензирование в закрытой сети по слепку с оборудования.
Важно
Для того чтобы войти в первый раз в систему, используйте учетную запись Cуперадминистратора
admin:admin
, созданную по умолчанию.
Примечание
Для создания других пользователей или смены пароля Суперадминистратора см. раздел Управление ролями и пользователями.
Важно
Для того чтобы сохранить совместимость FindFace со средой установки, настоятельно рекомендуется отключить автоматическое обновление Ubuntu. В этом случае вы сможете обновлять ОС вручную, контролируя процесс обновления отдельных пакетов.
Для отключения автоматического обновления Ubuntu выполните следующие команды:
sudo apt-get remove unattended-upgrades
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily.service
sudo systemctl daemon-reload
Важно
Сервисы FindFace логируют большой объем данных, что в конечном итоге может привести к чрезмерной загрузке диска. Чтобы этого не произошло, рекомендуется отключить сервис rsyslog
из-за его неоптимальной схемы ротации логов и вместо него использовать правильно настроенный сервис systemd-journal
. См. пошаговые инструкции в разделе Логи сервисов.