| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:triggers:installation:17x [14.01.2025 06:05] – [Настройка MSSQL:] ekaterina.menkhuzina | product:triggers:installation:17x [21.10.2025 13:48] (текущий) – [Подраздел Rebus:] Белугин Александр |
|---|
| |
| * IIS 8.5 | * IIS 8.5 |
| * Windows server 2012 R2 + | * Windows server 2019 и выше |
| * Один из вариантов СУБД: | * Один из вариантов СУБД: |
| * MSSQL (тестировалось на версии 2016 Express Edition+, минимальная версия MSSQL 2012) + Microsoft SQL Server Management Studio (SSMS) соответствующей версии | * MSSQL (тестировалось на версии 2016 Express Edition+, минимальная версия MSSQL 2012) + Microsoft SQL Server Management Studio (SSMS) соответствующей версии |
| * **Агент** – сервис, который может быть запущен как Windows-service или как консольное приложение. Задача данного сервиса – управлять модулями **Engine**, развёрнутыми в рамках одного хоста. **Агент** осуществляет старт **Engine**-консолей, согласно конфигурации, а также рестарт конкретного **Engine**, если от него поступила соответствующая команда в результате обновления основной системы ADVANTA. | * **Агент** – сервис, который может быть запущен как Windows-service или как консольное приложение. Задача данного сервиса – управлять модулями **Engine**, развёрнутыми в рамках одного хоста. **Агент** осуществляет старт **Engine**-консолей, согласно конфигурации, а также рестарт конкретного **Engine**, если от него поступила соответствующая команда в результате обновления основной системы ADVANTA. |
| |
| ===== Получение архива для распространения с исполняемыми файлами из VisualStudio (для разработчиков): ===== | |
| * Открываем проект Advanta в Visual Studio 2022 | |
| * В проекте Advanta.Triggers.WebClient редактируем appsettings.json, в соответствии с требуемыми настройками (редактирование конфигурации можно сделать позже, на этапе установки прило-жения) | |
| * Вызываем контекстное меню на проекте Advanta.Triggers.WebClient и выбираем пункт Publish | |
| * Выбираем профиль "Distribute" и нажимаем кнопку Publish, после успешного завершения про-цесса скомпилированные исполняемые файлы будут доступны в папке "Advanta.Triggers.WebClient/bin/Release/net5/publish/" относительно пути расположения исход-ных файлов. | |
| * Данные файлы можно заархивировать и распространять клиентам с вышеописанной инструкцией по развертыванию приложения на периферии. | |
| |
| ===== Настройка MSSQL: ===== | ===== Настройка MSSQL: ===== |
| * Открываем SSMS и подключаемся к нашему инстансу MSSQL | - Открыть оснастку SQL Server Management Studio |
| * Заходим в глобальную секцию "Безопасность" и добавляем туда объект "Все пользователи, успешно прошедшие аутентификацию" | - Создать новую базу данных. В названии указать любое значение (например triggers) |
| * Создаем новую БД. | - Создать учетную запись для базы данных модуля триггеров. \\ <image shape="thumbnail"> {{:product:triggers:triggers1.png?direct|}} </image> |
| * Во вновь созданной БД в параметрах "Безопасность" добавляем созданную нами учетную запись пользователя. | - В окне «Обозреватель объектов» (Object Explorer) раскрыть «Безопасность» (Security), нажать правой кнопкой мыши на «Имена входа» (Logins) и выбрать «Создать имя» (New Login) |
| | - В разделе «Общие» (General): |
| <image shape="thumbnail"> {{:product:triggers:triggers1.png?direct|}} </image> | - В поле «Имя входа» (Login name) ввести любое значение (например triggers). Введённый логин затем понадобится указать на сервере приложения для доступа к базе данных. |
| \\ | - Ввести пароль учетной записи. Введённый пароль затем понадобится указать на сервере приложения для доступа к базе данных |
| * При первичном развёртывании или обновлении мажорной версии, необходимо обновить схему базы данных. Для этого первый запуск должен выполниться с ключом Adavan-ta/Database/MigrateOnStartup = true, последующие запуски могут осуществляться с любым значением данного ключа. | - Выставить опцию «Проверка подлинности SQL Server» (SQL Server authentication) |
| | - Убрать опцию «Требовать использование политики паролей» (Enforce password policy) |
| | - Выставить используемый язык «Язык по умолчанию» (Default language), выбрав в выпадающем меню «Русский» (Russian) |
| | - Выставить используемую базу данных «База данных по умолчанию», выбрав в выпадающем списке меню базу, созданную на шаге 2.1.1.2 |
| | - Нажать «OK» |
| | - Открыть созданную учетную запись. Перейти на страницу «Сопоставление пользователей» (User Mapping): |
| | - В окне «Пользователи, сопоставленные с этим именем входа» (User mapped to this login) в столбце «Схема» (Map) установить галочку напротив базы, созданную на шаге 2.1.1.2 |
| | - В окне «Членство в роли базы данных для: <выбранная база данных>» (Database role for membership for) выставить права db_owner. \\ <image shape="thumbnail"> {{:product:triggers:рисунок2.png?direct|}} </image> |
| |
| ===== Настройка PostgreSql: ===== | ===== Настройка PostgreSql: ===== |
| ===== Настройка IIS: ===== | ===== Настройка IIS: ===== |
| * Открываем утилиту управления IIS "Диспетчер служб IIS" | * Открываем утилиту управления IIS "Диспетчер служб IIS" |
| | |
| | <image shape="thumbnail"> {{:product:triggers:рисунок6.png?direct|}} </image> |
| | |
| * Создаем новый пул для приложения: | * Создаем новый пул для приложения: |
| * Имя - любое | * Имя - любое |
| * После создания пула заходим в "Дополнительные параметры", находим пункт "Удостоверение" и меняем его на использование "Особой учетной записи", в качестве учетной записи используем созданную выше учетную запись пользователя. | * После создания пула заходим в "Дополнительные параметры", находим пункт "Удостоверение" и меняем его на использование "Особой учетной записи", в качестве учетной записи используем созданную выше учетную запись пользователя. |
| * В этом же окне "Дополнительные параметры" находим пункт "Режим запуска" и выбираем ре-жим "Always running" - необходимо чтобы процесс всегда работал и не завершался при простое (с версии 17.х не актуально). | * В этом же окне "Дополнительные параметры" находим пункт "Режим запуска" и выбираем ре-жим "Always running" - необходимо чтобы процесс всегда работал и не завершался при простое (с версии 17.х не актуально). |
| | |
| | <image shape="thumbnail"> {{:product:triggers:image_2021_11_15t12_11_42_124z.png?direct|}} </image> |
| | |
| | <image shape="thumbnail">{{:product:triggers:скриншот.jpg?nolink|}}</image> |
| | |
| * Создаем новый сайт: | * Создаем новый сайт: |
| | |
| | <image shape="thumbnail"> {{:product:triggers:рисунок10.png?direct|}} </image> |
| | |
| * Имя - любое | * Имя - любое |
| * Пул - выбираем только что созданный нами пул приложения | * Пул - выбираем только что созданный нами пул приложения |
| * Физический путь - выбираем путь, где будет храниться исполняемые файлы приложения | * Физический путь - выбираем путь, где будет храниться исполняемые файлы приложения |
| | |
| | <image shape="thumbnail"> {{:product:triggers:рисунок_11.png?direct|}} </image> |
| | |
| * Привязка - вводим доменное имя сайта | * Привязка - вводим доменное имя сайта |
| * Выбираем в списке сайтов вновь созданный сайт, заходим в контекстное меню и выбираем пункт "Редактировать разрешение", переходим на вкладку "Безопасность" и добавляем туда создан-ную выше учетную запись пользователя | * Выбираем в списке сайтов вновь созданный сайт, заходим в контекстное меню и выбираем пункт "Редактировать разрешение", переходим на вкладку "Безопасность" и добавляем туда создан-ную выше учетную запись пользователя |
| |
| **Host** – URL адрес сервера для осуществления запросов в API системы Advanta. | **Host** – URL адрес сервера для осуществления запросов в API системы Advanta. |
| | |
| | <image shape="thumbnail"> {{:product:triggers:рисунок3.png?direct|}} </image> |
| |
| **ObjectsSyncTimeout** – период синхронизации типов объектов с системой Advanta. Задаётся в минутах. Параметр необязательный. Значение по умолчанию 15 (т.е. раз в 15 минут). | **ObjectsSyncTimeout** – период синхронизации типов объектов с системой Advanta. Задаётся в минутах. Параметр необязательный. Значение по умолчанию 15 (т.е. раз в 15 минут). |
| "ConnectionString": "User ID=username;Password=userpwd;Host=localhost;Port=5432;Database=AdvantaRebus;", | "ConnectionString": "User ID=username;Password=userpwd;Host=localhost;Port=5432;Database=AdvantaRebus;", |
| | |
| "InputQueueName": "bus_triggers_queue", // "Bus_TriggersInputQueue" - для транспорта "MSSQL" | "InputQueueName": "bus_triggers_queue", // заменить на "Bus_TriggersInputQueue" - для транспорта "MSSQL" |
| "SubscriptionsTableName": "bus_triggers_input_queue_subscriptions", // "Bus_TriggersInputQueue_Subscriptions" - для транспорта "MSSQL" | "SubscriptionsTableName": "Bus_TriggersInputQueue_Subscriptions" |
| "PostgreSqlMessagesTableName": "bus_triggers_messages" //используется только для транспорта "PostgreSql" | "PostgreSqlMessagesTableName": "bus_triggersinputqueue" //используется только для транспорта "PostgreSql" |
| } | } |
| </code> | </code> |
| **Transport** – тип транспорта для Rebus шины сообщений. Возможные варианты: | **Transport** – тип транспорта для Rebus шины сообщений. Возможные варианты: |
| “MSSQL” и “PostgreSql”. Если параметр не указан или пустой, то по умолчанию используется значение “MSSQL”. | “MSSQL” и “PostgreSql”. Если параметр не указан или пустой, то по умолчанию используется значение “MSSQL”. |
| \\ Возможен так же вариант “Emulator” используется для запуска приложения без привязки к rebus. | \\ Возможен также вариант “Emulator” - он используется для запуска приложения без привязки к rebus. |
| |
| **ConnectionString** – строка подключения к базе данных, через которую публикуются сооб-щения rebus. | **ConnectionString** – строка подключения к базе данных, через которую публикуются сообщения rebus. |
| |
| **InputQueueName** – название очереди сообщений (канала), через которую будут поступать сообщения для данного instans-а. Для MSSQL по-умолчанию будет "Bus_TriggersInputQueue", для PostgreSql по-умолчанию будет “bus_triggers_queue”. | **InputQueueName** – название очереди сообщений (канала), через которую будут поступать сообщения для данного instans-а. Для MSSQL по-умолчанию будет "Bus_TriggersInputQueue", для PostgreSql по-умолчанию будет “bus_triggers_queue”. |
| |
| **SubscriptionsTableName** – название таблицы, в которую будет размещена информация о подписках. Для MSSQL по-умолчанию будет "Bus_TriggersInputQueue_Subscriptions", для PostgreSql по-умолчанию будет “ bus_triggers_input_queue_subscriptions ”(должно совпадать с настройками публикующего сервиса). | **SubscriptionsTableName** – название таблицы, в которую будет размещена информация о подписках. Для MSSQL по-умолчанию будет "Bus_TriggersInputQueue_Subscriptions", для PostgreSql по-умолчанию будет "Bus_TriggersInputQueue_Subscriptions" (должно совпадать с настройками публикующего сервиса). |
| |
| **PostgreSqlMessagesTableName** – название таблицы, через которую будет вестись обмен сообщениями в случае PostgreSql транспорта. Пу-умолчанию будет использоваться | **PostgreSqlMessagesTableName** – название таблицы, через которую будет вестись обмен сообщениями в случае PostgreSql транспорта. По-умолчанию будет использоваться “bus_triggersinputqueue” (должно совпадать с настройками публикующего сервиса). |
| “bus_triggers_messages” (должно совпадать с настройками публикующего сервиса). | Для MSSQL этот параметр игнорируется, так как для MSSQL Rebus использует (и при необходимости создаёт) таблицу с именем, совпадающим с названием входящей очереди сообщений (InputQueueName). |
| Для MSSQL параметр игнорируется, так как для MSSQL Rebus использует (и при необходи-мости создаёт) таблицу с именем, совпадающим с названием входящей очереди сообще-ний (InputQueueName). | |
| \\ | \\ |
| \\ | \\ |
| **InstanceName** – наименование запускаемого инстанса модуля Триггеры. Данное наимено-вание добавляется к логам и в тему email уведомлений. | **InstanceName** – наименование запускаемого инстанса модуля Триггеры. Данное наимено-вание добавляется к логам и в тему email уведомлений. |
| |
| | ==== Раздел HashiCorpVault: ==== |
| | Данный раздел настраивается только в том случае, если требуется часть конфиденциальных строк получать через [[product:settings:system:vault|HashiCorp Vault]]. |
| | |
| | **Address** – адрес сервера Vault, обязательный параметр. Пример значения: ''https:⁄⁄vault.yourcompany.ru:8200''. |
| | |
| | **RoleId** – Bдентификатор (GUID) роли, обязательный параметр. Пример значения: "b52f920d-dccf-76ad-e7e0-a2d3eb23abc3". |
| | |
| | **SecretId** – Идентификатор (GUID) секрета, обязательный параметр. Пример значения: "cfa2b4f6-4a92-5ec3-5253-acf5a026ddec". |
| | |
| | **Version** – версия контейнера. Возможные варианты: "V1" или "V2", обязательный параметр. |
| | |
| | **MountPoint** – точка монтирования контейнера секретов, обязательный параметр. Пример значения: "kv-v2". |
| | |
| | **Path** – путь к секретам, обязательный параметр. Пример значения: ''dbPasswords''. |
| | |
| | Ссылка на секрет в ''Vault'' могут прописываться для любых значений строковых параметров в любых разделах файла конфигурации (кроме раздела HashiCorpVault) в формате: ''{$your_hashicorp_vault_key$}'' |
| | |
| | Пример для параметра: ''ConnectionString'': ''{$triggers_db_connection$}'' |
| | |
| | <callout type="warning" icon="true">В разделе HashiCorpVault ссылок на секреты быть не должно.</callout> |
| ===== Развёртывание агента ===== | ===== Развёртывание агента ===== |
| |
| |
| Для запуска движка необходимо использовать те же настройки ''appsettings.json'', которые используются для запуска сайта. \\ Отличаться может только раздел ''Logging''. В противном случае движок и сайт не смогут найти друг друга в процессе инициализации канала коммуникации по UDP протоколу. | Для запуска движка необходимо использовать те же настройки ''appsettings.json'', которые используются для запуска сайта. \\ Отличаться может только раздел ''Logging''. В противном случае движок и сайт не смогут найти друг друга в процессе инициализации канала коммуникации по UDP протоколу. |
| |
| ===== Перечень использованных сторонних компонентов ===== | |
| |
| === Клиент: === | |
| * **Material UI** – Фреймворк для верстки. Содержит в себе набор компонентов в стиле google material. Лицензия MIT. | |
| * **Axios** – HTTP клиент для запросов к API. Лицензия MIT. | |
| * **Сlassnames** – Библиотека для модификации классов элементов DOM дерева. Лицен-зия MIT. | |
| * **Lodash** – Библиотека с набором функций для работы с данными. Лицензия MIT. | |
| * **Monaco Editor** – это редактор кода, который можно встроить в браузер. Лицензия MIT. | |
| * **QueryString** – Библиотека для удобного извлечения query параметров из адресной строки браузера. Лицензия MIT. | |
| * **StyledComponents** – Библиотека стилизации компонентов. Лицензия MIT. | |
| |
| === Сервер (Движок / Engine) === | |
| * **Stateless** – Библиотека для описания и исполнения в .net core коде машины состояний. APACHE LICENSE, VERSION 2.0 | |
| * **Npgsql.EntityFrameworkCore.PostgreSQL** – PostgreSQL provider для Entity Framework Core ORM. Лицензия по адресу https://github.com/npgsql/efcore.pg/blob/main/LICENSE '' “ Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted.”'' | |
| * **Rebus** – Инфраструктура для организации очереди сообщений. Лицензия MIT. | |
| |
| |
| |