Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:triggers:installation:17x [14.01.2025 06:05] – [Настройка MSSQL:] ekaterina.menkhuzinaproduct:triggers:installation:17x [21.10.2025 13:48] (текущий) – [Подраздел Rebus:] Белугин Александр
Строка 10: Строка 10:
  
   * 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) соответствующей версии
Строка 30: Строка 30:
   * **Агент** – сервис, который может быть запущен как 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: =====
Строка 57: Строка 59:
 ===== Настройка IIS: ===== ===== Настройка IIS: =====
   * Открываем утилиту управления IIS "Диспетчер служб IIS"   * Открываем утилиту управления IIS "Диспетчер служб IIS"
 +
 +<image shape="thumbnail"> {{:product:triggers:рисунок6.png?direct|}} </image>
 +
   * Создаем новый пул для приложения:   * Создаем новый пул для приложения:
   * Имя - любое   * Имя - любое
Строка 63: Строка 68:
   * После создания пула заходим в "Дополнительные параметры", находим пункт "Удостоверение" и меняем его на использование "Особой учетной записи", в качестве учетной записи используем созданную выше учетную запись пользователя.   * После создания пула заходим в "Дополнительные параметры", находим пункт "Удостоверение" и меняем его на использование "Особой учетной записи", в качестве учетной записи используем созданную выше учетную запись пользователя.
   * В этом же окне "Дополнительные параметры" находим пункт "Режим запуска" и выбираем ре-жим "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>
 +
     * Привязка - вводим доменное имя сайта     * Привязка - вводим доменное имя сайта
   * Выбираем в списке сайтов вновь созданный сайт, заходим в контекстное меню и выбираем пункт "Редактировать разрешение", переходим на вкладку "Безопасность" и добавляем туда создан-ную выше учетную запись пользователя   * Выбираем в списке сайтов вновь созданный сайт, заходим в контекстное меню и выбираем пункт "Редактировать разрешение", переходим на вкладку "Безопасность" и добавляем туда создан-ную выше учетную запись пользователя
Строка 96: Строка 112:
  
 **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 минут).
Строка 125: Строка 143:
       "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>
Строка 133: Строка 151:
 **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).+
 \\ \\
 \\ \\
Строка 176: Строка 193:
 **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>
 ===== Развёртывание агента ===== ===== Развёртывание агента =====
  
Строка 221: Строка 257:
  
 Для запуска движка необходимо использовать те же настройки ''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. 
- 
- 
-