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

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

Для установки платформы Tessa выполните по порядку последующие пункты данного руководства.

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

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

  • IIS (роль Веб-сервер) и его дополнительные компоненты:

    • Компонент Проверка подлинности Windows

      • EN: “Internet Information Services\World Wide Web Services\Security\Windows Authentication”

      • RU: “Службы IIS\Службы Интернета\Безопасность\Проверка подлинности Windows”

    • Компонент Консоль управления IIS

      • EN: “Internet Information Services\Web Management Tools\IIS Management Console”

      • RU: “Службы IIS\Средства управления веб-сайтом\Консоль управления IIS”

    • Настройка протокола https: создать или указать необходимый сертификат и добавить серверные привязки (bindings)

  • После включения компонентов установите .NET Core Runtime & Windows Server Hosting bundle (см. ниже)

Для установки компонентов IIS перейдите Панель управления\Программы\Программы и компоненты, нажмите Включение или отключение компонентов Windows.

В открывшемся окне найдите группу Службы IIS

В ветке Службы интернета/Безопасность включите Проверка подлинности Windows.

В консоли IIS (Internet Information Services Manager) необходимо настроить поддержку протокола https. В корневом каталоге выберите пункт Сертификаты сервера.

Открыв его, в правом верхнем углу нажмите Создать самозаверенный сертификат….

В появившемся окне введите понятное имя сертификата, например, server_name, и нажмите ОК.

Далее выберите узел сайта в дереве, обычно это Default Web Site. В правом меню выберите пункт Привязки.

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

Заполните настройки привязки: Тип – https, Сертификаты SSL – укажите созданный выше сертификат, в примере он имеет имя https.

Установите .NET Core Runtime & Windows Server Hosting bundle

  • Установка описана в документации на сайте Microsoft:

    • Перейдите на страницу загрузки. В разделе Runtime 3.1.x найдите последнюю доступную версию (обычно сверху), скачайте и установите Runtime & Hosting Bundle для Windows по ссылке “Hosting Bundle” (на картинке ниже).

      Important

      На странице со списком версий не выбирайте preview-версию.

      Important

      Устанавливайте .NET Core Hosting bundle ТОЛЬКО после установки и настройки IIS. Исправление описано в разделе Возможных проблем.

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

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

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

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

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

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

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

Установка и конфигурирование сервера приложений и веб-сервисов системы

Note

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

  1. В Диспетчер служб IIS создать новый пул приложений в IIS. Назовите его *tessa и настройте его на работу Без управляемого кода* и на работу от учетной записи “tessa”.

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

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

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

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

  2. Убедитесь, что веб-сайт Default Web Site запущен (щелкаем правой кнопкой на сайте, далее Управление веб-сайтом->Начало).

  3. Создайте папку C:\inetpub\wwwroot\tessa.

  4. Скопируйте в нее из папки сборки Services всё содержимое, т.е. подпапку web, файлы app.json, localization.json, а также файл лицензии с расширением .tlic.

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

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

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

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

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

Warning

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

Note

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

Note

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

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

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

Теперь запустите команду GetKey, которая генерирует новую подпись, и направьте результат в команду 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, чтобы сгенерировать новую подпись токена и вывести её на экран. Её можно будет скопировать и заменить вручную.

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

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

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

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

Note

