Установка Оркестратора на веб-сервер Nginx
Конфигурация:
Windows Server 2019
Nginx
PostgreSQL
RabbitMQ
Видеоинструкция
С видеоинструкцией по установке Оркестратора можно ознакомиться здесь.
Начальная подготовка
Подробнее в «Руководстве по предварительной настройке машины Оркестратора под Windows 2016 Server.docx».
Переименуем сервер, дав ему простое и понятное название. Например, ORCHESTRATOR.
Раскомментируем в файле
C:\Windows\System32\drivers\etc\hosts
следующую строку:
Разрешаем удаленные подключения к хосту. Заходим в Start Menu > Control Panel > System > Advanced System Settings > Remote и включаем настройку, как на рисунке ниже:
Шаг 1. Подготовка и установка дистрибутивов
Подробнее в «Руководстве по предварительной настройке машины Оркестратора под Windows 2016 Server.docx».
Создаем папку
C:\Primo
.Создаем папку
C:\Install
и копируем в нее нужные дистрибутивы:
Устанавливаем Google Chrome. Обновляем его до последней версии и делаем браузером по умолчанию.
Устанавливаем Notepad++. Все опции оставляем по умолчанию.
Устанавливаем PowerShell. При установке включаем все чекбоксы:
Создаем папку
docs
на рабочем столе и копируем туда следующую документацию из комплекта поставки:
Шаг 2. Настройка PostgreSQL
Подробнее в «Руководстве по установке PostgreSQL под Windows 2016 Server.docx».
Устанавливаем PostgreSQL Server:
Распаковываем архив
postgresql-13.4-1-windows.zip
в папкуC:\Install
.Кликаем по файлу
C:\Install\postgresql-13.4-1-windows-x64.exe
.Выбираем Да в появившемся окне:
В следующем окне выбираем Далее.
Выбираем директорию (1), куда будет установлена программа. Оставляем все без изменения и жмем Далее (2).
В окне выбора компонентов тоже все оставляем по умолчанию и нажимаем Далее.
Прописываем путь
C:\Primo\PostgreSQL\Data
(1), где будут располагаться файлы базы данных Оркестратора и конфигурационные файлы, нажимаем Далее (2).
Вводим пароль* (1) и его подтверждение (2) для суперпользователя БД (postgres), нажимаем Далее.
*В дальнейшем пароль можно будет изменить в PostgreSQL.
В следующем окне не меняем настройки порта по умолчанию (
5432
) и нажимаем Далее.
Из выпадающего меню (1) выбираем Русский, Россия (2) и нажимаем Далее (3).
Перепроверяем введенные данные (1). В случае необходимости можно вернуться, кликнув Назад, и исправить параметры. Если все верно, выбираем Далее.
В следующем окне нажимаем Далее.
Дожидаемся завершения процесса установки.
Stack Builder не понадобится, убираем галочку (1) и нажимаем Завершить (2):
Заходим в PostgreSQL через pgAdmin (пользователь postgres/postgres). pgAdmin установится вместе с PostgreSQL и доступен через меню Пуск**.
**Требуется для определения параметров оборудования. Если для этого используется сервис MachineInfo, то не нужно.
15.1. Создаем пользователя, под которым будут работать компоненты Оркестратора, и необходимые БД:
15.2. В БД ltoolslicense выполняем скрипты из папки C:\Install\ltoolslicense
:
get_cpu_id.sql;
get_hdd_id.sql;
get_host_name.sql.
🔸 ВАЖНО! При выполнении скриптов из postgresql-13/ltoolslicense нужно следить, чтобы случайно не внести изменения в текст скрипта. Недопустимо вносить даже незначимые, с точки зрения кода скрипта, пробелы и пустые строки. В том числе, если отредактировали скрипт в редакторе, который заменил визуально ненаблюдаемые символы конца строки (отличаются для Windows- и Linux-строк).
Настраиваем доступ к БД по сети (по умолчанию она доступна только локально по localhost):
Открываем папку
C:\Primo\PostgreSQL\Data
.Вносим изменения в файл
postgresql.conf
:
Вносим изменения в файл
pg_hba.conf
:
Перезапускаем службу PostgreSQL.
Проверяем статус работы службы:
✅ Установка и настройка сервера БД завершена.
Шаг 3. Установка RabbitMQ
Подробнее в «Руководстве по установке RabbitMQ под Windows 2016 Server.docx».
Разрешаем localhost в файле
C:\Windows\System32\drivers\etc\hosts
.
Разархивируем
rabbitmq.zip
в ту же папкуC:\Install\rabbitmq
.Сначала устанавливаем Erlang (otp_win64_23.2.exe), все параметры оставляем по умолчанию.
Затем устанавливаем сам RabbitMQ (rabbitmq-server-3.8.11.exe), все параметры оставляем по умолчанию.
Производим первоначальное конфигурирование RabbitMQ:
Открываем веб-интерфейс управления RabbitMQ на http://localhost:15672, убеждаемся, что он открывается:
Заходим под пользователем admin/Qwe123!@#.
Дальнейшее управление RabbitMQ можно осуществлять через этот веб-интерфейс.
Шаг 4. Установка и запуск служб
MachineInfo
Подробнее в «Руководстве по установке MachineInfo как службы под Windows 2016 Server.docx».
В версии Windows 2016 Server среда исполнения ASP .NET Core предустановлена. Поэтому сразу устанавливаем MachineInfo.
Разархивируем
C:\Install\MachineInfo.zip
в папкуC:\Primo\MachineInfo
. Можно при помощи команды в PowerShell:
Создаем системную переменную окружения. Для этого в PoweShell выполняем команду:
Регистрируем
Primo.Orchestrator.MachineInfo.exe
как службу Windows и сразу запускаем её. Она должна работать как локальная служба. Для этого в PowerShell последовательно выполняем команды:
После чего созданная служба Primo.Orchestrator.MachineInfo будет отображаться в списке всех служб как запущенная:
Открываем порт
5051
на файерволе.Если используется один сервер с MachineInfo, в конфигурационном файле службы WebApi прописываем ссылку на него.
Параметр Timeout (по умолчанию 4 сек.) – это время ответа, после которого сервис считается недоступным.
Если используется кластер MachineInfo, или MachineInfo используется в гео-кластере, в конфигурационном файле службы WebApi прописываются ссылки на все узлы кластера:
Порядок узлов имеет значение. В момент генерации запроса на лицензию должны быть доступны все узлы. Узлы нельзя скрывать за балансировщиком нагрузки (load balancer)!
Notifications
Подробнее в «Руководстве по установке Notifications под Windows 2016 Server.docx».
Разархивируем
C:\Install\Notifications.zip
в папкуC:\Primo\Notifications
.Редактируем конфигурацию Notifications в файле
C:\Primo\Notifications\appsettings.ProdWin.json
:Правим секцию Email, отвечающую за SMTP-сервер, с которого будет происходить рассылка.
Проверяем, что значение системной переменной окружения DOTNET_ENVIRONMENT равно ProdWin. Для этого в PoweShell выполняем команду:
Если системная переменная окружения DOTNET_ENVIRONMENT не была создана, то создаем ее. Для этого в PowerShell выполняем команду:
Регистрируем
Primo.Orchestrator.Notifications.exe
как службу Windows и сразу запускаем её. Она должна работать как сетевая служба. Для этого в PoweShell последовательно выполняем команды:
После чего созданная служба Primo.Orchestrator.Notifications будет отображаться в списке всех служб как запущенная.
Через интерфейс Оркестратора переходим в раздел Настройки > Пользователи. Редактируем для пользователей параметры рассылки - указываем e-mail и типы событий:
RDP2
Подробнее в «Руководстве по установке RDP2 под Windows 2016 Server.docx».
Разархивируем
C:\Install\RDP2.zip
в папкуC:\Primo\RDP2
.Редактируем конфигурацию RDP2 в файле
C:\Primo\RDP2\appsettings.ProdWin.json
:Меняем в секции Orchestrator адрес Оркестратора и учетку пользователя, можно использовать только системного пользователя rdpservice:
Если поменялся пароль пользователя rdpservice – меняем. Пароль предварительно шифруем программой шифрования паролей.
При необходимости устанавливаем значение AddressFilter для фильтрации по машине Агента либо оставляем поле пустым (будут использованы все Агенты системы).
Настраиваем путь до файла с логом и период ротации файла с логом (по умолчанию - день).
Проверяем, что значение системной переменной окружения DOTNET_ENVIRONMENT равно ProdWin. Для этого в PoweShell выполняем команду:
Создаем системную переменную окружения DOTNET_ENVIRONMENT, если она не создана ранее. Для этого в PowerShell выполняем команду:
Регистрируем
Primo.Orchestrator.RDP2.exe
как службу Windows и сразу запускаем её. Она должна работать как локальная служба. Для этого в PowerShell последовательно выполняем команды:
Запускаем службу. Служба должна работать под Local System account:
Переходим на вкладку Восстановление (Recovery) и проверяем, что действия при сбое установлены:
Проверяем через интерфейс Оркестратора, что RDP-сессия устанавливается корректно:
Параметры сессии должны быть установлены следующим образом:
Authentication Level = Attemp Authentication
Negotiate Security Layer = True
RobotLogs
Подробнее в «Руководстве по установке RobotLogs как службы под Windows 2016 Server.docx».
В версии Windows 2016 Server среда исполнения ASP .NET Core предустановлена. Поэтому сразу устанавливаем RobotLogs.
Сначала требуется установить RabbitMQ (см. «Руководство по установке RabbitMQ под Windows 2016 Server.docx»).
Разархивируем
C:\Install\RobotLogs.zip
в папкуC:\Primo\RobotLogs
. Можно при помощи команды в PowerShell:
Создаем системную переменную окружения, если не создана ранее. Для этого в PoweShell выполняем команду:
Настраиваем конфигурационный файл:
Настраиваем строки подключения в БД:
Настраиваем UserName и Password сервера RabbitMQ, который используется для обработки логов со скринами рабочего стола:
Настраиваем Host, UserName и Password сервера RabbitMQ, который используется для интеграции с Оркестратором:
Открываем порт
5672
на файерволе сервера RabbitMQ, который используется для интеграции с Оркестратором.Сервер RabbitMQ, который используется для интеграции с Оркестратором, общий для очередей Primo.Orchestrator.RobotLogs и Primo.Orchestrator.WebApi. Поэтому требуется соблюдать соответствие названий очередей и обменников.
Настраиваем URL Оркестратора. При необходимости, можно поменять пароль встроенной системной записи Orchestrator – одновременно через UI Оркестратора и в этой секции конфига:
Настраиваем ScreenFilePath – путь до файлов со скринами рабочего стола, которые собираются с машины робота. Папка по этому пути должна быть создана заранее, и на неё должны быть настроены права на чтение и запись для всех.
Настраиваем в соответствии с конфигурационным файлом WebApi список тенантов:
Регистрируем
Primo.Orchestrator.RobotLogs.exe
как службу Windows и сразу запускаем её. Она должна работать как локальная служба. Для этого в PowerShell последовательно выполняем команды:
После чего созданная служба Primo.Orchestrator.RobotLogs отобразится в списке всех служб как запущенная.
Открываем порт
56748
на файерволе, если служба RobotLogs не на одном сервере с Nginx для WebApi.Проверяем, что в конфиге Nginx настроено проксирование на RobotLogs*:
*Или аналогично настроено в IIS для узла UI, если используется IIS.
В конфигурационном файле Primo.Orchestrator.WebApi переключаем прием логов на сервис RobotLogs и перезапускаем Primo.Orchestrator.WebApi:
Если запросы в RobotLogs проксируются через отдельный от WebApi эндпоинт, нужно указать в конфиг-файле Primo.Orchestrator.WebApi этот эндпоинт в RobotLogsBaseUrl:
В настоящее время не поддерживается. Зарезервирован для дальнейшей оптимизации приема логов от роботов.
Тонкая настройка производительности приема логов настраивается в секции InputBufferRobotLogs:
MaxQueueLength – максимальный размер входного буфера приема логов от робота. Чем выше, тем больший размер пачек логов робот без потерь может слать в Оркестратор.
MaxBatchSize – максимальный размер пачки за один раз сбрасываемый сервисом в БД ltoolslogs. Чем выше, тем меньше обращений в БД потребуется, но тем большее количество данных за один раз должно быть передано.
ThreadSleep – время (мс) опроса входного буфера.
States
Подробнее в «Руководстве по установке States под Windows 2016 Server.docx».
Разархивируем
C:\Install\States.zip
в папкуC:\Primo\States
.Редактируем конфигурационный файл States -
C:\Primo\States\appsettings.ProdWin.json
:Находим секцию ConnectionStrings:
И меняем значение HOST для всех строк подключения к БД на реальный IP серверов БД:
Если поменялся пользователь/пароль БД – их тоже меняем.
Проверяем, что значение системной переменной окружения DOTNET_ENVIRONMENT равно ProdWin. Для этого в PoweShell выполняем команду:
Создаем системную переменную окружения DOTNET_ENVIRONMENT, если она не создана ранее. Для этого в PowerShell выполняем команду:
Регистрируем
Primo.Orchestrator.States.exe
как службу Windows и сразу запускаем. Она должна работать как сетевая служба. Для этого в PowerShell последовательно выполняем команды:
После чего созданная служба Primo.Orchestrator.States будет отображаться в списке всех служб как запущенная.
WebApi
Подробнее в «Руководстве по установке WebApi как службы под Windows 2016 Server.docx».
В версии Windows 2016 Server среда исполнения ASP .NET Core предустановлена. Поэтому сразу устанавливаем WebApi.
Разархивируем
C:\Install\WebApi.zip
в папкуC:\Primo\WebApi
. Можно при помощи команды в PowerShell:Редактируем конфигурацию WebApi в файле
C:\Primo\WebApi\appsettings.ProdWin.json
:Меняем адрес на реальный IP вашего сервера. См.
nginx.config
и «Руководство по установке Nginx под Windows 2016 Server.docx».
Создаем папку для публикации дистрибутивов робота, например,
C:\tmp
, и указываем её в конфигеappsettings.ProdWin.json
:Меняем в файле
appsettings.ProdWin.json
в секции ConnectionStrings значение HOST для всех строк подключения к БД на реальный IP серверов БД.Для PostgreSQL это секция:
Где меняем значение атрибута:
Для MS SQL SERVER меняем значение здесь:
Если для работы лицензий используется сервис получения параметров оборудования, то настраиваем WebApi на работу с этим сервисом – вводим адрес сервиса:
Если поменялся пользователь/пароль БД – их тоже меняем.
Создаем системную переменную окружения. Для этого в PoweShell выполняем команду:
Регистрируем
Primo.Orchestrator.WebApi.exe
как службу Windows и сразу запускаем. Она должна работать как локальная служба. Для этого в PowerShell последовательно выполняем команды:После чего созданная служба Primo.Orchestrator.WebApi будет отображаться в списке всех служб как запущенная:
🔸 Служба может не запуститься. Наиболее вероятная причина – это неверный Connection string (пароль) в appsettings.ProdWin.json
, или не развернута/не настроена какая-либо из четырех БД Оркестратора.
При обновлении службы WebApi может потребоваться дополнительная настройка для RabbitMQ. Для выполнения настройки необходимо перед стартом службы WebApi запустить скрипт из комплекта поставки:
deletequeues.bat
– для RabbitMQ, запущенном на ОС Windows;deletequeues.sh
– для RabbitMQ, запущеном на ОС Linux.
Скрипты необходимо запустить на сервере, на котором запущен RabbitMQ.
Результат шага 4
После того, как все перечисленные службы установлены, они должны появиться в диспетчере служб Windows:
Шаг 5. Установка Nginx как службы Windows
Подробнее в «Руководстве по установке Nginx в качестве службы под Windows 2016 Server.docx».
Чтобы установить Nginx в качестве службы, необходимо:
Разархивировать файл
nginx-service.zip
, который идет в комплекте поставки, в папкуC:\Primo\nginx-1.21.1
(версия Nginx может измениться).
Щелкнуть правой кнопкой мыши по пустому простанству и открыть PowerShell от имени администратора:
Использовать команду установки:
После успешной установки службы запускать либо останавливать ее можно либо из Управление сервером > Службы:
Либо из PowerShell (после установки службы окно PowerShell необходимо перезапустить) командами:
Установка UI на Nginx
Подробнее в «Руководстве по установке UI на Nginx под Windows 2016 Server.docx».
Для варианта реализации Front на основе Nginx копируем содержимое папки UI из C:\install\UI.zip
в C:\Primo\nginx-1.21.1\html
.
После этих шагов перезагружаем сервер.
Шаг 6. Проверка работы служб и Оркестратора
Заходим в список служб и проверяем, что все ранее установленные службы запущены:
Это службы:
nginx;
postgresql-x64-13;
Primo.Orchestrator.MachineInfo;
Primo.Orchestrator.Notifications;
Primo.Orchestrator.RDP2;
Primo.Orchestrator.RobotLogs;
Primo.Orchestrator.States;
Primo.Orchestrator.WebApi;
RabbitMQ.
Если какая-то из служб остановлена, то запускаем ее вручную.
Когда все службы запущены и работают, переходим по адресу: https://localhost:44392/
Логин: admin Пароль: Qwe123!@#
✅ На этом установка и базовая настройка завершены.
Last updated