Подготовка к развертыванию системы РТЛС
Минимальные требования (требования по ресурсам могут меняться в зависимости от используемых модулей, конфигурации инфраструктуры, кол-ва меток, частоты обновления данных от меток, сроков хранения данных и т.д):
OS | CentOS 7 |
CPU | 4 cores CPU, 2GHz |
RAM | 2 Gb под ПО РТЛС |
FS | 30 Gb |
Порты | 443/tcp, 8300/tcp, 8320/tcp, 5683/udp, 17320/udp,17321/udp |
*Для работы с LoRa | 8420/tcp |
* Для позиционирования по LoRa+BLE | 8520/tcp |
Подготовка ОС к установке ПО РТЛС
Все команды по конфигурации ОС и установке пакетов производятся под пользователем с административными правами (sudo user)
Установить пакеты doсker (CE) и docker-compose. Подробные инструкции доступны в официльной документации https://docs.docker.com/install/linux/docker-ce/centos/.
Установить пакеты для управления репозиториями
sudo yum install -y yum-utils
Добавить репозиторий
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Установить пакет docker-ce
sudo yum install docker-ce
Установить последнюю версию docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
проверить, что пакеты установились успешно
docker version docker-compose version
Добавить сервис docker на автостарт
sudo systemctl enable docker
Запустить сервис
sudo systemctl start docker
Добавить сертификат для доступа к RTLS репозиторию repo.rtlsnet.ru (89.208.17.244) . В случае, если нет возможности подключения к RTLS репозиторию по сети интернет, см. Инструкции по обновлению контейнеров через процедуру import
Проверить подлючение к репозиторию
openssl s_client -connect repo.rtlsnet.ru:5000
В результате выполнения команды при успешном подключении на экран будет выведена информация о сертификате репозитория
CONNECTED(00000003) depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = R3 verify return:1 depth=0 CN = repo.rtlsnet.ru verify return:1 --- Certificate chain 0 s:CN = repo.rtlsnet.ru i:C = US, O = Let's Encrypt, CN = R3 1 s:C = US, O = Let's Encrypt, CN = R3 i:C = US, O = Internet Security Research Group, CN = ISRG Root X1 2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1 i:O = Digital Signature Trust Co., CN = DST Root CA X3 --- Server certificate -----BEGIN CERTIFICATE----- MIIGJDCCBQygAwIBAgISA/rD/11eRnOHXjG2fvXoMsprMA0GCSqGSIb3DQEBCwUA MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD EwJSMzAeFw0yMTEwMDQxMTU4MjFaFw0yMjAxMDIxMTU4MjBaMBoxGDAWBgNVBAMT D3JlcG8ucnRsc25ldC5ydTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB ALnDD2zRDhiuWamjSquvASGuKXqRU0gPRKv0c4oScfUh7wDeIL6h/D/T2Bleij5g PPXIEsBVL7EylJ/5wNmay/eEQVgj5WSl2XdNfx8THHDCTEdEzSHh9UPqD/AtD8VL dQn3YpvZxZhBQA+7G3No8H7jIbUTnfWDsBgzGULE1E2dTBzAXg/RA1G9jjnx/Sw7 7rRnE2U025y/7E6/c+CbliKz9SSPCIjvHAGmibBGARYX9hC1vhX+yFwArWYRk6y5 qFRt6MQ5/q3KX+1eN28mQUCywiZXFM92Ky5IcnQ5M4F3AFbcuIzsmHVZCqMlUTRO BAF+65vN2jDQC7Yaree6scXqLsHZi2lVNpldJjtUCd5cR728RZzCk/kH1YeGFcQ4 2TmLlR46wnUff6Mo+Pw/F4PT6KjdzPjWPtFKOsQBQEXwv4Cwl7tiUItZY6+VYQfB WyiYJ57/vc85eMKOdqfCLOTr2d7AJdDBlOSpz2Pts8Mamd7k5GEkMPDEGFjvycCC yoITqCe1j5zBCMOeMIKWyzDvGJKo2OgtOdvTMHKD7psT+TVNfcth6+aKG74uEO6e mid2CQCh3EnUGQTj97ooZPaoKQM11J7nxV/zhGh7iEgRpacWkz0HLB5oe9rg0TkC L+RV3TaspMKGLxgD4fhCrTEvN9y4C7O5llPRrmpqS9eFAgMBAAGjggJKMIICRjAO BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFOpPk+UOX3I3P2vqZzZ4IHZpAqkuMB8GA1Ud IwQYMBaAFBQusxe3WFbLrlAJQOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggr BgEFBQcwAYYVaHR0cDovL3IzLm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRw Oi8vcjMuaS5sZW5jci5vcmcvMBoGA1UdEQQTMBGCD3JlcG8ucnRsc25ldC5ydTBM BgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIB FhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQQGCisGAQQB1nkCBAIEgfUE gfIA8AB3AEHIyrHfIkZKEMahOglCh15OMYsbA+vrS8do8JBilgb2AAABfEtiOt8A AAQDAEgwRgIhAPxbKTAo/sHmouAKz4YwCE98WU2qFB00GaK75A+CVgNQAiEAtQs4 wsUfYHZZlB6yn+WrC2hPsyueQm+Lak1pQ/asnaQAdQBGpVXrdfqRIDC1oolp9PN9 ESxBdL79SbiFq/L8cP5tRwAAAXxLYj1xAAAEAwBGMEQCIHuDERPVEyBPtc25TC+X 4oGSY+enX/RvKfPCSo8mM/C6AiAyjGYt6AOErAFNDVQwEXxhehnpSK2OuQ4TjR3w ZXOByzANBgkqhkiG9w0BAQsFAAOCAQEAUo4FXsvALdE4f+qxT281n31IP5SPZq8A J9l1RNouN80FNk0EXgTGcLxBL8NJdnd0obHImSWy5ewGSYS8bUqsKdaM76ssq6EC gXDT1+g6O4rt0H2PsP03indT69OckN38G7NO+Bjf4ErTwY/Qy+5MRUeBT4+/RoqW 5iJ8s7kes8hV+AMeWGGNr3hkxvrDbA4xuOkgWR57zFEs0DXItz+VqJxYMY5l2FXL jlSFMURPX8P+pHKXuLtnEQC4iHMGgugYvJjN2zKsDlaVZNB6QLeaWReBe5PJJ53/ SQFrqr9BLYRkt4k2HLqBZFADXAiDbU4L+l1dLVHsoYXQrxf8RRB3WQ== -----END CERTIFICATE----- ... more certificate data ...
скопировать текст от -----BEGIN CERTIFICATE----- до -----END CERTIFICATE----- в файл ca.crt
-----BEGIN CERTIFICATE----- MIIGJDCCBQygAwIBAgISA/rD/11eRnOHXjG2fvXoMsprMA0GCSqGSIb3DQEBCwUA MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD EwJSMzAeFw0yMTEwMDQxMTU4MjFaFw0yMjAxMDIxMTU4MjBaMBoxGDAWBgNVBAMT D3JlcG8ucnRsc25ldC5ydTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB ALnDD2zRDhiuWamjSquvASGuKXqRU0gPRKv0c4oScfUh7wDeIL6h/D/T2Bleij5g PPXIEsBVL7EylJ/5wNmay/eEQVgj5WSl2XdNfx8THHDCTEdEzSHh9UPqD/AtD8VL dQn3YpvZxZhBQA+7G3No8H7jIbUTnfWDsBgzGULE1E2dTBzAXg/RA1G9jjnx/Sw7 7rRnE2U025y/7E6/c+CbliKz9SSPCIjvHAGmibBGARYX9hC1vhX+yFwArWYRk6y5 qFRt6MQ5/q3KX+1eN28mQUCywiZXFM92Ky5IcnQ5M4F3AFbcuIzsmHVZCqMlUTRO BAF+65vN2jDQC7Yaree6scXqLsHZi2lVNpldJjtUCd5cR728RZzCk/kH1YeGFcQ4 2TmLlR46wnUff6Mo+Pw/F4PT6KjdzPjWPtFKOsQBQEXwv4Cwl7tiUItZY6+VYQfB WyiYJ57/vc85eMKOdqfCLOTr2d7AJdDBlOSpz2Pts8Mamd7k5GEkMPDEGFjvycCC yoITqCe1j5zBCMOeMIKWyzDvGJKo2OgtOdvTMHKD7psT+TVNfcth6+aKG74uEO6e mid2CQCh3EnUGQTj97ooZPaoKQM11J7nxV/zhGh7iEgRpacWkz0HLB5oe9rg0TkC L+RV3TaspMKGLxgD4fhCrTEvN9y4C7O5llPRrmpqS9eFAgMBAAGjggJKMIICRjAO BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFOpPk+UOX3I3P2vqZzZ4IHZpAqkuMB8GA1Ud IwQYMBaAFBQusxe3WFbLrlAJQOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggr BgEFBQcwAYYVaHR0cDovL3IzLm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRw Oi8vcjMuaS5sZW5jci5vcmcvMBoGA1UdEQQTMBGCD3JlcG8ucnRsc25ldC5ydTBM BgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIB FhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQQGCisGAQQB1nkCBAIEgfUE gfIA8AB3AEHIyrHfIkZKEMahOglCh15OMYsbA+vrS8do8JBilgb2AAABfEtiOt8A AAQDAEgwRgIhAPxbKTAo/sHmouAKz4YwCE98WU2qFB00GaK75A+CVgNQAiEAtQs4 wsUfYHZZlB6yn+WrC2hPsyueQm+Lak1pQ/asnaQAdQBGpVXrdfqRIDC1oolp9PN9 ESxBdL79SbiFq/L8cP5tRwAAAXxLYj1xAAAEAwBGMEQCIHuDERPVEyBPtc25TC+X 4oGSY+enX/RvKfPCSo8mM/C6AiAyjGYt6AOErAFNDVQwEXxhehnpSK2OuQ4TjR3w ZXOByzANBgkqhkiG9w0BAQsFAAOCAQEAUo4FXsvALdE4f+qxT281n31IP5SPZq8A J9l1RNouN80FNk0EXgTGcLxBL8NJdnd0obHImSWy5ewGSYS8bUqsKdaM76ssq6EC gXDT1+g6O4rt0H2PsP03indT69OckN38G7NO+Bjf4ErTwY/Qy+5MRUeBT4+/RoqW 5iJ8s7kes8hV+AMeWGGNr3hkxvrDbA4xuOkgWR57zFEs0DXItz+VqJxYMY5l2FXL jlSFMURPX8P+pHKXuLtnEQC4iHMGgugYvJjN2zKsDlaVZNB6QLeaWReBe5PJJ53/ SQFrqr9BLYRkt4k2HLqBZFADXAiDbU4L+l1dLVHsoYXQrxf8RRB3WQ== -----END CERTIFICATE-----
Добавить в рабочую папку docker процесса сохраненный сертификат
sudo mkdir -p /etc/docker/certs.d/repo.rtlsnet.ru:5000 sudo mv ca.crt /etc/docker/certs.d/repo.rtlsnet.ru:5000/
Создать пользователя под которым будет происходить запуск ПО (например appuser). Добавить его в группу docker для работы с docker сервисами
sudo adduser appuser sudo usermod -aG docker appuser
если id пользователя и его персональной группы отличается от 1000:1000 , в текущих версиях ПО необходимо отредактировать docker-componse.yml чтобы изменить права на создаваемые папки для доступа пользователю
проверить id пользователя и его персональной группы c помощью комманды id
id uid=1001(appuser) gid=1001(appuser) groups=1001(appuser),998(docker)
поменять в docker-componse.yml для каждого контейнера строки с параметрами USER_UID и USER_GID
- USER_UID=${UID:-1001} - USER_GID=${UID:-1001}
Чистая установка ПО РТЛС
Все команды производятся под пользователем appuser
Получить от РТЛС Логин и Пароль для доступа к репозиторию.
Авторизоваться в docker с полученными параметрами подключения
docker login repo.rtlsnet.ru:5000 Username: *** Password: **** Login Succeeded
На странице доступных релизов найти архив с конфигурацией нужной версии
https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
Скачать и распаковать архив в папку rtls
mkdir rtls cd rtls curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$(version)/RTLS-compose-$(version).tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
В результате распаковки в файловой системе доступна для работы папка rtls со следующей
структурой[appuser@srv rtls]$ ls -lh total 12K drwxrwxr-x. 4 appuser appuser 31 Nov 27 2019 actobus drwxrwxr-x. 4 appuser appuser 31 Jan 15 2020 ble-solver -rw-rw-r--. 1 appuser appuser 5.3K Nov 24 11:58 docker-compose.yml drwxrwxr-x. 2 appuser appuser 38 Nov 27 2019 emulator drwxrwxr-x. 5 appuser appuser 42 Nov 27 2019 le drwxrwxr-x. 4 appuser appuser 109 Nov 22 17:30 postgres -rw-rw-r--. 1 appuser appuser 789 Nov 27 2019 README.md drwxrwxr-x. 4 appuser appuser 32 Nov 27 2019 redis drwxrwxr-x. 8 appuser appuser 112 Nov 22 17:27 srv
Запустить ПО в зависимости от необходимой конфигурации
запуск с поддержкой UWB
docker-compose up -d
запуск с поддержкой получения данных по LoRa
docker-compose --profile actobus up -d
Запуск с поддержкой BLE (включая получение данных по LoRa)
docker-compose --profile ble up -d
Результат запуска средствами докера. Должны быть подняты 3 основных контейнера + actobus (ble-solver) в зависимости от профиля запуска
docker ps
После старта сервисов должны быть доступны пользовательские интерфейсы
https://<ip>/CToolUI - интерфейс конфигурации
https://<ip>/BA-UI - пользовательский интерфейс
http://<ip>:8420 - ресурсы actobus (при запуске ПО с профилем actobus и ble)
http://<ip>:8520 - ресурсы BLE (при запуске ПО с профилем ble)
Загрузка контейнеров через процедуру import
На странице доступных релизов найти архив с конфигурацией нужной версии
https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
Скачать и распаковать архив в папку rtls
mkdir rtls cd rtls curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$(version)/RTLS-compose-$(version).tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
Загрузить локально контейнеры
docker-compose pull
Сохранить контейнер в файл (name - имя контейнера, version - версия контейнера, например v4.3.0). В итоге будет получена заархивированная копия контейнера <название файла>.tar.gz
docker save -o <название файла>.tar repo.rtlsnet.ru:5000/name:version gzip <название файла>.tar
Повторить процедуру выгрузки для всех необходимых контейнеров
с поддержкой UWB: postgres, srv, le
запуск с поддержкой получения данных по LoRa: postgres, srv, le, actobus, redis
Запуск с поддержкой BLE (включая получение данных по LoRa): postgres, srv, le, actobus, ble-solver, redis
Скопировать в домашнюю директорию пользователя appuser на машине, где развертывается ПО архивы
Импортировать каждый контейнер в docker
docker load -i <название файла>.tar.gz
Проверить результат импорта (в списке должны отображаться версии контейнеров, экспортированные ранее)
docker images
Обновление ПО ( сохранением данных)
Проверить версию docker-compose.
docker-compose version
Если версия ниже 1.28 для работы с последними версиями ПО РТЛС необходимо переустановить docker-compose (см. Подготовка ОС к установке ПО РТЛС )
Посмотреть текущую версию ПО РТЛС для контейнера srv в файле rtls/docker-compose.yml
nano rtls/docker-compose.yml
Получить от РТЛС скрипт update.sql для обновления струкруры БД до нужной версии
На странице доступных релизов найти архив с конфигурацией нужной версии
https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
Выключить все контейнеры
Сделать бекап текущего состояния через изменение имени рабочей директории rtls
mv rtls rtls_bup
Скачать и распаковать архив в папку rtls
mkdir rtls cd rtls curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$(version)/RTLS-compose-$(version).tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
Скопировать предыдущее состояние БД (папку pgdata в рабочую директорию)
cp -R ../rtls_bup/postgres/pgdata ./postgres/
Положить полученный от разработчиков update.sql файл в папку rtls/postgres
Запустить контейнер rtls_postgres_1
docker start rtls_postgres_1
Подключиться к БД контейнеру и запустить SQL скрипт
docker exec -ti rtls_postgres_1 psql -d postgres -U rtls_pu -f /var/lib/postgresql/data/update.sql
Запустить ПО
docker-compose up -d
Дождаться полного запуска сервера (BA-UI будет доступным для авторизации)
После старта в файловой системе должна быть доступна актуальная конфигурация настроек geo данных rtls/srv/geoserver-data
[appuser@srv rtls]$ ls -l srv/geoserver-data/ total 44 -rw-r--r--. 1 appuser appuser 855 Nov 22 17:27 csw.xml drwxr-xr-x. 4 appuser appuser 36 Nov 23 11:49 data drwxr-xr-x. 2 appuser appuser 4096 Nov 22 17:27 demo -rw-r--r--. 1 appuser appuser 1930 Nov 23 11:49 global.xml drwxr-xr-x. 3 appuser appuser 40 Nov 22 17:27 gwc -rw-r--r--. 1 appuser appuser 965 Nov 22 17:27 gwc-gs.xml drwxr-xr-x. 2 appuser appuser 266 Nov 23 11:49 gwc-layers drwxr-xr-x. 2 appuser appuser 28 Nov 22 17:27 layouts -rw-r--r--. 1 appuser appuser 144 Nov 22 17:27 logging.xml drwxr-xr-x. 2 appuser appuser 265 Nov 22 17:27 logs drwxr-xr-x. 2 appuser appuser 76 Nov 22 17:27 palettes drwxr-xr-x. 2 appuser appuser 4096 Nov 22 17:27 plugIns -rw-r--r--. 1 appuser appuser 3276 Nov 22 17:27 README.rst drwxr-xr-x. 8 appuser appuser 252 Nov 22 17:27 security drwxr-xr-x. 2 appuser appuser 4096 Nov 22 17:27 styles drwxr-xr-x. 2 appuser appuser 29 Nov 22 17:27 user_projections drwxr-xr-x. 2 appuser appuser 56 Nov 22 17:27 validation -rw-r--r--. 1 appuser appuser 1397 Nov 22 17:30 wcs.xml -rw-r--r--. 1 appuser appuser 1907 Nov 22 17:30 wfs.xml -rw-r--r--. 1 appuser appuser 1614 Nov 22 17:30 wms.xml drwxr-xr-x. 4 appuser appuser 49 Nov 22 17:27 workspaces drwxr-xr-x. 4 appuser appuser 76 Nov 22 17:27 www
Скопировать данные о картографических слоях, загруженных в раннюю версию ПО, в новую конфигурацию
cp -R ../rtls_bup/srv/geoserver-data/data/rtls srv/geoserver-data/data/ cp -R ../rtls_bup/srv/geoserver-data/workspaces/rtls/site* srv/geoserver-data/workspaces/rtls/
Перезапустить контейнер сервера приложений
docker restart rtls_srv_1
Авторизоваться в BA-UI и проверить, что загруженные ранее карты доступны для работы
Обновление ПО ( без сохранения данных)
Проверить версию docker-compose.
docker-compose version
Если версия ниже 1.28 для работы с последними версиями ПО РТЛС необходимо переустановить docker-compose (см. <Подготовка ОС к установке ПО РТЛС> )
Выключить все контейнеры
docker-compose -f rtls/docker-compose.yml stop
Удалить папку rtls
rm -rf rtls
Провести установку согласно инструкциям раздела <Чистая установка ПО РТЛС>