Перейти к содержанию

Установка TESSA для серверов Windows

Для установки TESSA необходимо выполнить по порядку всё, указанное в подразделах Предварительные настройки, Установка TESSA и Установка сервисов TESSA.

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

Important

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

Tip

По завершении установки для production-сервера рекомендуется обратиться к разделу Настройка production сервера для повышения безопасности и противодействия атакам.

Предварительные настройки

Подготовка СУБД

TESSA работает со следующими СУБД:

  • Microsoft SQL
  • PostgreSQL

Вне зависимости от используемой СУБД её минимальная версия указана в требованиях.

Для полноценной работы сервера баз данных типа Microsoft SQL достаточно использовать SQL Express Edition. Однако при установке SQL Express необходимо выполнить следующее:

  • Выбрать Пользовательский тип установки.
  • Для корректной работы полнотекстового поиска выбрать соответствующий компонент при установке сервера БД.
  • Если вход в СУБД будет осуществляться по логину, аутентификация сервера БД должна включать SQL-аутентификацию.
  • После установки открыть SQL Server Configuration Manager, перейти в Сетевая конфигурация SQL Server -> Протоколы для <имя сервера> и убедиться, что включены протоколы Именованные каналы и TCP/IP. Если по умолчанию они не включены, их необходимо включить, после чего перезагрузить сервер БД.

Компоненты для работы с системой

На сервере приложений необходимо установить (или включить в компонентах):

  • IIS и его дополнительные компоненты:
    • Проверка подлинности Windows
      • EN: Internat Information Services -> World Wide Web Services -> Security -> Windows Autthentification
      • RU: Службы IIS -> Службы Интернета -> Безопасность -> Проверка подлинности Windows
    • Консоль управления IIS
      • EN: Internet Information Services -> Web Management Tools -> IIS Management Console
      • RU: Службы IIS -> Средства управления веб-сайтом -> Консоль управления IIS

Установить компоненты можно через Панель управления: Программы и компоненты -> Включение или отключение компонентов Windows.

После установки компонентов Диспетчер служб IIS будет установлен на компьютер как исполняемое приложение, настройка веб-сервиса TESSA будет производиться через него.

Создание учетной записи для работы пула приложений и системных сервисов

Веб-сервисы (пул приложений) и системный сервис должны выполняться от выделенной учетной записи.

При наличии домена (Active Directory) рекомендуется создать учетную запись в домене. Типичное название учетной записи tessa, права в домене по умолчанию.

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

Созданную учетную запись необходимо включить в группу IIS_IUSRS на сервере приложений, а также рекомендуется дать права администратора на данном сервере. При отсутствии такой возможности необходимо дать права пользователя и как минимум доступ на чтение папки и вложенных подпапок в C:\inetpub\wwwroot\tessa (см. далее настройку сервера приложений). В зависимости от конфигурации сервера могут потребоваться дополнительные права. Рекомендуется в таком случае выполнять первичную установку с правами администратора, которые затем ограничить.

Установка Redis

Redis - это хранилище данных, необходимое для хранения активных операций, сессий, блокировок, информации по техническому обслуживанию и мониторингу. Для корректной работы TESSA Redis необходим. Установка Redis описана в этом разделе.

Предварительная настройка IIS

Поддержка HTTPS

TESSA работает по протоколу HTTPS, для успешной работы которого необходимо привязать к сайту SSL-сертификат.

Для этого в консоли IIS нужно выбрать узел сайта в дереве (например, Default Web Site) и в правом меню выбрать пункт Привязки.

В открывшемся окне, если нет пункта с типом https, нажать Добавить.

Далее нужно заполнить настройки привязки: Типhttps, Сертификаты SSL – SSL-сертификат для работы системы. Это может быть как подтвержденный соответствующим центром сертификат, так и самозаверенный.

Note

Создание самозаверенных сертификатов описано в этом разделе.

Установка пакетов для веб-сервиса

После установки сертификата необходимо установить .NET Runtime & Windows Server Hosting bundle

На странице загрузки в разделе Среда выполнения ядра ASP.NET 9.0.x по ссылке Hosting Bundle находится последняя доступная версия нужного инструмента, её нужно скачать и установить.

После установки требуется перезапустить сервер или в консоли, запущенной от имени Администратора, выполнить две команды: net stop was /y, а затем net start w3svc.

Установка TESSA

Настройка веб-сервиса через IIS

Создание пула приложений

Note

Здесь и далее физически пути к файлам и директориям внутри сборки будут даваться относительно верхней директории сборки. Если архив со сборкой распакован в папку C:\Tessa\Build3.0, то указание директории Applications\SchemeEditor означает директорию C:\Tessa\Build3.0\Applications\SchemeEditor.

Important

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

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

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

Имя: tessa
Версия среды CLR .NET…: Без управляемого кода

Остальные поля можно оставить как есть.

При нажатии ОК пул будет создан и отобразится в списке. Для настройки его нужно выделить и выбрать в меню Действия пункт Дополнительные параметры…

В открывшемся окне в поле Удостоверение нажать на кнопку с изображением трех точек:

Выбрать Особая учетная запись, нажав на кнопку Установить… откроется окно, где необходимо указать учетную запись (в формате имя домена\имя учетной записи и пароль):

Также нужно установить Максимальное число рабочих процессов равным числу физических ядер сервера. Это очень рекомендуется делать на системах, для которых ожидается высокая нагрузка.

Настройка приложения

  1. Чтобы убедиться, что веб-сайт Default Web Site запущен, нужно щелкнуть правой кнопкой на сайте, далее Управление веб-сайтом -> Запустить. Если пункт неактивен, сайт уже запущен.

  2. Создать папку C:\inetpub\wwwroot\tessa.

  3. Скопировать в нее из папки сборки Services всё содержимое, т.е. все подпапки и json файлы

  4. Скопировать в папку файл лицензии с расширением jlic или tlic.

  5. В диспетчере IIS отобразится Default Web Site и вложенная в него папка tessa\web. Папку необходимо преобразовать в приложение через контекстное меню и указать в настройках созданный ранее пул приложений (для примера - tessa):

  6. На уровне корневой папки tessa в разделе Параметры SSL включить флажок Требовать SSL, сертификаты клиента: игнорировать.

  7. На уровне приложения web в разделе Проверка подлинности включить Анонимная проверка подлинности и Проверка подлинности Windows, а все остальные отключить.

Настройка конфигурационных файлов

Далее необходимо настроить параметры конфигурационного файла веб-сервиса. Конфигурационные файлы называются app.json, app-*.json и applocal-*.json, они находятся в папке: C:\inetpub\wwwroot\tessa\.

  • В файле app.json содержатся основные настройки.
  • В файле app-db.json указаны строки подключения к БД.
  • В файле app-web.json заданы настройки веб-сервера Kestrel, ограничения для HTTP-запросов/ответов а также дополнительные параметры веб-сервиса.
  • В файле app-ext.json заданы переопределения некоторых из настроек для Windows и Docker. Файл отсутствует для Linux-сервисов, настройки для Linux определены в app.json. Если настройка, которую нужно изменить, присутствует в этом файле, то её надо изменить либо в нём же, либо удалить файл app-ext.json и указать актуальные значения в app.json.
  • В файле app-oauth.json заданы настройки для конфигурирования внешних провайдеров, с помощью которых осуществляется вход в систему по протоколу OAuth. Подробнее см. OAuth.

Подробнее о каждой строке можно узнать в следующем разделе.

Для настройки подключения:

  • В app.json:

    • В строке Path блока windows -> Settings -> Webbi нужно указать путь до файла /web/web.config.
    • В строке ServerCode блока Settings необходимо проверить правильность кода сервера.
  • В app-ext.json:

    • В строке GuyFawkesAuth проверить путь и название приложения и, при необходимости, их сменить.

Также необходимо отредактировать файл app-db.json:

  • Если при установке выбрана СУБД Microsoft SQL, то достаточно проверить свойства строки ConnectionsStrings -> default, а именно:

    • Имя сервера в Server.
    • Имя базы данных в Database.
    • Логин администратора и его пароль в User ID и Password.
  • Если выбрана СУБД PostgreSQL, то необходимо изменить строку подключения к БД, образец есть в блоке //ConnectionStings PostgreSQL, после чего проверить:

    • Адрес сервера БД в Host
    • Имя базы данных в Database
    • Логин администратора и его пароль в User ID и Password.

Проверка работы веб-сервиса

Important

Прежде чем проверять работу веб-сервиса, нужно обратиться к разделу Генерация нового токена безопасности веб-сервиса системы, чтобы сгенерировать и установить новую подпись токена безопасности.

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

Проверить, что подпись сгенерирована, можно в конфигурационном файле веб-сервиса.

Страница проверки веб-сервиса находится по адресу: https://SERVER_NAME/tessa/web/check, где SERVER_NAME - сетевое имя сервера приложений.

Note

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

Tip

Команда tadmin check без параметров выведет в окно консоли содержимое страницы по адресу /check. Необязательным параметром без имени можно указать базовый адрес веб-сервиса, например, tadmin check http://127.0.0.1:5000.

Откроется страница примерно следующего содержания. Если на странице ошибки не отображаются, то веб-сервис корректно настроен.

Обработка фоновых операций

Система поддерживает 2 способа обработки фоновых операций:

Important

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

Для обработки фоновых операций системы нужно выполнить настройку по одному из ниже описанных подразделов, в зависимости от выбранного способа обработки, и дальше выполнить настройку плагинов в конфигурационном файле app-plugins.json (см. Настройка плагинов).