При написании файлов app.json необходимо учитывать следующие особенности. Должен выполняться эскейпинг символа обратного слэша, т.е. пишем \\ вместо одного \, это часть стандарта JSON. В начале любого из значений можно написать символ @, это вставит путь к папке с текущим файлом app.json и обратным слэшом. Например, файл лежит в папке c:\inetpub\wwwroot\tessa и есть настройка с путём к файлу лицензии @Syntellect.tlic, то после обработки файла значение будет равно c:\inetpub\wwwroot\tessa\Syntellect.tlic. Это применимо к любым настройкам в app.json, но не является частью стандарта JSON и не будет работать для других .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; Integrated Security=false; User ID=postgres; Password=Master1234; Pooling=true; MaxPoolSize=100”, “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.

  • Параметр:

    “ServerCode”: “tessa

    Код сервера. Для разных инсталляций Tessa указывайте разные коды приложений, например, “prod” или “qa”. Код сервера используется для формирования ссылок tessa:// для desktop-клиента, при этом код сервера в Tessa Applications и на сервере должны совпадать. Также код сервера используется для разделения глобального кэша метаинформации между процессами, поэтому при использовании на сервере приложения нескольких экземпляров системы, укажите для каждого из них отличающийся код сервера. Подробнее по установке второго сервиса на одном сервере приложений см. в разделе Установка второго экземпляра Tessa на этом же сервере приложений.

  • Параметр:

    “LicenseFile”: “@*.tlic

    Ссылка на присланный вам файл лицензии. По умолчанию используется файл с расширением .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 час. Кэш прав доступа не используется для администраторов, поскольку для них доступны все представления, независимо от прав.

  • Параметр:

    “RoleTimeoutTimeSpan”: “0.00:30:00

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

  • Параметр:

    “SessionExpirationTimeSpan”: “7.00:00:00

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

  • Параметр:

    “Redis”: “”
    

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

  • Параметр:

    “ProbingPath”: “extensions

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

  • Параметр:

    “ServerDependencies”: “Tessa.Server.TessaServerDependencies, Tessa.Server

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

  • Параметр:

    “WebControllers”: [ “extensions/Tessa.Extensions.Server.Web.dll” ]
    

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

  • Параметр:

    “WebRazorReferences”: [ “extensions” ]
    

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

  • Параметр:

    “Configuration.Sealed”: false
    

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

  • Параметр:

    “Configuration.StrictSecurity”: false
    

    Режим повышенной безопасности, отключающий просмотр структуры карточек и некоторые административные возможности, в т.ч. административный импорт из TessaClient и изменение C# и SQL-скриптов. Рекомендуется использовать на production-сервере только при наличии соответствующих требований. Не используйте этот режим для инсталляций, в которых это явно не требуется.

  • Параметр:

    “PathBase”: “”
    

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

  • Параметр:

    “GuyFawkesAuth”: “tessa/web

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

  • Параметр:

    “WinAuthIsEnabled”: true,
    “WinAuth”: “tessa/tw_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-клиенте доступна в разделе ЭП - электронная подпись.

  • Параметр:

    “WinAutoLogin”: true
    

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

  • Параметр:

    “ExtensionTracingMode”: “Off

    Режим трассировки серверных расширений для API карточек. Оставьте значение “Off” до тех пор, пока не потребуется определить время выполнения расширений или их порядок, причём включать настройку можно только на тестовом контуре (не на production). Информация по доступным режимам трассировки указана в руководстве разработчика.

  • Параметр:

    “CheckPlatformVersion”: true
    

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

  • Параметр:

    “UserWallpaperName”: “Wallpaper

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

  • Параметр:

    “WallpaperSizeKb”: 600
    

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

  • Параметр:

    “MultipartBodyLengthLimit”: 2147483648
    

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

  • Параметр:

    “EnableInterprocessCache”: true
    

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

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

    Если присутствует несколько рабочих процессов, но вы уверены, что администраторы не будут менять метаинформацию без перезапуска сервисов, в частности, при использовании кластера приложений (где кэш не сможет обновить себя сразу на всех нодах), вы можете установить значение 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”.
  • Параметр:

    “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, это улучшает противодействие некоторым видам атак.

Параметры подключения к 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}))

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

"LDAP": { "Enabled": true, "UseSsl": false, "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}))" },

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

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

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

В конфигурационном файле app.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

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

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

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

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

Note

Не забудьте скопировать файл лицензии .tlic в папку Chronos.

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

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

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

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

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

Note

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

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

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

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

Note

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

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

Note

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

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

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

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

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

Исправьте причину ошибки, после чего перезапустите скрипт.

При успешном завершении установки выводится сообщение “Tessa is installed”. Можно нажать любую клавишу, чтобы закрыть окно, и проверить установку.

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

Откройте веб-браузер и откройте страницу по адресу: https://SERVER_NAME/tessa/web/check (замените SERVER_NAME на сетевое имя сервера приложений).

Note

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

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

Установка Chronos

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

Note

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

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

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

Закройте консоль нажатием любой клавиши. Откройте приложение “Службы” (нажмите Win+R, введите services.msc). Найдите службу с именем “Syntellect Chronos”. Это установленная служба сервиса 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).

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

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

Запустите приложение Applications\TessaAdmin\TessaAdmin.exe с параметрами (замените SERVER_NAME на сетевое имя сервера приложений):

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

Note

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

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

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

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

Введите логин/пароль для аутентификации в системе Tessa. Для пользователей с типом входа в систему - Windows логин следует указывать с именем домена, например: domain\TessaUser.

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

Вы успешно установили и настроили типовую конфигурацию платформы Tessa. Последующие подпункты в этом пункте можно пропустить, они затрагивают импорт конфигурации вручную (без помощи скрипта Setup.bat).

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

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

Установка системы вручную (не рекомендуется для типовой конфигурации)

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

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

Запустите приложение Applications\SchemeEditor\SchemeEditor.exe. Выберите меню Файл\Открыть\Файл.... В появившемся диалоге выберите файл Configuration\Scheme\Tessa.tsd. Откроется окно добавления схемы с указанием включенных библиотек:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Повторите эту операцию для папки Configuration\Types\Files из сборки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Расчет календаря выполняется в приложении Tessa Client. Запуск Tessa Client можно произвести после установки клиентского рабочего места (описано в данном руководстве далее) или запустив Tessa Client с параметрами (замените SERVER_NAME на сетевое имя сервера приложений):

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

Данные для аутентификации указать те же - логин: admin, пароль: admin.

Откройте карточку настроек календаря (правая панель –> Настройки – Календарь), заполните параметры (начало/конец рабочего дня, начало/конец обеденного перерыва, период действия календаря) и нажмите кнопку “Пересчитать календарь”.

Tip

Рекомендуется период действия календаря установить равным двум-трем годам от текущей даты. Следует учитывать, что чем больше период расчёта календаря, тем более медленными будут операции расчёта рабочего времени.

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

Back to top