ExeMES поставляется в формате контейнеризированного приложения, которое может быть запущено как в Docker, так и в кластере Kubernetes.

На данной странице представлена инструкция для инсталляции ПО ExeMES в Docker. По вопросам установки ПО ExeMES в кластере Kubernetes необходимо обращаться на портал технической поддержки.

Параметр

Значение

Процессор

Не менее 4 vCPU.

Частота – не ниже 2,6 ГГц.

Поддерживает работу с 64-разрядными приложениями на аппаратном уровне.

ОЗУ

Минимум 4 GB RAM

Свободное пространство на жестком диске

Объем – не менее 50 Гб.

Примечание: объем необходимого свободного места на жестком диске зависит от объема данных, поступающих и хранящихся в ExeMES, и определяется самостоятельно на основе опытной эксплуатации ПО.

Подготовка к установке

  1. Установка Docker

    Для установки Docker потребуется доступ в интернет. После установки завершения установки доступ в интернет можно будет закрыть

    Детальную информацию по установке Docker также можно найти на сайте Вендора - https://docs.docker.com/engine/install/.

    Установка Docker выполняется в терминале ОС под пользователем с правами root

    Для установки docker, в терминале Ubuntu необходимо последовательно выполнить следующие команды:

    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add the repository to Apt sources:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    
    # Install latest version:
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    Приведенные в блоке выше команды устанавливают последнюю версию docker из репозитория.

    Для проверки работоспособности docker необходимо выполнить команду:

    sudo docker run hello-world

    В результате выполнения команды будет загружен тестовый образ и запущен контейнер с ним. Сообщение, представленное ниже подтверждает корректную установку Docker

    Установка Docker выполняется в терминале ОС под пользователем с правами root

    Для установки docker, в терминале Cent OS необходимо последовательно выполнить следующие команды:

    sudo yum check-update
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    sudo systemctl start docker
    sudo systemctl enable docker
    sudo systemctl status docker

    Последняя команда показывает состояние docker. Состояние после успешной установки должно быть active(running).

    Установка Docker выполняется в терминале ОС под пользователем с правами root

    Перед началом установки Docker необходимо обновить компоненты Debian выполнив следующую команду:

    apt update && apt upgrade -y

    Далее необходимо предоставить права на исполняемый файл:

    cd  /root/dev/
    chmod +x install-docker.sh

    Затем установить Docker:

    ./install-docker.sh

    После завершения установки необходимо перезагрузить хост, использовав команду

    reboot



  2. Для хоста, на котором установлен Docker обязательно должен быть сконфигурирован ip адрес отличный от "127.0.0.1". Данный ip адрес должен быть использован в качестве [host_ip] при выполнении дальнейших пунктов инструкции.
  3. Подготовка сертификатов 

    Для использования защищенных протоколов https ssl, необходимо сгенерировать и сконвертировать сертификаты для вашего домена.

    Для создания и конвертации сертификатов необходимо установить openssl. Детальная инструкция по установке доступна по ссылке https://wiki.openssl.org/index.php/Binaries.

    На первом шаге необходимо сгенерировать key файл. Для этого необходимо выполнить команду в терминале:

    openssl genrsa -out wildcard.[домен].key 2048

    Затем необходимо создать файл cnf с конфигурационной информацией следующего содержания:

    [ req ]
    default_bits = 2048
    distinguished_name = req_distinguished_name
    req_extensions = req_ext
    prompt = no
    
    [ req_distinguished_name ]
    C = RU
    ST = Russia
    L = Moscow
    O = [организация]
    CN =[домен]
    
    [ req_ext ]
    subjectAltName = @alt_names
    extendedKeyUsage = serverAuth, clientAuth
    basicConstraints=CA:TRUE
    
    [alt_names]
    DNS.1 = keycloak.[домен]
    DNS.2 = middleware.[домен]
    DNS.3 = client.[домен]
    DNS.4 = mes-runtime.[домен]
    DNS.5 = exesched.[домен]
    DNS.6 = report.[домен]
    DNS.7 = *.[домен]

    После чего с использование key и cnf файла сгенерировать crt файл сертификата используя команду:

    openssl req -x509 -nodes -newkey rsa:4096 -extensions req_ext -keyout wildcard.[домен].key -out wildcard.[домен].crt -days [срок действия сертификата в днях] -config wildcard.[домен].cnf

    На основании crt файла необходимо сгенерировать pfx сертификат.

    Для конвертации сертификатов в pfx необходимо воспользоваться следующей командой:

    openssl pkcs12 -export -out wildcard.[домен].pfx -inkey wildcard.[домен].key -in wildcard.[домен].crt

    После выполнения команды openssl запросит ввести новый пароль и подтвердить его, после чего, будет создан сертификат в формате pfx.

    Для корректного применения сертификатов необходимо указать на них ссылки для каждого из приложений.

    При установке в Docker необходимо внести правки в docker-compose.yaml в строках, указав новый crt сертификат и новый pfx сертификат

    source: /root/dev/crt/wildcard.[домен].pfx
    ...
    source: /root/dev/crt/wildcard.[домен].crt

    Для pfx сертификатов, необходимо изменить пароль в следующих строках:

    ASPNETCORE_Kestrel__Certificates__Default__Password: "пароль указанный при генерации pfx сертификата"


    В инсталляционном пакете в папке crt поставляются самоподписанные сертификаты для домена mycompany.local. Если вы разворачиваете ПО ExeMES в демонстрационных, тестовых или обучающих целях (не на продуктивной среде) и не планируете использовать другой домен для работы приложения, то вы можете пропустить данный шаг инструкции и воспользоваться готовыми сертификатами.

  4. Настройка DNS

    Адреса сервисов продуктов ExePlant должны быть добавлены в DNS:
    [host_ip] client.[домен]
    [host_ip] middleware.[домен]
    [host_ip] keycloak.[домен]
    [host_ip] mes-runtime.[домен]
    [host_ip] exesched.[домен]
    [host_ip] report.[домен]

    При использовании DNS необходимо в docker-compose.yaml (из состава инсталляционного пакета) удалить конфигурацию extra_hosts

    При установке в Docker и отсутствии DNS сервера необходимо добавить в файл hosts ОС записи для каждого сервиса:

    [host_ip] client.[домен]
    [host_ip] middleware.[домен]
    [host_ip] keycloak.[домен]
    [host_ip] mes-runtime.[домен]
    [host_ip] exesched.[домен]
    [host_ip] report.[домен]



  5. Установка Guardant Control Center и Guardant SLK

    Для корректной работы программных продуктов ExePlant требуется установить Guardant Control Center на один из компьютеров в сети, который будет выполнять функцию сервера лицензирования.

    Допускается использовать в качестве сервера лицензирования хост, на котором установлен Docker

    Дистрибутивы Guardant Control Center для различных ОС поставляются совместно с ПО ExePlant и находятся в инсталляционном пакете в папке gcc:

    Выберите любой подходящий для вашей ОС файл установщик и произведите установку ПО любым удобным способом доступным в вашей ОС.

    Например: для установки Guardant Control Center в ОС Ubuntu удобно использовать установочный файл grdcontrol*.deb (конкретный файл необходимо выбрать в зависимости от разрядности ОС). Файл необходимо открыть через Центр приложений и нажать на кнопку "Установить", после чего дождаться завершения установки.

    После установки ПО Guardant Control Center необходимо активировать лицензию ExeMES. Активация лицензий производится с использованием ПО Мастер лицензий Guardant (входит в состав Guardant SLK и не требует установки).

    Мастер лицензий Guardant — утилита, предназначенная для активации и переноса программных лицензий, а также для обновления лицензий.

    Для запуска ПО Мастер лицензий Guardant необходимо запустить файл license_wizard из архива grdcontrol-3.29.tar.gz (соответствующий файл находится в папке x86 или x86_64 в зависимости от разрядности вашей ОС).

    Для активации лицензии необходимо нажать на кнопку "+ Активация лицензии", после чего ввести в форму Программный ключ лицензии и завершить процесс активации следуя инструкциям в Мастере лицензий Guardant.

    Программный ключ лицензии представляет собой текстовый шифр и предоставляется Вендором после покупки лицензии.

    После успешной активации лицензии в Мастере лицензий Guardant отобразится информация об активированной лицензии.

    Детальная информация по работе с Мастером лицензий Guardant представлена на сайте производителя.