Настройка Chronos

Chronos – системный сервис, который необходим для корректной работы некоторых компонентов системы. Он занимается периодическим расчетом замещений, рассылкой почтовых уведомлений и т.д.

Необходимо выполнить предварительную настройку данного сервиса, а далее, после установки конфигурации, выполнить окончательную установку сервиса Chronos - т.е. выполнять все действия в той последовательности, как это описано в данном руководстве.

Скопируйте папку сборки Chronos в SYSTEM_VOLUME:\tessa\, где SYSTEM_VOLUME - основной раздел сервера, на котором установлена система. Полный путь к запускаемому файлу будет C:\tessa\Chronos\Chronos.exe (если C: - системный диск). Позже Chronos будет установлен как служба Windows.

Далее необходимо указать строку подключения к базе данных в файле Chronos\app-db.json.

Описание параметров json файлов находится в этом разделе.

Для корректной работы сервиса файл лицензии с расширением .tlic или .jlic необходимо скопировать в папку Chronos.

Настройка запуска плагинов на веб-сервисе

Вместо использования Chronos можно настроить запуск плагинов напрямую на веб-сервисе. Данный механизм позволяет вынести обработку плагинов на уровень веб-сервиса. С особенностями работы плагинов на веб-сервисе можно ознакомиться в разделе Особенности обработки плагинов на веб-сервисе.

Для того, чтобы включить плагины на веб-сервисе нужно:

  1. В конфигурационном файле веб-сервиса app.json выполнить настройку параметров в блоке Settings -> WebChronos:

    • Параметр:

      "Enable": true

      Определяет, что плагины Chronos выполняются на веб-сервисе. Необходимо установить значение true.

    • Параметр:

      "PollingSeconds": 10

      Число секунд, через которые веб-сервис выполняет опрос таблицы операций для получения операции для выполнения. По умолчанию указано 10 секунд.

    • Параметр:

      "RescheduleSeconds": 10

      Число секунд, через которые веб-сервис проверяет необходимость перерасчёта планировщиков задач. По умолчанию указано 10 секунд.

  2. В папку с веб-сервисом скопировать конфигурационный файл app-plugins.json из папки сервиса Chronos и выполнить настройку его параметров (см. Настройка плагинов).

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

Убедиться, что веб-сервис выполняет обработку плагинов, можно с помощью команды tadmin PrintDiscoveryInfo /i, которая выводит подробную информацию о компонентах системы.

Установка конфигурации

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

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

  • Если пустая база данных была создана заранее (стандартными средствами через SQL Server Management Studio (далее SSMS) или pgAdmin), то подключение к БД должно быть от учётной записи, у которой есть права на использование созданной базы данных tessa (в т.ч. можно использовать встроенную учётную запись sa/postgres).

  • Если база данных не создана, то учетная запись должна иметь права на создание баз данных. Утилита создаст новую базу данных и загрузит в нее конфигурацию.

Note

Подробное описание доступных команд для консольной административной утилиты tadmin.exe см. в Руководстве администратора.

В конфигурационном файле Tools\app-db.json подключение к SQL Server/PostgreSQL в группе настроек ConnectionStrings задаётся аналогично настройкам, заданным в разделе Настройка конфигурационных файлов.

Первичная установка выполняется посредством запуска Setup.bat в папке сборки. Если сервис установлен на Windows и расположен в папке C:\inetpub\wwwroot, то он должен запускаться от имени администратора. Если сервис находится в папке, не требующей административный доступ, то допускается запуск от пользователя, имеющего доступ к папке веб-сервиса. Будет предложено указать адрес подключения. Если не вводить ничего, будет использован адрес по умолчанию:

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

Note

Если ввести имя базы данных и нажать Enter, то эта база данных будет использоваться вместо той, что указана в конфигурационном файле. При этом база данных будет создана средствами скрипта, поэтому в строке подключения к БД должна использоваться учётная запись, позволяющая создавать базы данных, например, sa/postgres, либо другая роль, имеющая разрешение dbcreator.

Затем нужно указать путь для файлового хранилища на диске. При пустом вводе будет использовано значение по умолчанию.

Note

К указанной папке файлового хранилища должны быть права на чтение и на запись у созданной выше учётной записи tessa, от имени которой работают пулы приложений и Chronos.

Далее указывается смещение часового пояса во временной зоне по умолчанию в минутах. Например, для часового пояса UTC+02:00 используется значение 120 (2 часа умножить на 60 минут в часе). Смещение по умолчанию 180 (для UTC+03:00), для его установки ничего вводить не требуется. После установки можно изменить смещение в карточке настроек Временные зоны.

После этого необходимо указать путь до веб-сервиса TESSA. При нажатии Enter без ввода будет использован путь по умолчанию.

Затем - путь до сервиса Chronos. Можно оставить значение по умолчанию, нажав на клавишу Enter.

Если в процессе создания БД будут ошибки, выведется соответствующее сообщение с указанием пути к файлу лога. После исправления ошибки скрипт нужно перезапустить.

При успешном завершении установки выводится сообщение TESSA is installed.

Проверка работоспособности системы

Для проверки работы web-клиента необходимо перейти по адресу https://localhost/tessa/web. Должно открыться окно входа (если оно сразу не откроется, нужно подождать пару минут и перезапустить IIS):

После появление окна входа нужно ввести логин/пароль для аутентификации в системе TESSA. По умолчанию, логин - admin и пароль - admin. Впоследствии в целях безопасности данные для входа нужно сменить.

После успешной аутентификации в web-клиенте будет открыто рабочее место:

Типовая конфигурация платформы TESSA успешно настроена. Рекомендуется проверить серверные логи, которые находятся в файле log.txt в папке сервиса C:\inetpub\wwwroot\tessa\web, на наличие ошибок.

Обновление конфигурации при переходе на новую сборку платформы описано в Руководстве администратора.

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

Проверка загрузки расширений описана в разделе Возможные проблемы.

Проверка работы Tessa Admin

Для проверки работы TESSA App Manager и TESSA Admin необходимо запустить приложение Applications\TessaAdmin\TessaAdmin.exe с параметрами (заменив SERVER_NAME на сетевое имя сервера приложений):

TessaAdmin.exe /a:https://SERVER_NAME/tessa

Note

