Подготовка к развертыванию системы РТЛС

Минимальные требования (требования по ресурсам могут меняться в зависимости от используемых модулей, конфигурации инфраструктуры, кол-ва меток, частоты обновления данных от меток, сроков хранения данных и т.д):

OS

CentOS 7

CPU

4 cores CPU, 2GHz

RAM

4 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)

  1. Установить пакеты doсker (CE) и docker-compose. Подробные инструкции доступны в официльной документации https://docs.docker.com/install/linux/docker-ce/centos/. 

    1. Установить пакеты для управления репозиториями

      sudo yum install -y yum-utils
    2. Добавить репозиторий

      sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    3. Установить пакет docker-ce

      sudo yum install docker-ce
    4. Установить последнюю версию 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
    5. проверить, что пакеты установились успешно

      docker version
      docker-compose version
    6. Добавить сервис docker на автостарт

      sudo systemctl enable docker
    7. Запустить сервис

      sudo systemctl start docker
  2. Добавить сертификат для доступа к RTLS репозиторию repo.rtlsnet.ru (89.208.17.244) . В случае, если нет возможности подключения к RTLS репозиторию по сети интернет,  см. Инструкции по обновлению контейнеров через процедуру import

    1. Проверить подлючение к репозиторию

      openssl s_client -connect repo.rtlsnet.ru:5000
    2. В результате выполнения команды при успешном подключении на экран будет выведена информация о сертификате репозитория

      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 ...
    3. скопировать текст от -----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-----
    4. Добавить в рабочую папку docker процесса сохраненный сертификат

      sudo mkdir -p /etc/docker/certs.d/repo.rtlsnet.ru:5000
      sudo mv ca.crt /etc/docker/certs.d/repo.rtlsnet.ru:5000/
  3. Создать пользователя под которым будет происходить запуск ПО (например  appuser). Добавить его в группу docker для работы с docker сервисами

    sudo adduser appuser 
    sudo usermod -aG docker appuser

Чистая установка ПО РТЛС

Все команды производятся под пользователем appuser

  1. Получить от РТЛС Логин и Пароль для доступа к репозиторию.

  2. Авторизоваться в docker с полученными параметрами подключения

    docker login repo.rtlsnet.ru:5000
    Username: ***
    Password: ****
    Login Succeeded
  3. На странице доступных релизов найти архив с конфигурацией нужной версии

     https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
  4. Скачать и распаковать архив в папку 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
  5. В результате распаковки в файловой системе доступна для работы папка 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
    
  6. Запустить ПО в зависимости от необходимой конфигурации

    1. запуск с поддержкой UWB

      docker-compose up -d
    2. запуск с поддержкой получения данных по LoRa

      docker-compose --profile actobus up -d
    3. Запуск с поддержкой BLE (включая получение данных по LoRa)

      docker-compose --profile ble up -d
  7. Результат запуска средствами докера. Должны быть подняты 3 основных контейнера + actobus (ble-solver) в зависимости от профиля запуска

    docker ps
  8. После старта сервисов должны быть доступны пользовательские интерфейсы

    1. https://<ip>/CToolUI - интерфейс конфигурации

    2. https://<ip>/BA-UI - пользовательский интерфейс

    3. http://<ip>:8420 - ресурсы actobus (при запуске ПО с профилем actobus и ble)

    4. http://<ip>:8520 - ресурсы BLE (при запуске ПО с профилем ble)

Загрузка контейнеров через процедуру import

  1. На странице доступных релизов найти архив с конфигурацией нужной версии

     https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
  2. Скачать и распаковать архив в папку 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
  3. Загрузить локально контейнеры

    docker-compose pull
  4. Сохранить контейнер в файл (name - имя контейнера, version - версия контейнера, например v4.3.0). В итоге будет получена заархивированная копия контейнера <название файла>.tar.gz

    docker save -o <название файла>.tar repo.rtlsnet.ru:5000/name:version
    gzip <название файла>.tar
  5. Повторить процедуру выгрузки для всех необходимых контейнеров

    1. с поддержкой UWB: postgres, srv, le

    2. запуск с поддержкой получения данных по LoRa: postgres, srv, le, actobus, redis

    3. Запуск с поддержкой BLE (включая получение данных по LoRa): postgres, srv, le, actobus, ble-solver, redis

  6. Скопировать в домашнюю директорию пользователя appuser на машине, где развертывается ПО архивы

  7. Импортировать каждый контейнер в docker

    docker load -i <название файла>.tar.gz
  8. Проверить результат импорта (в списке должны отображаться версии контейнеров, экспортированные ранее)

    docker images

Обновление ПО ( сохранением данных)

  1. Проверить версию docker-compose. 

    1. docker-compose version

    2. Если версия ниже 1.28 для работы с последними версиями ПО РТЛС необходимо переустановить docker-compose (см. Подготовка ОС к установке ПО РТЛС )

  2. Посмотреть текущую версию ПО РТЛС для контейнера srv в файле  rtls/docker-compose.yml

    nano rtls/docker-compose.yml
  3. Получить от РТЛС скрипт update.sql для обновления струкруры БД до нужной версии

  4. На странице доступных релизов найти архив с конфигурацией нужной версии

     https://repo.rtlsnet.ru/service/rest/repository/browse/raw-rtls/releases/
  5. Выключить все контейнеры

  6. Сделать бекап текущего состояния через изменение имени рабочей директории rtls

    mv rtls rtls_bup
  7. Скачать и распаковать архив в папку 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
  8. Скопировать предыдущее состояние БД (папку pgdata в рабочую директорию)

    cp -R ../rtls_bup/postgres/pgdata ./postgres/
  9. Положить полученный от разработчиков update.sql файл в папку rtls/postgres

  10. Запустить контейнер rtls_postgres_1

  11. Подключиться к БД контейнеру и запустить SQL скрипт

    docker exec -ti rtls_postgres_1 psql -d postgres -U rtls_pu -f /var/lib/postgresql/data/update.sql
  12. Запустить ПО

    docker-compose up -d
  13. Дождаться полного запуска сервера (BA-UI будет доступным для авторизации)

  14. После старта  в файловой системе должна быть доступна актуальная конфигурация настроек 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
  15. Скопировать данные о картографических слоях, загруженных в раннюю версию ПО, в новую конфигурацию

    cp -R srv/geoserver-data_bup/data srv/geoserver-data/data
    cp -R srv/geoserver-data_bup/workspaces/rtls/site* srv/geoserver-data/workspaces/rtls/
  16. Перезапустить контейнер сервера приложений

    docker restart rtls_srv_1
  17. Авторизоваться в BA-UI и проверить, что загруженные ранее карты доступны для работы

Обновление ПО ( без сохранения данных)

  1. Проверить версию docker-compose. 

    1. docker-compose version

    2. Если версия ниже 1.28 для работы с последними версиями ПО РТЛС необходимо переустановить docker-compose (см. <Подготовка ОС к установке ПО РТЛС> )

  2. Выключить все контейнеры

    docker-compose -f rtls/docker-compose.yml stop
  3. Удалить папку rtls

    rm -rf rtls
  4. Провести установку согласно инструкциям раздела <Чистая установка ПО РТЛС>