Установка ExeMES для ОС семейства Linux

Для установки и запуска ExeMES необходимо распаковать архив, содержащий ПО ExeMES (инсталляционный пакет) и предоставленный Вендором используя команду:

gunzip -c exemes.tar.gz | tar -xvf –

В результате у вас появится новый каталог exemes с необходимыми для запуска файлами.

Затем необходимо отредактировать файл docker-compose.yaml, расположенный в корневой папке каталога:

  • заменить по тексту файла параметр [host_ip] на ip адрес хоста, на котором инсталлирован Docker;
  • заменить по тексту файла параметр [license_server_ip] на ip адрес хоста, на котором установлен сервер лицензирования Guardant Control Center;
  • настроить необходимые переменные окружения;

После необходимо скопировать в каталог /exemes/crt сгенерированные ранее сертификаты и отредактировать файл docker-compose.yaml: заменить по тексту файла "mycompany.local" на имя домена, для которого сгенерированы сертификаты.

Если вы разворачиваете ПО ExeMES в демонстрационных, тестовых или обучающих целях (не на продуктивной среде) и не планируете использовать другой домен для работы приложения, то вы можете пропустить данный шаг инструкции

Далее необходимо открыть терминал ОС с root доступом, перейти в каталог, появившийся после распаковки архива, и выполнить команду:

bash install-exemes.sh

при этом произойдет загрузка образов, копирование данных и запуск сервисов.

При выполнении указанного выше скрипта производится установка Portainer - средства для  мониторинга работы контейнеризированных приложений. Если вам не требуется установка Portainer удалите из файла install_exemes.sh следующий код:

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.20.2
systemctl restart docker

Если файл не запускается, измените права на этот файл командой:

chmod g+x install_exemes.sh

После завершения выполнения скрипта будут запущены контейнеры приложений ExeMES, что будет подтверждено соответствующим сообщением в терминале.

После завершения инсталляции необходимо открыть web-консоль администрирования Keycloak в браузере по адресу https://keycloak.[домен]:5787. Для доступа в Keycloak необходимо воспользоваться логином и паролем административной учетной записи, которые указаны в параметрах KEYCLOAK_ADMIN_USER и KEYCLOAK_ADMIN_PASSWORD настроек контейнера keycloak в docker-compose.yaml.

В Keycloak необходимо перейти в настройки realm exemes, создать пользователя и добавить его в группу EXEMES_Admins.

Настройка переменных окружения

Переменные окружения - набор значений, который определяет необходимые параметры работы и запуска приложений

Пакет инсталляции ExeMES уже содержит настроенные переменные окружения и если вы не планируете менять настройки по умолчанию, то можете пропустить данный шаг.

Доступные настройки:

Для подключения к БД ExeMES Middleware использует следующие переменные окружения:

  • MESDBContext - строка подключения к БД MESDB с полными правами, содержит как строку подключения, так и данные пользователя (логин), под которым будет выполнятся взаимодействия сервиса с БД при выполнении операций, требующих неограниченный доступ к БД (на чтение и запись);
  • MESDBContextRO - строка подключения к БД MESDB с правами только на чтение, содержит как строку подключения, так и данные пользователя (логин), под которым будет выполнятся взаимодействия сервиса с БД при выполнении операций, требующих ограниченный доступ к БД (только на чтение), используется при выполнении API функций GesDsByFn и GetDsBySp;

Настройка переменных окружения выполняется путем редактирования файла docker-compose.yaml. Пример:

MESDBContext: "Server=localhost; User Id=middleware; Database=mesdb; Port=5432; Password=password; SSLMode=Prefer"
MESDBContextRO: "Server=localhost; User Id=middleware_ro; Database=mesdb; Port=5432; Password=password; SSLMode=Prefer"

Если у пользователя, данные которого передаются в переменной окружения MESDBContext отсутствуют права на создание объектов в БД, то необходимо дополнительно передать переменную окружения MESDBOwnerContext, которая содержит строку подключения к БД MESDB с правами владельца БД. Пример:

MESDBOwnerContext: "Server=localhost; User Id=postgres; Database=mesdb; Port=5432; Password=password; SSLMode=Prefer"

Стратегией работы с базой данных MESDB при запуске приложения можно управлять с помощью переменной окружения DBStrategyOnStartUp, которая может принимать следующие значения:

  • DoNothing - ничего не делать с БД при запуске приложения;
  • CreateIfNotExists - создать БД, если она еще не существует (эта опция применяется по умолчанию);
  • AlwaysReCreate - пересоздавать БД заново при каждом запуске приложения (эта стратегия может быть выбрана для тестового окружения);
  • AlwaysMigrate - автоматически обновлять версию БД при запуске приложения.

Настройка переменной окружения DBStrategyOnStartUp выполняется путем редактирования файла docker-compose.yaml. Пример:

DBStrategyOnStartUp: "CreateIfNotExists"

CORS (Cross-Origin Resource Sharing) — это механизм браузера, который позволяет определить список ресурсов, к которым страница может получить доступ.

Он необходим для обеспечения безопасности и защиты пользователей от злоумышленников при использовании HTTP-протокола.

По умолчанию сайты могут запрашивать ресурсы только со своего origin. Такое ограничение называется Same-Origin Policy. CORS расширяет Same-Origin Policy, позволяя получать доступ к ресурсам с разных доменов.

Разрешения CORS могут потребоваться, если вы вызываете методы ExeMES  в сторонних приложениях: внешних пользовательских портала, таких как ELMA365 и прочие.

Для разрешения CORS необходимо передать переменную окружения CORS, в которой через запятую перечислить разрешенные сайты. 

Настройка переменной окружения CORS выполняется путем редактирования файла docker-compose.yaml. Пример:

CORS: "https://elma365.exeplant.local,https://keycloak.exeplant.local"

Доступно начиная с версии 2.0

Опцией управления доступом к объектам из объектной модели можно управлять с помощью переменной окружения EntityAccessProtection, которая может принимать значения enabled (включение опции) и disabled (отключение опции).

Настройка переменной окружения EntityAccessProtection выполняется путем редактирования файла docker-compose.yaml. Пример:

EntityAccessProtection: "enabled"

По умолчанию опция выключена

При запуске контейнеров ExeMES Client, ExeMES RuntimeClient или ExeSched необходимо передать в переменной окружения MiddlewareApiRootUri путь до сервиса ExeMES Server (Middleware).

Настройка переменных окружения выполняется путем редактирования файла docker-compose.yaml. Пример:

MiddlewareApiRootUri: "https://mesmiddleware.myweb.local/api"

Приложения ExeMES RuntimeClient или ExeSched доступны начиная с версии 2.0

Доступно начиная с версии 2.0

При запуске контейнера ExeSched необходимо передать в переменной окружения DBConnection строку подключения к БД приложения ExeSched.

Настройка переменных окружения выполняется путем редактирования файла docker-compose.yaml. Пример:

DBConnection: "Host=localhost;Port=5432;Database=exesched;Username=user;Password=pass"

Конфигурация подключения приложений ExeMES к серверу лицензирования задается в переменной окружения GCCSettings:Remotehosts.  GCCSettings:Remotehosts содержит перечень серверов лицензирования (хостов, на которых будет осуществляться поиск лицензии, при запуске контейнера). IP адреса серверов указываются через запятую. Настройка переменных окружения выполняется путем редактирования файла docker-compose.yaml. Пример:

GCCSettings:Remotehosts: "170.10.10.1, 170.10.10.2"

Проверка работоспособности ExeMES после установки

Для проверки работоспособности сервисов необходимо перейти в браузере по указанным ниже адресам, авторизоваться под учетной записью пользователя с правами администратора, который был создан при установке и убедиться, что стартовые страницы приложений отображаются корректно.

Если вы хотите отказаться от использования портов в адресах приложений, то необходимо использовать прокси-сервер, например Nginx

В настройках контейнеров ExeMES по умолчанию указана синхронизация времени контейнера с временем хоста, на котором он запущен. Рекомендуется синхронизировать локальное время хостов, на которых запускаются контейнеры ExeMES с корпоративном ntp сервером.

  • No labels