Если TessaAdmin запускается на том же сервере, где установлены сервисы, то запуск можно производить без параметров (т.е. приложение запустится с подключением к адресу по умолчанию https://localhost/tessa).

Система запросит данные для аутентификации в системе. Логин по умолчанию: admin, пароль: admin (далее в справочнике сотрудников логин/пароль можно будет изменить или заменить на windows аутентификацию, см. Руководство Администратора СЭД TESSA). Приложение TESSA Admin запустится.

Если все в порядке, приложение можно закрыть. Аналогично проверяется приложение TESSA Client.

Установка сервисов TESSA

Установка Chronos

Chronos – системный сервис, который необходим для корректной работы некоторых компонентов системы. Он занимается периодическим расчетом замещений, рассылкой почтовых уведомлений и т.д.

Note

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

Командный файл install-and-start.bat установит Chronos как службу Windows и сразу запустит его:

В случае успешной установки будет выведено:

Консоль можно закрыть нажатием любой клавиши.

Сервис с именем Syntellect Chronos отображается в приложении “Службы” (Win+R -> services.msc). Это установленная служба сервиса Chronos, её можно останавливать, запускать и перезапускать ссылками под именем службы в левой части окна.

Important

Через минуту после установки сервиса рекомендуется проверить корректность его работы. Логи находятся в файле log.txt в папке Chronos.

По умолчанию служба установлена со следующими параметрами:

  1. Способ запуска: автоматически (при запуске системы)
  2. Учётная запись: LocalSystem
  3. Запуск службы Chronos выполняется из той же папки, из которой она установлена

Если требуется изменить параметры службы перед первым запуском (например, указать другую учётную запись), то вместо файла install-and-start.bat нужно запустить файл install.bat в той же папке. Далее открыть приложение “Службы”, найти службу с именем “Syntellect Chronos”, изменить её параметры в контекстном меню “Свойства” и запустить службу вручную.

Чтобы изменить имя службы или установить несколько служб Chronos (для разных инсталляций TESSA), нужно открыть командный файл install-and-start.bat или install.bat в блокноте и изменить строки:

  1. ServiceName - это алиас сервиса, используемый в командной строке для утилиты sc.exe (см. ниже). Должен быть уникален в пределах сервера.

  2. ServiceDisplayName - это отображаемое имя сервиса, которое выводится в окне приложения “Службы”. Должно быть уникально в пределах сервера.

После установки службы можно управлять её состоянием, используя утилиту командной строки sc.exe вместо приложения “Службы”. Подробнее параметры утилиты описаны в документации Microsoft.

Например, команда sc.exe query <ServiceName> выводит текущее состояние службы (на скриншоте RUNNING - служба запущена).

Для удаления службы (с вежливой остановкой перед удалением, если служба запущена) нужно запустить командный файл uninstall.bat от имени администратора в папке сервиса. Если строка ServiceName была изменена при установке сервиса, то перед запуском необходимо отредактировать командный файл и задать в нём актуальную строку.

После остановки и удаления службы отобразятся сообщения следующего вида. Окно консоли можно закрыть. Служба Syntellect Chronos должна исчезнуть в приложении “Службы” после обновления списка служб (клавиша F5).

Настройка почтовых уведомлений и мобильного согласования описаны далее.

Установка Jinni

Веб-сервис jinni используется в операциях с документами: распознавании текста в файле и конвертации в pdf.

Установка веб-сервиса описана в Руководстве по установке Jinni.

Установка Webbi

Веб-сервис webbi предназначен для административных задач и отвечает за перевод системы в режим технического обслуживания, работу с командами внешнего контура и просмотр и управление данными Redis.

Установка веб-сервиса описана в Руководстве по установке Webbi.

Note

Веб-сервис webbi является опциональным компонентом системы. Его установка рекомендуется только в случае необходимости использования его функциональных возможностей.

Установка Monitor

Веб-сервис monitor необходим для сбора статистики и трассировки с сервисов web с последующей передачей собранных данных.

Установка веб-сервиса описана в Руководстве по установке Monitor.

Note

Веб-сервис monitor является опциональным компонентом системы. Его установка рекомендуется только в случае необходимости использования его функциональных возможностей.

Работа с файлами конфигурации

Note

При написании файлов app.json, app-*.json и applocal-*.json необходимо учитывать следующие особенности. Должен выполняться эскейпинг символа обратного слэша, т.е. пишется \\ вместо одного \, это часть стандарта JSON. В начале любого из значений можно написать символ @, это вставит путь к папке с текущим файлом app.json (или app-*.json, applocal-*.json) и обратным слэшом. Например, файл лежит в папке c:\inetpub\wwwroot\tessa и есть настройка с путём к файлу лицензии @Partner.jlic, то после обработки файла значение будет равно c:\inetpub\wwwroot\tessa\Partner.jlic. Это применимо к любым настройкам в app.json, но не является частью стандарта JSON и не будет работать для других .json-файлов. Для того, чтобы в начале значения действительно вставить символ @ вместо пути, то его надо написать дважды @@.

Конфигурация веб-сервиса

В файле необходимо настроить следующие параметры (выделено цветом):

  • Файл app-db.json:

    Строка подключения.

    Для подключения к SQL Server с использованием Windows аутентификации:

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=true; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя SQL Server:

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя SQL Server и указанием номера порта (1433 - номера порта по умолчанию для протокола TCP/IP):

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS,1433; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя PostgreSQL:

    “ConnectionStrings”: {
        “default”: [ “Host=localhost; Database=tessa; User ID=postgres; Password=Master1234; Pooling=true; MaxPoolSize=100; MaxAutoPrepare=50; AutoPrepareMinUsages=20”, “Npgsql” ]
    }

    Строка подключения к базе данных TESSA указывается в формате Sql Server Connection string/PostgreSQL connection strings.

    Подключение к MS SQL Server в случае использования Windows аутентификации (Integrated Security=true) будет происходить от учетной записи, от которой запущен пул приложений, обычно это domain\tessa, которой надо дать соответствующие права в настройках MS SQL Server (dbowner на базу tessa). Для MS SQL Server схемой по умолчанию для учетной записи должна быть dbo.

  • Файл app.json:
    Параметр:

    "ServerCode": "platform"

    Код сервера. Для разных инсталляций TESSA указываются разные коды приложений, например, prod или qa. Код сервера используется для разделения глобального кэша метаинформации между процессами, поэтому при использовании на сервере приложения нескольких экземпляров системы для каждого из них указывается отличающийся код сервера. Подробнее по установке второго сервиса на одном сервере приложений см. в разделе Установка второго экземпляра TESSA на этом же сервере приложений.

  • Параметр:

    "LicenseFile": "@*.?lic"

    Ссылка на присланный файл лицензии. По умолчанию используется файл с расширением jlic или tlic в папке рядом с конфигурационным файлом, поэтому достаточно скопировать файл лицензии в эту папку на сервере. Если файл лицензии должен лежать в другой папке, то путь к нему можно записать в этом параметре. Если файл лежит рядом с файлом app.json, то перед именем файла необходимо поставить @.

  • Параметр:

    Ключ для подписи токена безопасности.

    "SignatureKey": "b2AeHjUWpuqCKf9cGWQogBqKTdUm/F WVNkcB/VdZD62r01q5vY3S4Cp4C378Au1obKPgqQH/onMLiefuFKiSKQ=="

    Base64-представление ключа шифрования, используемого для подписи маркера безопасности. Ключ шифрования может быть произвольным набором байт. Рекомендуется использовать секретный ключ длиной 64 байта. Рекомендуется изменять значение посредством приложения tadmin (описано в разделе Генерация нового токена безопасности веб-сервиса системы).

  • Параметр:

    "LimitMaxThreads": true

    Признак того, что максимальное число потоков для каждой параллельной операции, такой как конвертация файла, ограничивается до безопасного значения. Указание true (рекомендуется) резервирует одно ядро при таких операциях, обеспечивая стабильное время реакции на другие запросы, пока выполняется длительная параллельная операция.

  • Параметр:

    "HealthCheckIsEnabled": true

    Признак того, что доступна проверка здоровья веб-сервиса по адресу /check (например, https://localhost/tessa/web/check). При переходе по такому адресу выводится подробная информация по серверу (включая операционную систему и версию .NET), а также выполняется ряд проверок для сервисов карточек и представлений без аутентификации пользователя. Для production-установки рекомендуется указать false для повышения безопасности. Независимо от значения, указанного для этой настройки, по адресу /hcheck возможна быстрая проверка работоспособности веб-сервиса, в т.ч. возможность принимать HTTP-запросы и наличие соединения с базой данных, при этом возвращается только состояние “здоров/не здоров”, что не влияет на безопасность.

  • Параметр:

    "SwaggerDocIsEnabled": true

    Признак того, что доступна автоматическая документация по всем доступным HTTP-методам (в т.ч. REST) по адресу /swagger (например, https://localhost/tessa/web/swagger). Для production-установки рекомендуется указать false для повышения безопасности.

  • Параметр:

    "ViewAccessCacheTimeSpan": "0.01:00:00"

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

  • Параметр:

    "RolesOperationTimeout": "0.00:30:00"

    Таймаут длительных SQL-запросов, связанных с ролями, таких как пересчёт замещений, динамических ролей и метаролей. По умолчанию указано 30 минут.

  • Параметр:

    "SessionExpirationTimeSpan": "7.00:00:00"

    Максимальный срок жизни сессии. Desktop-клиенты (TessaClient, TessaAdmin, TessaAppManager) пересоздают сессию, когда срок её жизни подходит к концу, тогда как для web-клиента срок определяет, сколько времени может использоваться токен сессии в cookies перед тем, как пользователю будет отображено окно логина. По умолчанию указано 7 дней.

  • Параметр:

    "SessionsSyncIsLocal": false

    Флаг, регламентирующий необходимость локальной синхронизации данных сессий Redis и БД. Используется только для разработки и тестовых инсталляций с единственным процессом веб-сервиса без использования Chronos. В противном случае, требуется запущенный Chronos для штатной работы с сессиями пользователей.

  • Параметр:

    "SessionsSyncInterval": "0.00:01:00"

    Задаёт время синхронизации данных сессий Redis и БД. По умолчанию равен одной минуте. Используется только для разработки и тестовых инсталляций с единственным процессом веб-сервиса без использования Chronos. Принимается во внимание, если флаг SessionsSyncIsLocal установлен в true.

  • Параметр:

    "Redis": "localhost"

    Строка подключения к серверу Redis, в простом случае - адрес сервера, который будет использован для синхронизации серверных кэшей, что актуально при установке в кластере. В качестве допустимых адресов возможно указать localhost, IP-адрес или DNS-имя сервера Redis, и опционально номер порта после двоеточия: 127.0.0.1:6379 (6379 - порт по умолчанию). Все возможные настройки в строке подключения перечислены в документации, рекомендуется указать логин/пароль и защищённое подключение по TLS или отдельно ограничить доступ к серверу Redis по сети (различные настройки перечисляются через запятую): https://stackexchange.github.io/StackExchange.Redis/Configuration.html#configuration-options.

    Attention

    Наличие сервера Redis является обязательным, начиная с версии TESSA 4.0.

  • Параметр:

    "Redis.Normalization": ""

    Строка подключения к серверу Redis (аналогичная по формату настройке "Redis"), но используемая только для кэширования значений в справочниках нормализации. Это не затрагивает взятие блокировок и подписку на события, связанные с нормализацией. Если настройка отсутствует, либо равна null или пустой строке, то используется строка подключения из настройки "Redis".

  • Параметр:

    "RedisInitializationDelay": "0.00:00:00.300"

    Временной интервал задержек между попытками проверки возможности выполнения инициализации данных TESSA в Redis.

  • Параметр:

    "RedisInitializationAttemptsLimit": 10

    Максимальное число попыток проверки возможности выполнения инициализации данных TESSA в Redis.

  • Параметр:

    "ProbingPath": "extensions"

    Относительный путь к папке, внутри которой будет выполнен поиск сборок dll в дополнение к основной папке веб-сервиса. Может быть указано несколько папок через точку с запятой.

  • Параметр:

    "ServerDependencies": "Tessa.Server.TessaServerDependencies, Tessa.Server"

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

  • Параметр:

    "WebControllers": [ "extensions/Tessa.Extensions.Default.Server.Web.dll", "extensions/Tessa.Extensions.Server.Web.dll" ]

    Список библиотек, в которых выполняется поиск дополнительных контроллеров для подключения в веб-приложение TESSA, в т.ч. для добавления REST-методов. Библиотеки перечисляются в кавычках через запятую. Помимо имени файла библиотеки может быть указан путь относительно папки с веб-сервисом.

  • Параметр:

    "WebRazorReferences": [ "extensions" ]

    Список библиотек или папок с библиотеками, которые добавляются в компилируемые страницы cshtml. Чтобы добавлять ссылки на расширения в таких страницах, нужно указать папку extensions. Папки или файлы перечисляются в кавычках через запятую. Путь рассчитывается относительно папки с веб-сервисом (аналогично настройке WebControllers), также может быть указан полный путь.

  • Параметр:

    "Configuration.Sealed": false

    Режим неизменяемой конфигурации. Это включает в себя изменения рабочих мест, представлений, схемы данных, типов карточек/файлов/диалогов/заданий, любые изменения в карточках настроек, а также редактирование любых скриптов C# и SQL (см. ниже в разделе по параметру Configuration.StrictSecurity).

    Рекомендуется установить для production-конфигурации. В процессе обновления конфигурации необходимо обязательно отключить такую настройку в конфигурационном файле сервере и перезапустить веб-сервисы.

    В разделе Настройка production сервера описаны эта и другие настройки, актуальные для production-инсталляции.

  • Параметр:

    "Configuration.StrictSecurity": false

    Режим повышенной безопасности, отключающий просмотр структуры карточек и некоторые административные возможности, в т.ч. административный импорт из TESSA Client и изменение C# и SQL-скриптов.

    При установленном значении true запрещаются следующие действия:

    • Редактирование любых скриптов C# и SQL, в т.ч. содержащихся в маршрутах, бизнес-процессах, динамических и контекстных ролях, генераторах метаролей, в типах условий, в шаблонах файлов, в виртуальных файлах и в уведомлениях.
    • Просмотр структуры карточек в web-клиенте и в TESSA Client от любых учётных записей.
    • Импорт карточек из приложения TESSA Client. При этом сохраняется возможность импорта из приложений TESSA Admin и tadmin (если импортируемые карточки не содержат скрипты).
    • Назначение пользователям уровня доступа “Администратор”.

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

    В разделе Настройка production сервера описаны эта и другие настройки, актуальные для production-инсталляции.

  • Параметр:

    "PathBase": ""

    Указывается базовый путь до веб-приложения, если оно не запущено под IIS. Например, если путь до веб-сервиса был установлен как https://localhost/tessa/web, то в этой настройке указывается значение /tessa/web.

  • Параметр:

    "StaticFileCacheControl": ""

    Указывается заголовок Cache-Control для статических файлов; или null/пустая строка, если заголовок не добавляется. Также заголовок не добавляется, если приложение запущено в режиме разработчика (см. переменные окружения из конфигурационного файла app-webdev.json).

    При кэшировании стандартных фоновых изображений wallpapers заданная настройка применяется, но если она не задана - используется заголовок "public,max-age=604800". При кэшировании контента content (в т.ч. аватаров) настройка не применяется, кэширование всегда используется.

    Например, укажите строку "public,max-age=604800", чтобы статические файлы (js-файлы с кодом веб-клиента, файлы шрифтов, картинки и др. файлы в подпапке wwwroot веб-сервиса) могли кэшироваться у пользователей и на прокси-серверах в течение недели (число в секундах).

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

  • Параметр (файл app-ext.json):

    "GuyFawkesAuth": "tessa/web"

    Указывается путь до веб-приложения в IIS для аутентификации в web-клиенте. Настройка не влияет на desktop-клиент. Например, если веб-сервис с именем web расположен внутри папки tessa, то в этой настройке указывается значение tessa/web.

  • Параметры (файл app-ext.json):

    "WinAuthIsEnabled": true, "WinAuth": "tessa/tw_winauth"

    Делает доступной Windows аутентификацию на веб-сервисе.

    В WinAuth Указывается путь до отдельного веб-приложения в IIS с включённой Windows аутентификацией и отключённой анонимной аутентификацией для использования в web-клиенте. Настройка не влияет на desktop-клиент. Информация по настройке Windows аутентификации в web-клиенте доступна в разделе Настройка Windows аутентификации.

  • Параметр:

    "PreviewPdfEnabled": true

    Признак того, что в web-клиенте используется предпросмотр PDF (или конвертируемых в pdf форматов, таких как doc, docx, tiff и др.) в области предпросмотра файлов в карточках. Если указано true, то при запуске приложения в кэш браузера на клиенте загружается код компонента по предпросмотру PDF.

    Значение false может использоваться для экономии трафика при первом запуске на слабых каналах, в таком случае компонент не будет загружен на клиент, но предпросмотр файлов PDF (и конвертируемых в pdf форматов) будет недоступен для всех пользователей web-клиента (файлы можно будет посмотреть по кнопке Скачать).

    Рекомендуется оставить значение по умолчанию true, если явно не выявлено, что такая экономия трафика заметно влияет на скорость открытия web-клиента, при этом предпросмотр файлов в PDF не требуется.

  • Параметр:

    "CryptoProPluginEnabled": false

    Признак того, что в web-клиенте используется плагин браузера КриптоПро для подписания файлов ЭП (электронной подписью) в web-клиенте. Настройка не влияет на desktop-клиент. Информация по настройке ЭП в web-клиенте доступна в разделе ЭП - электронная подпись.

  • Параметр:

    "ServiceWorkerEnabled": true

    Признак того, что в web-клиенте используется Service Worker. Функциональность Service Worker заметно уменьшает количество трафика, загружаемого с сервера в момент открытия страницы web-клиента. Настройка не влияет на desktop-клиент.

  • Параметр:

    "AlwaysOpenLinksInSingleBrowserTab": true

    Признак того, что в web-клиенте используется алгоритм определения предыдущей открытой вкладки с приложением TESSA и возможностью перехода к этому приложению. Также должен быть включен параметр ServiceWorkerEnabled. Работает только для десктопных браузеров.

  • Параметр (файл app-ext.json):

    "WinAutoLogin": true

    Автоматически выполнять вход в систему, если доступна Windows аутентификация.

  • Параметр:

    "CheckPlatformVersion": true

    Признак того, что приложения desktop-клиента при запуске должны проверять точное совпадение версии платформы со своей версией. Это предотвращает возможные ошибки настройки, например, если при обновлении платформы забыли опубликовать новые версии приложений. Настройка не влияет на приложение Tessa Applications, утилиту tadmin и на web-клиент. Рекомендуется оставить значение по умолчанию true.

  • Параметр:

    "UserWallpaperName": "Wallpaper"

    Имя файла с фоновым изображением без указания расширения, который прикладывается как файл к карточке сотрудника при установке фона в web-клиенте. Настройка не влияет на desktop-клиент.

  • Параметр:

    "WallpaperSizeKb": 600

    Максимальный размер файла с фоновым изображением в Кб, который пользователь может загрузить на сервер при установке фона в web-клиенте. Настройка не влияет на desktop-клиент.

  • Параметр:

    "MultipartBodyLengthLimit": 2147483648

    Максимальный размер файла, который может быть приложен к карточке в web-клиенте. По умолчанию - 2 Гб. При задании значения больше указанного возможны проблемы, связанные с конфигурацией браузеров. Настройка не влияет на desktop-клиент. Рекомендуется не изменять эту настройку, и использовать ограничение на размер файла, указываемое в карточке настроек Настройки сервера.

  • Параметр:

    "EnableInterprocessCache": true

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

    Если используется один рабочий процесс (один процесс пула приложений или один процесс-демон на Linux), то можно указать false для незначительного прироста производительности в процессе изменения метаинформации (т.е. при изменениях через конструкторы в приложении TESSA Admin или через карточки настроек, виды документов и некоторые другие системные карточки).

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

    Во всех остальных случаях рекомендуется оставить значение true.

  • Параметр:

    "CookiesSameSite": "Strict"

    Настройка cookies, создаваемых при логине, для разрешения или запрета их отправки при выполнении cross site запросов.

    Возможные значения:

    • Strict (по умолчанию) - разрешена передача cookies только в пределах того же сайта (доменного имени, схемы и порта), cookies не будут переданы для любых cross site запросов. Используйте эту настройку всегда для противодействия CSRF атакам, кроме случаев, когда со стороны браузера реализована логика cross site запросов к веб-сервису TESSA.
    • Lax - браузер может передавать cookie либо в пределах того же сайта, либо при навигации cross site верхнего уровня.
    • None - браузер может передавать cookie для запросов, поступающих с любых сайтов.
    • Unspecified - используются настройки браузера для определения того, разрешена ли передача cookies для запросов. Это не значение по умолчанию, его надо явно указать вместо Strict.
  • Параметр:

    "TokenCookiesName": "token"

    Имя cookies для хранения токена сессии TESSA. В том случае, когда иное приложение на стороне пользователя использует cookies с тем же именем, его можно переопределить.

Если параметр не задан в файле конфигурации, то используется значение по умолчанию: token.

  • Параметр:

    "AllowedRefererValues": [ ]

    Допустимые значения HTTP-заголовка Referer, которые проверяются на каждый запрос, или пустой массив (по умолчанию), если проверки отключены.

    При проверке актуальное значение заголовка должно начинаться с подстроки, указанной в этом списке, без учёта регистра. Проверка не выполняется, если клиент не прислал HTTP-заголовок. Используйте эту настройку для противодействия CSRF-атакам.

    Например, возможно перечислить все допустимые доменные имена с указанием схемы подключения вида: "https://tessa.server-name.org"

    Несколько строк перечисляются в массиве через запятую: [ "https://tessa.server.com", "https://tessa.internal-server.com:52313/integration" ]

  • Параметр:

    "ResponseHeaders": { "X-Frame-Options": "sameorigin", "X-XSS-Protection": "1; mode=block" }

    Значения заголовков, передаваемых в каждый ответ на запрос. По умолчанию указаны заголовки X-Frame-Options и X-XSS-Protection, это улучшает противодействие некоторым видам атак.

  • Параметр:

    "Localization": { "ru:Workplaces_User": "Моё место", "en:Workplaces_User": "My place", }

    Позволяет переопределить строки локализации без изменения библиотек локализации. Формат: lang:stringName, где lang - имя целевого языка согласно стандарту ISO 639, stringName - имя строки локализации. В качестве значения поля задаётся желаемое значение переопределяемой строки.
    Если не требуется переопределять строки локализации в web-сервисе, то данную секцию можно не задавать.

  • Параметр:

    "MaxParallelBackgroundTasks": 0

Данный параметр регулирует максимально допустимое количество одновременно запущенных задач (размер) очереди фоновых задач.

Если параметр отсутствует или имеет значение меньше 1, то размер очереди вычисляется как половина доступных в системе процессоров Environment.ProcessorCount / 2.

Значение по умолчанию 0.

Параметры подключения к LDAP

В конфигурационном файле app.json в группе LDAP содержатся настройки для подключения к службам каталогов LDAP, таким как Active Directory, Novell Directory Services, OpenDC, ApacheDC и др. Службы LDAP могут использоваться при входе в систему для проверки логина/пароля. Если потребуется обеспечить вход для сотрудников с типом входа Пользователь LDAP, необходимо установить следующие параметры:

  • Параметр:

    "Enabled": false

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

  • Параметр:

    "UseSsl": true

    Признак того, что используется защищённое подключение по протоколу SSL.

  • Параметр:

    "Url": "localhost"

    Имя сервера LDAP или его URL-адрес, который используется сервером приложений для подключения.

  • Параметр:

    "Port": null

    Порт, по которому выполняется подключение (номер порта указывается без кавычек). Если значение равно null, 0 или отрицательное число, то используется порт по умолчанию в зависимости от настройки UseSsl: если "UseSsl": true, то порт 636; если "UseSsl": false, то порт 389.

  • Параметр:

    "TimeoutMilliseconds": null

    Таймаут подключения в миллисекундах (значение указывается без кавычек). Если значение равно null, 0 или отрицательное число, то используется таймаут по умолчанию в зависимости от сервера LDAP (обычно около 5 секунд).

  • Параметр:

    "BindDn": "uid=admin,ou=system"

    Имя пользователя (DN), от которого выполняется подключение к службам LDAP для поиска сотрудника с его последующей аутентификацией. Значение зависит от используемого сервера LDAP и от его настроек. Можно указать любую учётную запись с известным паролем, которая может выполнять поиск записей в дереве домена.

  • Параметр:

    "BindCredentials": "secret_password"

    Пароль пользователя BindDn, от которого выполняется подключение к службам LDAP для поиска сотрудника с его последующей аутентификацией.

  • Параметр:

    "SearchBase": "dc=example,dc=com"

    Адрес корневого узла (группы), в которой выполняется поиск сотрудника для входа с обходом всех вложенных групп.

  • Параметр:

    "SearchFilter": "(&(objectClass=person)(cn={0}))"

    Строка с фильтром, используемая для поиска сотрудника. Вместо {0} в строку подставляется поле Аккаунт из карточки сотрудника, оно же - введённый пользователем логин (без учёта регистра символов). В значении по умолчанию выполняется поиск всех сотрудников с классом person и значением Common Name (он же cn), равным искомому логину.

    Вместо cn можно выполнять поиск по другим атрибутам, а также проверять принадлежность нескольким классам:

    (&(objectClass=user)(objectClass=person)(TessaLogin={0}))

    Для подключения к Active Directory обычно используют строку следующего вида (причём имя учётной записи для логина используется без указания домена, т.е. User вместо DOMAIN\User):

    (&(objectCategory=person)(objectClass=user)(sAMAccountName={0}))

  • Параметр:

    "DefaultUserDomain": ""

    Необязательный параметр, в котором указывается домен пользователя LDAP по умолчанию. Если в строке логина при входе не был указан домен, то в качестве него будет подставлен домен по умолчанию, если заполнено значение параметра.

  • Параметр:

    "ConnectionAttempt": null

    Необязательный параметр, в котором задается количество попыток соединения с реферальными серверами. Если указанное значение равно null, то используется значение по умолчанию: 10.

  • Параметр:

    "ConnectionAttemptIdle": null

    Необязательный параметр, в котором задается пауза между попытками соединения с реферальными серверами в секундах. Если указанное значение равно null, то используется значение по умолчанию: 10 секунд.

Пример настройки для сервера LDAP:

"LDAP": { "Enabled": true, "UseSsl": true, "Url": "ipa.test.com", "Port": null, "TimeoutMilliseconds": null, "BindDn": "uid=user,cn=sysaccounts,cn=etc,dc=ipa,dc=test,dc=com", "BindCredentials": "Master1234", "SearchBase": "cn=users,cn=accounts,dc=ipa,dc=test,dc=com", "SearchFilter": "(&(objectClass=person)(uid={0}))", "DefaultUserDomain": "" },

Пример настройки для сервера Active Directory:

"LDAP": { "Enabled": true, "UseSsl": true, "Url": "server.domain.local", "Port": null, "TimeoutMilliseconds": null, "BindDn": "DC\\User", "BindCredentials": "Master1234", "SearchBase": "dc=domain,dc=local", "SearchFilter": "(&(objectClass=person)(sAMAccountName={0}))", "DefaultUserDomain": "yourdomain" },

Настройки веб-сервера Kestrel в группе WebServer

В конфигурационном файле app-web.json в группе "WebServer" содержатся настройки веб-сервера Kestrel, которые можно установить для того, чтобы настроить поведение в качестве edge-сервера.

Warning

Настройки в этом разделе неприменимы при установке веб-сервисов TESSA совместно с IIS, Nginx, Apache или с другим веб-сервером, перенаправляющим запросы к веб-сервисам TESSA.

  • Параметр:

    "HttpsRedirect": "Enabled"

    Режим перенаправления запросов по протоколу HTTP на другой порт по протоколу HTTPS. Неактуален, если отсутствует прослушивание адресов по протоколу HTTPS.

    Значения:

    • Disabled - отключено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS. Если веб-сервер TESSA прослушивает не только локальный адрес (localhost или 127.0.0.1), но и адреса, доступные по сети, то эта настройка указывается только в том случае, если нет ни одного адреса, прослушиваемого по протоколу HTTP. В противном случае это даёт доступ к системе по протоколу HTTP без шифрования, в результате чего по сети будут передаваться токены сессий, пароли, данные карточек и представлений, содержимое файлов и другая конфиденциальная информация в открытом виде.

    • Enabled - включено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS. Это значение по умолчанию.

    • Hsts - включено перенаправление запросов по протоколу HTTP на порт с протоколом HTTPS с отправкой клиенту дополнительных заголовков по стандарту HSTS. Значение указывается только при разворачивании в production-окружении, потому что при его использовании браузер на рабочем месте пользователя запомнит текущий порт HTTPS на количество дней, указанное в настройке HstsMaxAgeDays (по умолчанию 365 дней), и будет самостоятельно выполнять перенаправление по этому порту вместо того, чтобы выполнять запрос HTTP и получать информацию по redirect в ответе на запрос.

    Если указано несколько прослушиваемых адресов HTTPS, то нужно указать порт HTTPS в настройке HttpsRedirectPort. Если в ней указано значение null, то при наличии единственного прослушиваемого адреса HTTPS будет использован его порт, а при наличии нескольких портов - перенаправление запросов будет отключено, что открывает доступ к серверу по протоколу HTTP без шифрования.

  • Параметр:

    "HttpsRedirectPort": null

    Номер порта, по которому выполняется перенаправление запросов с протокола HTTP на протокол HTTPS. Настройка используется только в том случае, если в настройке HttpsRedirect указано значение Enabled или Hsts, и выполняется прослушивание хотя бы одного адреса по протоколу HTTPS.

    Рекомендуется указать значение null, если для протокола HTTPS выполняется прослушивание единственного адреса. Укажите номер порта без кавычек, например, 443, если для протокола HTTPS выполняется прослушивание более, чем одного адреса, в противном случае перенаправление запросов с протокола HTTP не будет выполняться.

  • Параметр:

    "HstsMaxAgeDays": 365

    Количество дней, на которые браузер будет запоминать, что к серверу обращение выполняется по HTTPS (заголовок Strict-Transport-Security, атрибут max-age).

    Актуально только при указании режима "HttpsRedirect", равного "Hsts".

  • Параметр:

    "CertificateFile": "@*.cer"

    Путь к файлу с сертификатом, который будет использован при прослушивании адресов по протоколу HTTPS. Если таких адресов нет, то файл игнорируется. Может быть указана маска, например, {empty}*.cer, в этом случае используется первый подходящий файл, найденный в папке по алфавиту. Можно указать символ @ перед строкой с именем файла, чтобы выполнять поиск в папке с файлом app.json, в противном случае поиск выполняется в папке с исполняемым файлом Tessa.Web.Server (аналогично указанию файла с лицензией @*.?lic).

    Поддерживаются файлы сертификатов cer с бинарным кодированием (DER) или с base64-кодированием, файлы crt и pem (PEM), p7c (PKCS7), а также файлы pfx (PKCS12).

    Если указан файл в формате PEM (расширения crt и pem), то для такого сертификата приватный ключ может быть отдельным файлом. В таком случае нужно указать путь до этого файла в настройке CertificateKeyFile. Если сертификат зашифрован паролем, он указывается в настройке CertificatePassword.

    Если указан файл в формате PKCS12 (расширение .pfx), то такой файл хранит закрытый ключ сертификата и требует пароля. Пароль этого сертификата указывается в настройке CertificatePassword.

    Если файл сертификата не найден, то будет выполняться поиск в хранилище сертификатов в соответствии с настройками CertificateStoreName и CertificateStoreLocation. Если указанные настройки не заполнены, то веб-сервер не будет выполнять прослушивание по адресам с заданным протоколом HTTPS, при этом для каждого такого адреса в консоли и в файле лога отображается предупреждение. Если при этом веб-сервер прослушивал только адреса HTTPS (не прослушивал адреса HTTP и Unix-сокеты), то при запуске веб-сервер завершает свою работу с ошибкой Kestrel has no endpoints to listen to. Check https certificate availability.

  • Параметр:

    "CertificateKeyFile": ""

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

    Параметр используется для сертификатов в формате PEM (расширения crt и pem).

  • Параметр:

    "CertificatePassword": ""

    Пароль к файлу сертификата. Если указано null или пустая строка "", то файл сертификата открывается без пароля. Файлы в формате PKCS12 (расширение pfx) всегда должны иметь пароль. Если сертификат имеет пароль, но он не указан, то веб-сервер при запуске завершит свою работу с ошибкой.

    Если файл сертификата не найден, то настройка игнорируется.

  • Параметр:

    "CertificateStoreName": "My"

    Имя хранилища сертификатов в соответствии с перечислением StoreName, которое описано в MSDN

    Допустимые значения (соответствуют папкам в консоли сертификатов mmc):

    • AddressBook - сертификаты других пользователей.
    • AuthRoot - сертификаты третьих сторон.
    • CertificateAuthority - сертификаты промежуточных сторон.
    • Disallowed - отозванные сертификаты.
    • My - личные сертификаты.
    • Root - корневые сертификаты.
    • TrustedPeople - сертификаты доверенных лиц.
    • TrustedPublisher - сертификаты доверенных издателей.

    Значение проверяется без учёта регистра.

    На Windows выполняется поиск в хранилище сертификатов, на Linux - в соответствии с переменными окружения OpenSSL (SSL_CERT_DIR и SSL_CERT_FILE), а также в папке ~/.dotnet/corefx/x509stores.

    Настройка игнорируется, если был найден файл сертификата, указанный в настройке CertificateFile.

    Если хотя бы одна из настроек CertificateStoreName и CertificateStoreSubject не указана (null или пустая строка ""), то поиск в хранилище сертификатов не выполняется.

  • Параметр:

    "CertificateStoreLocation": "CurrentUser"

    Местоположение хранилища сертификатов в соответствии с перечислением StoreLocation, которое описано в MSDN

    Допустимые значения:

    • CurrentUser - текущий пользователь.
    • LocalMachine - текущий компьютер.

    Значение проверяется без учёта регистра.

    На Windows выполняется поиск в хранилище сертификатов, на Linux - в соответствии с переменными окружения OpenSSL (SSL_CERT_DIR и SSL_CERT_FILE), а также в папке ~/.dotnet/corefx/x509stores.

    Настройка игнорируется, если был найден файл сертификата, указанный в настройке CertificateFile.

    Если хотя бы одна из настроек CertificateStoreName и CertificateStoreSubject не указана (null или пустая строка ""), то поиск в хранилище сертификатов не выполняется.

  • Параметр:

    "CertificateStoreSubject": "localhost"

    Значение поля Subject в сертификате, который загружается из хранилища сертификатов. Например, значение "localhost" соответствует сертификату, у которого в поле Subject указано CN=localhost.

    Если хотя бы одна из настроек CertificateStoreName и CertificateStoreSubject не указана (null или пустая строка ""), то поиск в хранилище сертификатов не выполняется, и эта настройка игнорируется.

    Если несколько подходящих сертификатов доступны в пределах тех же настроек CertificateStoreName и CertificateStoreLocation, то возвращается первый найденный, который отмечен как валидный (доверенный). Если валидных сертификатов нет, то выполняется поиск по невалидным (обычно это сертификаты, созданные для разработки или тестирования).

    Если указано значение null или пустая строка "", то возвращается первый доступный сертификат в хранилище, независимо от его валидности. Рекомендуется указывать такое значение только в целях разработки и локального тестирования, или на сервере Linux, в котором в хранилище есть единственный сертификат.

  • Параметр:

    "Http2Disabled": false

    Признак того, что поддержка протоколов HTTP/2 и HTTP/3 отключена. Протокол может использоваться браузерами для ускорения загрузки контента. Протокол не используется в desktop-приложениях.

    Возможные значения:

    • false - взаимодействие с клиентами выполняется по протоколам HTTP 1.1, HTTP/2 или HTTP/3 в зависимости от того, какой протокол поддерживается клиентом.

    • true - протоколы HTTP/2 и HTTP/3 не поддерживаются сервером, взаимодействие с клиентами выполняется только по протоколу HTTP 1.1.

    Note

    Эта настройка функционирует не только при запуске веб-приложения TESSA в качестве edge сервера, но также при запуске в связке с Nginx, Apache или другим сервером, для которого веб-приложение TESSA работает в режиме reverse proxy. Настройка неактуальна для запуска на Windows совместно с IIS, поскольку в этом случае в режиме in-process hosting запросы обрабатывает только IIS, но не Kestrel.

    Warning

    При запуске на ОС Windows, в зависимости от версии серверной ОС, браузеры с поддержкой HTTP/2 (Яндекс.Браузер, Chrome, Firefox, Safari) могут выдавать ошибку с кодом ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY при подключении к веб-серверу по HTTPS. Если данная ошибка была обнаружена, то нужно установить обновления серверной ОС. Если ошибка не исчезла, то следует указать настройку "Http2Disabled": true, в этом случае браузеры будут использовать протокол HTTP 1.1.

  • Параметр:

    "DataProtectionKeysPath": ""

    Путь для сохранения ключей “Data Protection”, используемых сервером Kestrel.

    При указании null или пустой строки "" по умолчанию используется папка внутри профиля %LocalAppData%. Если веб-сервер запущен под системной учётной записью (например, ApplicationPoolIdentity на IIS, www-data на Nginx), то в значении параметра необходимо явно указать путь к папке на диске, где будут храниться ключи, иначе сессии пользователей при использовании аутентификации SAML не будут сохраняться после перезапуска сервера.

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

    Подробнее этот механизм описан в MSDN: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-9.0

  • Параметр:

    "DataProtectionCertificateFile": ""

    Имя файла сертификата для шифрования сохраняемых ключей Data Protection, используемых сервером Kestrel. Возможно указание относительного пути с маской, как и для настройки CertificateFile.

    Если указаны null или файл сертификата не найден, то ключи шифруются средствами текущей учётной записи (на Windows) или не шифруются (на Linux, не рекомендуется).

    Настройка игнорируется, если не указан путь DataProtectionKeysPath.

  • Параметр:

    "DataProtectionCertificateKeyFile": ""

    Путь к файлу с приватным ключом сертификата, который будет использован для шифрования сохраняемых ключей Data Protection, используемых сервером Kestrel. Если файл сертификата не найден, то настройка игнорируется. Возможно указание относительного пути с маской, как и для настройки DataProtectionCertificateFile.

    Параметр используется для сертификатов в формате PEM (расширения crt и pem).

  • Параметр:

    "DataProtectionCertificatePassword": ""

    Пароль для файла сертификата DataProtectionCertificateFile для шифрования сохраняемых ключей Data Protection, используемых сервером Kestrel.

    Если указаны null или пустая строка, то пароль не требуется или сертификат не загружается из файла.

    Настройка игнорируется, если не указан путь DataProtectionKeysPath или не найден файл сертификата DataProtectionCertificateFile.

Настройка ограничений и таймаутов в группе WebServerLimits

В конфигурационном файле app-web.json в группе "WebServerLimits" содержатся настройки с таймаутами, ограничениями по максимальному размеру HTTP-запросов/ответов, и другие ограничения, применяемые к веб-сервису TESSA.

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

Изменение настроек из таблицы изменяет соответствующую настройку веб-сервера Kestrel, на базе которого построен веб-сервис TESSA. Для описания таких настроек Kestrel см. документацию MSDN.

Warning

Настройки в этом разделе неприменимы при установке TESSA на Windows в связке с веб-сервером IIS. В этом случае будут использоваться исключительно настройки IIS, для TESSA не поднимается отдельный сервис Kestrel.

  • Параметр:

    "MaxResponseBufferSizeBytes": 65536

    Максимальный размер буфера в байтах для ответа на запрос перед тем, как начинается отправка по сети. По умолчанию 64 КиБ (65 536 байт). Значение null не ограничивает размер буфера. При указании 0 буферизация перед отправкой не используется.

  • Параметр:

    "MaxRequestBufferSizeBytes": 1048576

    Максимальный размер буфера в байтах для запроса. По умолчанию 1 МиБ (1 048 576 байт). null не ограничивает размер буфера.

  • Параметр:

    "MaxRequestLineSizeBytes": 8192

    Максимальный размер строки запроса HTTP. По умолчанию 8 КиБ (8 192 байт).

  • Параметр:

    "MaxRequestHeadersTotalSizeBytes": 32768

    Максимальный совокупный размер заголовков в HTTP запросе. По умолчанию 32 КиБ (32 768 байт).

  • Параметр:

    "MaxRequestHeaderCount": 100

    Максимальное количество заголовков в HTTP запросе. По умолчанию 100 заголовков.

  • Параметр:

    "MaxRequestBodySizeBytes": 30000000

    Максимальный размер в байтах для тела HTTP запроса. По умолчанию 28.6 МиБ (30 000 000 байт). Ограничено отключено для методов с потоковой передачей (такой как сохранение карточки с файлами или импорт библиотек локализации), а также для методов контроллеров, реализованных в рамках проекта, в которых задан атрибут DisableRequestSizeLimit.

  • Параметр:

    "KeepAliveTimeoutSeconds": 120

    Таймаут в секундах на поддержание соединения (т.н. keep alive). По умолчанию 120 секунд.

  • Параметр:

    "RequestHeadersTimeoutSeconds": 30

    Максимальное время в секундах, в течение которого сервер ожидает получения HTTP заголовков. По умолчанию 30 секунд.

  • Параметр:

    "MaxConcurrentConnections": null

    Максимальное количество одновременно открытых соединений. При указании null количество соединений не ограничивается. По умолчанию указано null.

  • Параметр:

    "MaxConcurrentUpgradedConnections": null

    Максимальное количество одновременно открытых соединений, которые были обновлены для использования другого протокола (например, на WebSockets). При указании null количество соединений не ограничивается. По умолчанию указано null.

  • Параметр:

    "MinRequestBodyDataRateBytesPerSecond": 240.0

    Средняя скорость передачи, измеряемая в байтах в секунду, в течение интервала времени MinRequestBodyDataRateGraceSeconds, которая минимально допустима для получения данных HTTP запроса от клиента. По умолчанию 240 байт в секунду.

  • Параметр:

    "MinRequestBodyDataRateGraceSeconds": 5

    Интервал времени в секундах, для которого измеряется средняя скорость получения данных HTTP запроса от клиента MinRequestBodyDataRateBytesPerSecond. По умолчанию 5 секунд.

  • Параметр:

    "MinResponseDataRateBytesPerSecond": 240.0

    Средняя скорость передачи, измеряемая в байтах в секунду, в течение интервала времени MinResponseDataRateGraceSeconds, которая минимально допустима для отправки данных HTTP ответа. По умолчанию 240 байт в секунду.

  • Параметр:

    "MinResponseDataRateGraceSeconds": 5

    Интервал времени в секундах, для которого измеряется средняя скорость отправки данных HTTP ответа MinResponseDataRateBytesPerSecond. По умолчанию 5 секунд.

Конфигурация Chronos

  • Параметр (файл app-db.json):

    Строка подключения.

    Для подключения к SQL Server с использованием Windows аутентификации:

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=true; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя SQL Server:

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя SQL Server и указанием номера порта (1433 - номера порта по умолчанию для протокола TCP/IP):

    “ConnectionStrings”: {
        “default”: “Server=.\SQLEXPRESS,1433; Database=tessa; Integrated Security=false; User ID=sa; Password=master; Connect Timeout=200; pooling=’true’; Max Pool Size=200; MultipleActiveResultSets=true;”
    }

    Для подключения с использованием пользователя PostgreSQL:

    “ConnectionStrings”: {
        “default”: [ “Host=localhost; Database=tessa; User ID=postgres; Password=Master1234; Pooling=true; MaxPoolSize=100; MaxAutoPrepare=50; AutoPrepareMinUsages=20”, “Npgsql” ]
    }

  • Параметр:

    "ServerCode": "platform"

    Код сервера. Нужен для синхронизации кэшей между сервером приложений и Chronos.

  • Параметр:

    "LicenseFile": "@*.?lic"

    Ссылка на присланный файл лицензии. По умолчанию используется файл с расширением jlic или tlic в папке рядом с конфигурационным файлом, поэтому достаточно скопировать файл лицензии в эту папку на сервере. Если файл лицензии должен лежать в другой папке, то путь к нему можно записать в этом параметре. Если файл лежит рядом с файлом app.json, то перед именем файла необходимо поставить @.

  • Параметр:

    Ключ для подписи токена безопасности.

    "SignatureKey": "b2AeHjUWpuqCKf9cGWQogBqKTdUm/F WVNkcB/VdZD62r01q5vY3S4Cp4C378Au1obKPgqQH/onMLiefuFKiSKQ=="

    Base64 представление ключа шифрования, используемого для подписи маркера безопасности. Ключ шифрования может быть произвольным набором байт. Рекомендуется использовать секретный ключ длиной 64 байта. Значение должно совпадать со значением параметра в настройках сервера. Рекомендуется изменять значение посредством приложения tadmin (описано в разделе Генерация нового токена безопасности веб-сервиса системы).

  • Параметр:

    "LimitMaxThreads": true

    Признак того, что максимальное число потоков для каждой параллельной операции, такой как конвертация файла, ограничивается до безопасного значения. Указание true (рекомендуется) резервирует одно ядро при таких операциях, обеспечивая стабильное время реакции на другие запросы, пока выполняется длительная параллельная операция.

  • Параметр:

    "ViewAccessCacheTimeSpan": "0.01:00:00"

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

  • Параметр:

    "RolesOperationTimeout": "0.00:30:00"

    Таймаут длительных SQL-запросов, связанных с ролями, таких как пересчёт замещений, динамических ролей и метаролей. По умолчанию указано 30 минут.

  • Параметр:

    "Redis": ""

    Строка подключения к серверу Redis, в простом случае - адрес сервера, который будет использован для синхронизации серверных кэшей, что актуально при установке в кластере. При указании пустой строки сервер Redis не используется. В качестве допустимых адресов возможно указать localhost, IP-адрес или DNS-имя сервера Redis, и опционально номер порта после двоеточия: 127.0.0.1:6379 (6379 - порт по умолчанию). Все возможные настройки в строке подключения перечислены в документации, причём рекомендуется указать логин/пароль и защищённое подключение по TLS или отдельно ограничить доступ к серверу Redis по сети (различные настройки перечисляются через запятую): https://stackexchange.github.io/StackExchange.Redis/Configuration.html#configuration-options

  • Параметр:

    "Redis.Normalization": ""

    Строка подключения к серверу Redis (аналогичная по формату настройке "Redis"), но используемая только для кэширования значений в справочниках нормализации. Это не затрагивает взятие блокировок и подписку на события, связанные с нормализацией. Если настройка отсутствует, либо равна null или пустой строке, то используется строка подключения из настройки "Redis".

  • Параметр:

    "ProbingPath": "extensions"

    Относительный путь к папке, внутри которой будет выполнен поиск сборок dll в дополнение к основной папке веб-сервиса. Может быть указано несколько папок через точку с запятой.

  • Параметр:

    "ServerDependencies": "Tessa.Server.TessaServerDependencies, Tessa.Server"

    Полное имя типа с указанием имени сборки, который реализует интерфейс ITessaServerDependencies для определения дополнительных зависимостей для использования в расширениях. Рекомендуется значение по умолчанию, кроме случаев, когда реализуется собственный класс, реализующий указанный интерфейс.

  • Параметр:

    "RolesLockTimeout": "0.00:05:00"

    Периодичность, с которой очищается поле Дата и время окончания блокировки (и снимается флаг Вход запрещён).

  • Параметр:

    "Chronos.PluginFolderPath": "Plugins"

    Путь до папки относительно хоста, внутри которой или внутри подпапок которой располагаются плагины. Может быть указан абсолютный путь.

  • Параметр:

    "Chronos.HostStopTimeout": "0.00:00:30"

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

  • Параметр:

    "Chronos.PluginCancellationDelta": "0.00:00:02"

    Интервал до завершения периода Chronos.HostStopTimeout, до наступления которого будет автоматически запущена остановка через cancellationToken, передаваемый в метод IPlugin.EntryPointAsync каждого плагина. При этом обычно прерываются все текущие активности плагина, но плагин может выполнить очистку (блоки finally, логирование и др.). Например, если Chronos.HostStopTimeout указан как 30 секунд, а Chronos.PluginCancellationDelta - как 2 секунды, то через 28 секунд от начала остановки во всех ещё не завершённых плагинах объект cancellationToken будет в состоянии отмена.

  • Параметр:

    "Chronos.SyncTimeout": "0.00:00:15"

    Таймаут ожидания синхронизации между процессами. По умолчанию указано 15 секунд.

Note

Файл лицензии jlic или tlic должен быть скопирован в папку Chronos.

Безопасность

Генерация нового токена безопасности веб-сервиса системы

После установки и конфигурации веб-сервиса, для него нужно сгенерировать и установить новую подпись токена безопасности. Для генерации новой подписи токена нужно использовать команды консольной утилиты tadmin GetKey / SetKey (в сборке в папке Tools или linux/tools), которые упрощают процесс смены подписи.

Warning

Рекомендуется изменять подпись токена безопасности сразу после установки и далее каждый месяц (по умолчанию в начале каждого месяца пользователю Admin на почту приходит письмо-напоминание по смене токена). Доступ к конфигурационному файлу app.json должен иметь только администратор сервера.

Note

Подпись токена безопасности используется для подписания и проверки информации по сессиям пользователя и по правам доступа к карточкам и другим объектам системы. Если злоумышленнику окажется известна подпись, установленная на сервере, то он сможет предоставить себе любые права до момента, когда подпись будет изменена.

Note

Токен безопасности генерируется и устанавливается автоматически если конфигурация устанавливается с использованием Setup.bat (или обновляется с использованием Update.bat). В этом случае, генерацию токена можно пропустить.

Если сервис установлен на Windows и расположен в папке C:\inetpub\wwwroot, то нужно запустить командную строку от имени администратора. Если сервис в папке, не требующей административный доступ, то командную строку можно запустить от пользователя, имеющего доступ к папке веб-сервиса.

  1. Перейти в папку с консольной утилитой tadmin:

cd /D "C:\Tessa\tessa-4.0.0\Tools"

  1. Запустить команду GetKey, которая генерирует новую подпись
  2. Направить результат в команду SetKey, указав ей папку базовую папку для сервисов. Например:

tadmin GetKey Signature|tadmin SetKey Signature "/path:C:\inetpub\wwwroot\tessa" tadmin GetKey Cipher|tadmin SetKey Cipher "/path:C:\inetpub\wwwroot\tessa"

В результате будет отображено сообщение об успешной замене токена:

Replacing key Signature in: C:\inetpub\wwwroot\tessa New value: X/RVy4P8m7SN1+lwGC9tfB+xxfb5w43Z2GqpM7yiZnixznqB5OExystLNpYtSNeMkC3PgmubFtwB/KI/M+oh2A== Key Signature has been replaced in files (1): "C:\inetpub\wwwroot\tessa\app.json"

Replacing key Cipher in: C:\inetpub\wwwroot\tessa New value: qaX7tIKu9DQqey09X7HzG3Q4krZtB4Om2izNYnC3PF4= Key Cipher has been replaced in files (1): "C:\inetpub\wwwroot\tessa\app.json"

Note

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

Tip

Команда tadmin GetKey Signature генерирует новую подпись токена и выводит её на экран. Её можно будет скопировать и заменить вручную.

  1. Перезапустить пул приложений. Если командная строка запускалась от имени администратора, то перезапустить пул можно следующей командой, где в параметре /apppool.name: указывается имя перезапускаемого пула приложений:

"%windir%\system32\inetsrv\appcmd.exe" recycle apppool /apppool.name:tessa

Создание самоподписанного сертификата

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

``` sh New-SelfSignedCertificate -certstorelocation cert:localmachine -dnsname localhost -keyusage digitalSignature -friendlyname https ```

Она создаст самозаверенный сертификат https. Если планируется подключение других устройств, в -dnsname можно указать имя устройства, где находится веб-сервис. Значение -friendlyname может быть произвольным.

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

Note

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

Генерация мастер-ключа для управления компонентами системы

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

Important

Данный шаг является опциональным. Выполнять его нужно только если в нём есть обоснованная необходимость.

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

Установка локального инстанса для разработчиков

Important

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

Инстанс TESSA можно установить полностью на локальном компьютере, следуя следующему порядку работы:

  1. Установить СУБД.
    Чтобы не редактировать файлы конфигурации для подключения к БД, при установке сервера Microsoft SQL можно использовать значения по умолчанию:

    • Имя сервера: SQLEXPRESS
    • Логин пользователя: sa
    • Пароль: Master1234
  2. Установить компоненты для работы с системой.

Note

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

  1. Установить Redis.
  2. Подготовить IIS и установить веб-сервис.

    Note

    В качестве папки, где будет расположен веб-сервис, inetpub можно не использовать, чтобы редактирование конфигурационных файлов было удобнее. Если используется сторонняя папка, её необходимо добавить как виртуальный каталог в IIS.

    Note

    При установке локального инстанса и использовании администратора по умолчанию для работы веб-сервиса дополнительные параметры пула приложений можно не редактировать, оставив в поле Удостоверение - ApplicationPoolIdentity.

  3. Настроить обработку фоновых операций.

  4. Установить конфигурацию.

Данных действий будет достаточно для успешного запуска TESSA. Однако рекомендуется также запустить Chronos (если он используется) и установить дополнительные сервисы, так как они влияют на некоторый функционал системы.

Установка конфигурации вручную

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

Импорт схемы данных

Импорт схемы данных выполняется в приложении Applications\SchemeEditor\SchemeEditor.exe.

  1. Выбрать в меню Файл -> Открыть -> Файл….
  2. В появившемся диалоге выбрать файл Configuration\Scheme\Platform.tsd. Откроется окно добавления схемы с указанием включенных библиотек:

  3. После нажатия на кнопку ОК схема будет открыта:

  4. Выбрать в меню Файл -> Сохранить как… -> Базу данных…, в диалоге выбрать используемую СУБД, ввести параметры подключения к базе данных:

  5. Отобразится сообщение Не существует хранилища для схемы. Создать его? Нажать кнопку Да. Система создаст необходимые для работы приложения и системные объекты, и отобразится диалог:

  6. Нажать кнопку Сохранить. Система начнет создавать объекты базы данных и по мере ее работы успешно созданные объекты будут выделяться зеленым. Через несколько секунд, когда все будет завершено, окно будет выглядеть так:

  7. Нажать кнопку Закрыть и закрыть приложение SchemeEditor.

Импорт библиотек локализации

Для начала нужно импортировать библиотеки локализованных констант. Для этого нужно запустить приложение TESSA Admin из папки Applications\TessaAdmin, указав логин admin и пароль admin. Необходимо перейти на вкладку Локализация. В верхнем меню нужно выбрать пункт Импорт, а в выпавшем меню нажать по кнопке Импорт из файла.

В появившемся окне перейти в папку из сборки Configuration\Localization и, выбрав все файлы (например, выделив первый и нажав Ctrl+A), нажать Открыть.

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

Импорт типов карточек и заданий

Теперь необходимо импортировать типы карточек и заданий. Для этого нужно перейти на вкладку Карточки и нажать кнопку Импорт - Импортировать типы… В выбранном окне перейти в папку из сборки Configuration\Types\Cards и, выбрав все файлы, нажать Открыть.

Добавленные типы карточек отобразятся в дереве жирным и со знаком *.

После нажатия кнопки Сохранить всё импортированные типы карточек будут сохранены. Операцию нужно повторить для папки Configuration\Types\Tasks, а также для папок Configuration\Types\Files и Configuration\Types\Dialogs из сборки.

Импорт карточек

Для импортирования карточек нужно использовать Tessa Admin, выбрав пункт Импорт - Импортировать карточки… в строке меню на вкладке Карточки.

В появившемся окне нужно нажать кнопку Открыть и указать путь к библиотеке карточек из сборки Configuration\Cards\Platform.jcardlib. В окне импорта появятся карточки из выбранной библиотеки.

Нужно нажать Импортировать отмеченные карточки. По завершении процесса появится окно с сообщением об успешном импорте.

Аналогично необходимо указать библиотеку карточек Configuration\Cards\PlatformWithFiles.jcardlib и импортировать её.

Импорт представлений

Для импорта представлений нужно перейти на вкладку Представления и нажать кнопку Импорт. В появившемся окне указать путь до папки из сборки Configuration\Views. Нажать кнопку Выбрать все. Также нужно установить галочку Заменить разрешения в базе данных. По завершении настройки - нажать кнопку Выполнить.

Чтобы убедиться, что представления были успешно импортированы, можно обновить список в справочнике.

Импорт рабочих мест

Теперь необходимо импортировать рабочие места. Сделать это можно, перейдя во вкладку Рабочие места и нажав кнопку Импорт. В появившемся окне нужно указать путь до папки из сборки Configuration\Workplaces. После - нажать кнопку Выбрать все и установить флажки Заменить разрешения в базе данных и Импортировать внедрённые в рабочие места файлы поисковых запросов, затем нажать кнопку Выполнить.

Появится окно с сообщением о том, что импорт рабочих мест завершён успешно.

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

Заполнение временных зон

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

Это можно сделать двумя способами:

  • при помощи консольной утилиты tadmin
    (см. команду TimeZone);
  • в web-клиенте
    Для заполнения информации о временных зонах нужно открыть карточку настроек временных зон (Меню системы -> Настройки -> Временные зоны), после чего выбрать пункт Заполнить временные зоны меню системы.

Расчёт календаря

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

Расчет календаря можно выполнить в web-клиенте, либо посредством выполнения команды в tadmin.

Для расчёта календаря из приложения необходимо открыть нужную карточку настроек календаря (РМ Администратор -> Календари -> Календари), заполнить параметры (период действия календаря, тип календаря, исключения и т.д.), при необходимости перейти в карточку типа календаря и отредактировать параметры, характерные для типа (начало/конец рабочего дня для каждого дня, начало/конец обеденного перерыва для каждого дня), и нажать кнопку Пересчитать календарь.

Tip

Чем больший период действия календаря устанавливается, тем больше времени займёт его пересчёт. Исключения должны находится в пределах периода действия календаря (см. Период действия календаря).

Карточка календаря

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

Для расчёта календаря посредством tadmin нужно воспользоваться командой RebuildCalendar (см. Команды для прочих административных функций).

Tip

При помощи команды RebuildCalendar в tadmin можно запустить расчёт сразу всех календарей в системе. Достаточно не передавать ей параметр id.

Полезные ссылки

Back to top