Установка Оркестратора на веб-сервер Nginx
Last updated
Last updated
Конфигурация:
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 и включаем настройку, как на рисунке ниже:
Подробнее в «Руководстве по предварительной настройке машины Оркестратора под Windows 2016 Server.docx».
Создаем папку C:\Primo
.
Создаем папку C:\Install
и копируем в нее нужные дистрибутивы:
Устанавливаем Google Chrome. Обновляем его до последней версии и делаем браузером по умолчанию.
Устанавливаем Notepad++. Все опции оставляем по умолчанию.
Устанавливаем PowerShell. При установке включаем все чекбоксы:
Создаем папку docs
на рабочем столе и копируем туда следующую документацию из комплекта поставки:
Подробнее в «Руководстве по установке 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.
Проверяем статус работы службы:
✅ Установка и настройка сервера БД завершена.
Подробнее в «Руководстве по установке 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/ваш пароль.
Дальнейшее управление RabbitMQ можно осуществлять через этот веб-интерфейс.
Подробнее в «Руководстве по установке 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 под 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 и типы событий:
Начиная с версии Оркестратора 1.24.6 в работу службы LTools.Orchestrator.Notifications
добавлена возможность конфигурировать параметр SecureSocketOption
для почтовой рассылки.
SecureSocketOption
SecureSocketOptions.None (0)
Не должно использоваться шифрование SSL или TLS.
SecureSocketOptions.Auto (1)
Разрешает MailKit.IMailService
выбирать, какие параметры SSL или TLS использовать (по умолчанию). Если сервер не поддерживает SSL или TLS, то соединение будет продолжаться без шифрования.
SecureSocketOptions.SslOnConnect (2)
Соединение должно сразу использовать шифрование SSL или TLS.
SecureSocketOptions.StartTls (3)
Повышает соединение до использования шифрования TLS сразу после чтения приветствия и возможностей сервера. Если сервер не поддерживает расширение STARTTLS, то соединение завершится с ошибкой и будет выброшено исключение System.NotSupportedException
.
SecureSocketOptions.StartTlsWhenAvailable (4)
Повышает соединение до использования шифрования TLS сразу после чтения приветствия и возможностей сервера, но только если сервер поддерживает расширение STARTTLS.
Для настройки SecureSocketOption
необходимо в конфигурационном файле в секции e-mail указать соответствующую цифру в зависимости от настроек почтового сервера.
Обратите внимание, что если задан параметр SecureSocketOption, то параметр UseSsl будет игнорироваться.
Подробнее в «Руководстве по установке 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 как службы под 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 под 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 как службы под 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.
После того, как все перечисленные службы установлены, они должны появиться в диспетчере служб Windows:
Подробнее в «Руководстве по установке Nginx в качестве службы под Windows 2016 Server.docx».
Чтобы установить Nginx в качестве службы, необходимо:
Разархивировать файл nginx-service.zip
, который идет в комплекте поставки, в папку C:\Primo\nginx-1.21.1
(версия Nginx может измениться).
Щелкнуть правой кнопкой мыши по пустому простанству и открыть PowerShell от имени администратора:
Использовать команду установки:
После успешной установки службы запускать либо останавливать ее можно либо из Управление сервером > Службы:
Либо из PowerShell (после установки службы окно PowerShell необходимо перезапустить) командами:
Подробнее в «Руководстве по установке UI на Nginx под Windows 2016 Server.docx».
Для варианта реализации Front на основе Nginx копируем содержимое папки UI из C:\install\UI.zip
в C:\Primo\nginx-1.21.1\html
.
После этих шагов перезагружаем сервер.
Заходим в список служб и проверяем, что все ранее установленные службы запущены:
Это службы:
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 Пароль: введите свой пароль.
✅ На этом установка и базовая настройка завершены.