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

Установка на Ubuntu / Debian / Astra Linux

Подготовка дистрибутива TESSA

Необходимо распаковать архив со сборкой. В домашней папке создайте папку build и распакуйте архив в неё. Из этой папки будет выполняться автоматизированная установка системы. После завершения установки папку можно будет удалить.

Tip

Архив предоставляется в формате 7z, поэтому распаковать его встроенными средствами Linux не всегда возможно. Если архив не открывается встроенным приложением (по двойному клику), то для его открытия потребуется установить приложение-архиватор с поддержкой формата 7z (обратитесь в раздел Распаковка архивов .7z или к документации вашего дистрибутива).

Note

Альтернативно архив можно распаковать на компьютере Windows или Mac, используя программу 7-zip. Далее создать архив формата zip (например, также с помощью 7-zip), содержащий папки: Applications, Configuration, DeskiSetup, Fixes, linux, Docker. Именно эти папки понадобятся при установке системы на Linux. Такой архив можно перенести на компьютер с установленным Linux и распаковать его встроенным приложением: открыть файл двойным кликом и нажать в окне кнопку Распаковать (Extract), выбрать целевую папку и дождаться завершения распаковки.

Откройте окно терминала и перейдите в подпапку linux относительно папки с распакованным архивом. Если вы распаковали архив в предложенную выше папку, то выполните команду:

cd ~/build/linux

Проверьте наличие доступа на выполнение x для скриптов .sh с помощью команды:

ls -la

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

chmod +x init.sh && ./init.sh

После этого скопируйте папки chronos, web, monitor и webbi из папки linux в место, где они будут располагаться при запуске.

Note

Для простоты настройки мы рекомендуем создать папку tessa в домашней папке текущего пользователя, учётную запись которого мы также рекомендуем назвать tessa. Таким образом, полный путь к папке, в которую копируются chronos, web и webbi, будет такой: /home/tessa/tessa, где первое значение tessa соответствует имени учётной записи, а второе - имени созданной папки.

Important

Если вы указали другое название папки или учётной записи, то далее в инструкции замените строку /home/tessa/tessa на ваш путь к папке. В некоторых случаях также потребуется указать права доступа для пользователя, от которого будут выполняться веб-сервис и Chronos (в инструкции это текущий пользователь). Обратитесь к документации вашего дистрибутива, чтобы определить, каким образом указываются права.

В скопированные папки chronos и web переместите файл лицензии *.jlic или *.tlic.

Ссылка на файл лицензии присутствует в конфигурационном файле app.json в каждой из скопированных папок, но по умолчанию там указан маскированный путь *.?lic, поэтому вносить изменения в эти файлы не требуется.

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

На Debian 10 по умолчанию не устанавливается команда sudo. Для упрощения дальнейших действий, которые требуют привилегированных прав у пользователя, установим и настроим sudo.

Откройте терминал и выполните команды:

su -

apt -y install sudo

visudo

На Debian 12, 11 команда sudo установлена, но также требуется добавить пользователя в файл /etc/sudoers, для этого выполните команды:

su -

visudo

Для любой версии Debian, откроется текстовый редактор nano для файла с настройками sudo.

Найдите в нём строку:

root ALL=(ALL:ALL) ALL

Допишите ниже аналогичную строку для учётной записи tessa:

tessa ALL=(ALL:ALL) ALL

Сохраните и закройте файл: Ctrl+X, Y, Enter.

Введите в терминале:

exit

Дальнейшие действия выполняются по аналогии с Ubuntu / Astra Linux.

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

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

Note

Систему TESSA можно установить на дистрибутив, не имеющий доступа к серверам обновлений. В этом случае надо настроить доступ к репозиторию на DVD-диске (или USB-Flash), с которого устанавливался Linux. Это необходимо для установки компонентов, требуемых по инструкции ниже. Обратитесь к документации вашего дистрибутива за описанием настройки репозиториев на DVD-диске.

Important

Отсутствие доступа к серверам обновлений - это потенциальная проблема безопасности, т.к. с момента выпуска используемой версии дистрибутива могли появиться важные обновления безопасности, в т.ч. в ядре Linux. Мы рекомендуем обеспечить сетевой доступ к репозиториям вашей версии Linux. Возможно разворачивание копии репозиториев в сети вашего предприятия. Обратитесь к документации вашего дистрибутива.

Для установки обновлений откройте окно терминала и выполните команду (скопируйте и нажмите Enter):

sudo apt update && sudo apt -y upgrade

Tip

Если при этой или любой из последующих инсталляций пакетов, несмотря на ключ -y, система спросит подтверждения, предложив варианты y/N или Д/Н, то нажмите Y и Enter.

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


Для Astra Linux Special Edition 1.7.4 для установки зависимостей необходимо подключить онлайн-репозитории. Для этого отредактируйте файл:

sudo nano /etc/apt/sources.list

Вставьте строки для репозиториев repository-base и repository-extended:

deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-base/ 1.7_x86-64 main contrib non-free deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.4/repository-extended/ 1.7_x86-64 main contrib non-free

Сохраните и закройте файл: Ctrl+X, Y, Enter.

Обновите пакеты из репозиториев:

sudo apt update


Теперь установите зависимости для сервера приложений. Для Ubuntu / Debian / Astra Linux Special Edition 1.7.4 / Astra Linux Common Edition в окне терминала выполните:

sudo apt -y install libgdiplus

Для Astra Linux Special Edition 1.6 в окне терминала выполните:

cd ~

wget http://ftp.ru.debian.org/debian/pool/main/libg/libgdiplus/libgdiplus_4.2-2_amd64.deb

sudo apt -y install ./libgdiplus_4.2-2_amd64.deb

rm ~/libgdiplus_4.2-2_amd64.deb

sudo apt -y install libunwind8

Для всех дистрибутивов в окне терминала выполните команду:

sudo ln -s /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libdl.so

Note

Команда может завершиться с ошибкой:

ln: failed to create symbolic link '/lib/x86_64-linux-gnu/libdl.so': File exists

Она означает, что целевой файл существует. Её можно безопасно игнорировать.

Для всех дистрибутивов в окне терминала выполните команду (не поддерживается для Astra Linux Special Edition 1.6, сервер Redis необходимо установить на другой дистрибутив, например, Astra Linux Special Edition 1.7.4):

sudo apt -y install redis-server

Установка PostgreSQL

Установите последнюю версию PostgreSQL из репозиториев для вашего дистрибутива. На момент написания инструкции это были версии PostgreSQL 15, 14, 13, 12 или 11 для Ubuntu/Debian, PostgreSQL 11 для Astra Linux Special Edition 1.7.4 и PostgreSQL 9.6 для Astra Linux Special Edition 1.6 / Common Edition.

Введите в терминале:

sudo apt -y install postgresql postgresql-contrib

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

Теперь создадим пользователя в PostgreSQL, от имени которого будет выполняться подключение системы к СУБД.

Note

Мы создадим суперпользователя, у которого есть право на создание баз данных, чтобы скрипт установки от имени этого пользователя создал базу данных для TESSA. Возможна более тонкая настройка прав, когда вручную создаётся пустая база данных и в ней прописываются права db_owner для пользователя, используемого для подключения из TESSA к СУБД, при этом сам пользователь не является суперпользователем и получает доступ только к БД TESSA. Для выполнения таких настроек обратитесь к документации PostgreSQL.

sudo -u postgres psql postgres

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

Important

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

CREATE USER tessa WITH PASSWORD 'Master1234';

CREATE DATABASE tessa WITH OWNER='tessa' ENCODING='UTF8' TEMPLATE=template0;

Команды выполняют следующие действия:

  1. Создаётся роль (пользователь) в PostgreSQL с именем tessa и паролем Master1234. Он не имеет отношения к ранее созданной учётной записи Linux, и используется только для подключения к СУБД в строках подключения (в конфигурационных файлах).

    Tip

    Именно такие логин/пароль указаны в строках подключения сервисов и утилит в папке со сборкой в файла app-db.json, поэтому для тестовой установки можно оставить их как есть.

    Однако, при использовании в production-инсталляциях обязательно укажите другой пароль.

    Tip

    Начиная с PostgreSQL 12, вы можете создать роль, используя новый синтаксис команды CREATE ROLE. Команда CREATE USER поддерживается для совместимости, и является алиасом новой команды.

    CREATE ROLE tessa WITH LOGIN PASSWORD 'Master1234';

    Для создания пользователя с правами SUPERUSER используйте команду:

    CREATE ROLE tessa WITH LOGIN SUPERUSER PASSWORD 'Master1234';

  2. Создаётся пустая база данных tessa с кодировкой UTF-8 (необходимо для корректной работы системы), владельцем которой со всеми правами становится роль (пользователь) tessa.

Чтобы убедиться, что пользователь создан, и показать информацию по всем пользователям в PostgreSQL, введите:

\du

Для вывода информации по доступу для базы данных tessa (в колонках Owner, Access privileges) введите:

\l tessa

Также выведите на экран путь к файлу pg_hba.conf, он понадобится нам в инструкции ниже.

SHOW hba_file;

  • Для Debian 10 и Astra Linux Special Edition 1.7.4 это путь /etc/postgresql/11/main/pg_hba.conf

  • Для Ubuntu 20.04 это путь /etc/postgresql/12/main/pg_hba.conf

  • Для Debian 11 это путь /etc/postgresql/13/main/pg_hba.conf

  • Для Ubuntu 22.04 это путь /etc/postgresql/14/main/pg_hba.conf

  • Для Debian 12 это путь /etc/postgresql/15/main/pg_hba.conf

  • Для Ubuntu 24.04 это путь /etc/postgresql/16/main/pg_hba.conf

  • Для Astra Linux Special Edition 1.6 / Common Edition и PostgreSQL 9.6 это путь /etc/postgresql/9.6/main/pg_hba.conf

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

Tip

Вы можете установить пароль для суперпользователя postgres, созданного автоматически при установке PostgreSQL. Пароль суперпользователя не требуется для настройки системы, но иногда может быть полезно его указать. Для этого в консоли psql введите команду \password postgres и затем введите пароль.

Выходим из консоли psql, вводим:

\q

Для Astra Linux Special Edition в режиме безопасности Смоленск отключите мандатную безопасность для пользователей, не являющихся учётными записями пользователей Linux. Это необходимо для подключения созданного в Postgres пользователя tessa. Откройте для редактирования файл:

sudo nano /etc/parsec/mswitch.conf

Найдите строку:

zero_if_not_found no

И замените на yes:

zero_if_not_found yes

Сохраните и закройте файл: Ctrl+X, Y, Enter.

Tip

Мандатную безопасность для таких пользователей можно не отключать, но для этого потребуется подключаться от имени пользователя postgres, прописав его во всех файлах app-db.json (см. ниже), а также задав ему пароль \password postgres в psql (см. выше). Дополнительно с помощью команды setfacl потребуется предоставить права для пользователя postgres (описано ниже).

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

  • ~/build/linux/tools/app.json - конфигурационный файл утилиты tadmin в папке внутри распакованного архива. Утилита будет использована для первичной установки и настройки системы. Рядом файл app-db.json содержит строки подключения к базам данных.

  • ~/tessa/web/app.json - конфигурационный файл веб-сервиса. Рядом файл app-db.json содержит строки подключения к базам данных.

  • ~/tessa/chronos/app.json - конфигурационный файл сервиса Chronos. Рядом файл app-db.json содержит строки подключения к базам данных.

Символ ~ соответствует домашней папке текущего пользователя, он же аналогичен пути /home/tessa, где tessa - имя пользователя.

Настройка доступа по сети к PostgreSQL

Теперь настроим сетевой доступ к СУБД, чтобы сервисы и утилиты TESSA могли подключиться к БД. Обычно СУБД располагается на отдельном сервере, к которому подключается сервер приложений.

Important

Здесь приведены настройки, для которых подразумевается, что доступ к серверу БД ограничен настройками сетевой инфраструктуры или firewall-ом ОС, либо это тестовая установка. Такие настройки разрешают доступ с любых IP-адресов, что позволяет любому устройству подключиться к СУБД при знании логинов/паролей пользователей PostgreSQL. Обратитесь к документации PostgreSQL, чтобы выполнить более специфичную настройку.

Изменим файл pg_hba.conf. Для этого выполните в терминале для Debian 10 и Astra Linux Special Edition 1.7.4:

sudo nano /etc/postgresql/11/main/pg_hba.conf

Для Ubuntu 20.04:

sudo nano /etc/postgresql/12/main/pg_hba.conf

Для Debian 11:

sudo nano /etc/postgresql/13/main/pg_hba.conf

Для Ubuntu 22.04:

sudo nano /etc/postgresql/14/main/pg_hba.conf

Для Debian 12:

sudo nano /etc/postgresql/15/main/pg_hba.conf

Для Ubuntu 24.04:

sudo nano /etc/postgresql/16/main/pg_hba.conf

Для Astra Linux Special Edition 1.6 / Common Edition:

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

Откроется редактор nano. Прокрутите текст вниз и найдите строку:

local all all peer

Замените её на (если в правом столбце уже было trust, то не меняйте настройку):

local all all md5

Tip

Начиная с PostgreSQL 12, здесь и ниже вы можете указать scram-sha-256 вместо md5 как более надёжный метод аутентификации по паролю.

Ниже добавьте строку:

host all all 127.0.0.1/32 md5

Note

Укажите IP-адрес 0.0.0.0/0, когда СУБД располагается на другом сервере, чем сервер приложений. Это необходимо для любых production-инсталляций.

Теперь ещё ниже может быть строка:

host all all ::1/128 ident

Если она есть и в правом столбце ident (но не scram-sha-256, md5 или trust), то замените её на:

host all all ::1/128 md5

Если нужно подключиться к СУБД от имени суперпользователя postgres по заданному паролю (в приведённой инструкции этого не требуется), то дополнительно найдите строку (если она присутствует):

local all postgres peer

Замените её на строку:

local all postgres md5

Закройте редактор с сохранением изменений.

Теперь откройте на редактирование файл postgresql.conf, который расположен в той же папке, что и предыдущий файл. Для Debian 10 и Astra Linux Special Edition 1.7.4:

sudo nano /etc/postgresql/11/main/postgresql.conf

Для Ubuntu 20.04:

sudo nano /etc/postgresql/12/main/postgresql.conf

Для Debian 11:

sudo nano /etc/postgresql/13/main/postgresql.conf

Для Ubuntu 22.04:

sudo nano /etc/postgresql/14/main/postgresql.conf

Для Debian 12:

sudo nano /etc/postgresql/15/main/postgresql.conf

Для Ubuntu 24.04:

sudo nano /etc/postgresql/16/main/postgresql.conf

Для Astra Linux Special Edition 1.6 / Common Edition:

sudo nano /etc/postgresql/9.6/main/postgresql.conf

Найдите в нём строку listen_addresses (нажмите Ctrl+W и введите искомую строку). Теперь уберите ведущий символ комментария #. И замените следующим образом:

listen_addresses = 'localhost'

Note

Укажите listen_addresses = '*', когда СУБД располагается на другом сервере, чем сервер приложений. Это необходимо для любых production-инсталляций.

Tip

В случае, если одновременных пользователей больше 100, рекомендуется указать max_connections = 200 и обратиться к документации по администрированию PostgreSQL.

Для Astra Linux Special Edition 1.7.4: найдите в этом файле настройку standard_conforming_strings (поиск Ctrl+W) и установите её равной on. Убедитесь, что в начале строки нет символа комментария #.

standard_conforming_strings = on

Закройте редактор с сохранением изменений.

Для дистрибутива Astra Linux Special Edition в режиме Смоленск, если вы не отключали мандатную безопасность для пользователей Postgres, то дополнительно выполните команды в терминале:

sudo setfacl -Rm u:postgres:rx /etc/parsec/macdb

sudo setfacl -Rm u:postgres:rx /etc/parsec/capdb

Для любого дистрибутива: перезапустите сервис PostgreSQL командой:

sudo systemctl restart postgresql

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

psql -d postgres -U tessa -W

Если выполняется подключение для пользователя postgres, то введите другую команду:

psql -d postgres -U postgres -W

Потребуется ввести пароль пользователя PostgreSQL, созданного ранее, в этой инструкции был указан пароль Master1234.

Если появилась командная строка psql без сообщений об ошибках, то всё настроено правильно. Теперь можно выйти:

\q

Настройка веб-сервиса TESSA

Теперь подготовим и запустим веб-сервис.

Tip

Убедитесь, что предварительно установили строку подключения к PostgreSQL в файле app-db.json в папке веб-сервиса. Если вы использовали предложенные выше логин/пароль для пользователя PostgreSQL, то настройку конфигурационного файла выполнять не надо.

Создайте конфигурационный файл веб-сервиса и откройте его на редактирование, используя команду в терминале:

sudo nano /etc/systemd/system/tessa.service

Скопируйте следующий текст:

[Unit] Description=Syntellect TESSA

[Service] WorkingDirectory=/home/tessa/tessa/web ExecStart=/home/tessa/tessa/web/Tessa.Web.Server 5000 Restart=always RestartSec=10 SyslogIdentifier=tessa User=tessa UMask=002 Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install] WantedBy=multi-user.target

Закройте редактор с сохранением изменений.

Tip

Строка WorkingDirectory содержит путь до папки с веб-сервисом. Строка ExecStart должна содержать тот же путь вместе с именем исполняемого файла Tessa.Web.Server.

Note

Вы можете указать учётную запись, из-под которой запускается веб-сервис, как специальную группу User=www-data, но тогда надо будет выполнить настройку прав для файловой папки, а также указать соответствующую группу в настройках сервиса Chronos. Перед выполнением таких настроек проконсультируйтесь с документацией по команде systemctl и по её формату конфигурационных файлов .service в документации по вашему дистрибутиву Linux.

Note

Для учётной записи, от имени которой запускаются сервисы tessa и chronos, помимо доступа к папкам этих сервисов требуется также обеспечить доступ на чтение и запись к временной папке по пути /tmp/user-name (обычно в операционной системе уже разрешён такой доступ). Для учётной записи tessa это путь /tmp/tessa. По установке прав доступа проконсультируйтесь с документацией по вашему дистрибутиву Linux.

Настройте автозапуск веб-сервиса и запустите его, выполнив команду в терминале:

sudo systemctl enable tessa && sudo systemctl start tessa

Tip

Здесь tessa соответствует имени сервиса tessa.service без расширения .service.

Проверьте, что сервис успешно запущен, выполнив команду:

sudo systemctl status tessa

Если всё корректно, то рядом с именем сервиса будет выведен зелёный кружок.

Если режим просмотра статуса не закрылся сам, закройте его нажатием кнопки Q.

Tip

Если позже вы измените файл сервиса .service, то сначала выполните команду sudo systemctl daemon-reload и затем перезапустите изменённый сервис sudo systemctl restart tessa.

Tip

Посмотреть сообщения журнала по всем запущенным службам можно, выполнив команду: sudo journalctl -xe.

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

Соединение с веб-сервисом tessa всегда будет выполняться по протоколу https совместно с протоколом TLS v1.2. Для функционирования протоколов на сервере должен быть установлен файл сертификата, полученный в удостоверяющем центре. Этот сертификат будет использоваться клиентскими приложениями при подключении к сервису, чтобы проверить, что адрес сервера является подлинным. Пользователю сертификат будет виден при доступе к веб-клиенту, слева от адресной строки.

Для тестовой настройки можно использовать самоподписанный сертификат, который выписывается командой openssl.

Откройте терминал и выполните команды:

sudo mkdir -p /etc/pki/tls/certs /etc/pki/tls/private

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.crt

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

Пример ввода:

  1. Код страны (Country Name): RU

  2. Область, город или штат (State or Province Name): Moscow

  3. Населённый пункт, город (Locality Name): Moscow

  4. Название компании (Organization Name): Syntellect

  5. Подразделение (Organizational Unit Name): IT

  6. Доменное имя или ваше имя (Common Name): mytessa.ru

  7. Адрес email, обычно не заполняют (Email Address): нажимаем Enter

Tip

В командах выше мы указали местоположение файла закрытого ключа /etc/pki/tls/private/localhost.key и файла сертификата /etc/pki/tls/certs/localhost.crt. Вы можете указать другие месторасположения файлов, тогда при настройке веб-сервера ниже потребуется указать пути к вашим файлам.

Настройка веб-сервера Nginx

Мы рекомендуем использовать веб-сервер Nginx, если он официально поддерживается в вашем дистрибутиве Linux, т.е. если он доступен в репозиториях. Это верно для Ubuntu / Debian.

В Astra Linux Special Edition 1.6 по умолчанию в репозиториях доступен Apache и недоступен Nginx. Если команда установки ниже выполнится успешно, то игнорируйте это предупреждение. Хотя установка Nginx и возможна подключением внешнего репозитория от Debian, но мы рекомендуем в этом случае установить сервер Apache. Также если имеется инфраструктура, уже настроенная на сервере Apache, то используйте её. Инструкции по настройке в разделе Настройка веб-сервера Apache.

Important

Не устанавливайте и не выполняйте настройку для веб-сервера Nginx, если вы используете веб-сервер Apache.

Откройте окно терминала и установите Nginx:

sudo apt -y install nginx

Дождитесь окончания установки. После этого откройте для редактирования файл:

sudo nano /etc/nginx/sites-available/default

Удалите его содержимое (сочетание клавиш Alt+T, или Ctrl+K для построчного удаления) и замените на следующее:

map $remote_addr $proxy_forwarded_elem { # IPv4 addresses can be sent as-is ~^[0-9.]+$ "for=$remote_addr";

# IPv6 addresses need to be bracketed and quoted ~^[0-9A-Fa-f:.]+$ "for=\"[$remote_addr]\"";

# Unix domain socket names cannot be represented in RFC 7239 syntax default "for=unknown"; }

map $http_forwarded $proxy_add_forwarded { # If the incoming Forwarded header is syntactically valid, append to it "~^(,[ \\t]*)*([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?(;([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?)*([ \\t]*,([ \\t]*([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?(;([!#$%&'*+.^_`|~0-9A-Za-z-]+=([!#$%&'*+.^_`|~0-9A-Za-z-]+|\"([\\t \\x21\\x23-\\x5B\\x5D-\\x7E\\x80-\\xFF]|\\\\[\\t \\x21-\\x7E\\x80-\\xFF])*\"))?)*)?)*$" "$http_forwarded, $proxy_forwarded_elem";

# Otherwise, replace it default "$proxy_forwarded_elem"; }

server { listen 80; listen [::]:80; return 301 https://$host$request_uri; }

server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server;

proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;

ssl_certificate /etc/pki/tls/certs/localhost.crt; ssl_certificate_key /etc/pki/tls/private/localhost.key;

ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on;

location / { proxy_pass http://localhost:5000/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Forwarded $proxy_add_forwarded; proxy_cache_bypass $http_upgrade; client_max_body_size 0; } }

Important

Если вы используете nginx 1.10 или более ранний, то добавьте строку ssl on; перед строкой ssl_session_cache. Проверить версию можно командой nginx -v. В более старших версиях nginx эта настройка либо является устаревшей (и в статусе сервиса выводится deprecated-предупреждение), либо настройка удалена, и её использование приводит к ошибке запуска сервиса (подтверждено для nginx 1.25).

Important

В примере конфигурационного файла nginx включен протокол http/2, который может использоваться браузером для загрузки статического контента. Поддержка этого протокола в nginx появилась начиная с версии 1.9.5. При использовании nginx версии младше 1.9.5 для корректной работы необходимо убрать http2 из директив конфигурационного файла server { listen … }.

Important

Если необходимо использовать базовый путь, то важно также передавать этот базовый путь в веб-приложении Tessa.Web.Server. Например, если location /test/, то proxy_pass http://localhost:5000/test/. Также не забудьте в app.json веб-приложения установить свойства PathBase и GuyFawkesAuth. Например PathBase: "/test", GuyFawkesAuth:"test".

Закройте редактор с сохранением изменений.

Tip

Сервер Nginx настроен как reverse proxy, принимающий любые сообщения по 443-порту, что соответствует протоколу https, и перенаправляющий трафик на localhost порт 5000, именно на этом порту по умолчанию запущено веб-приложение Tessa.Web.Server. Также в настройках указан redirect любых запросов с порта 80 (протокол http) на порт 443 (т.е. на https). В качестве протокола защиты разрешён только TLS v1.2, самый безопасный протокол на настоящий момент.

Перезапустите веб-сервер, выполнив команду:

sudo systemctl restart nginx

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

sudo systemctl status nginx

Если всё корректно, то рядом с именем сервиса будет выведён зелёный кружок.

Если режим просмотра статуса не закрылся сам, закройте его нажатием кнопки Q.

Tip

Сервер приложений TESSA построен на основе технологии ASP.NET Core. Особенности по его установке на различные дистрибутивы Linux, не покрываемые настоящим руководством, доступны на MSDN по ссылке: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-6.0.

Настройка веб-сервера Apache

Мы рекомендуем использовать веб-сервер Apache, если Nginx не поддерживается в вашем дистрибутиве Linux или если уже имеется инфраструктура, настроенная на сервере Apache. В противном случае рассмотрите настройку Nginx в разделе Настройка веб-сервера Nginx.

Important

Не устанавливайте и не выполняйте настройку для веб-сервера Apache, если вы используете веб-сервер Nginx.

Important

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

Откройте окно терминала и установите Apache:

sudo apt -y install apache2

Дождитесь окончания установки. Установите дополнительные модули Apache:

sudo a2enmod headers proxy proxy_balancer proxy_http rewrite ssl http2

После этого откройте для редактирования файл:

sudo nano /etc/apache2/sites-available/000-default.conf

Удалите его содержимое и замените на следующее:

ServerName localhost RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}

<VirtualHost *:80> Protocols h2 http/1.1 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost>

<VirtualHost *:443> Protocols h2 http/1.1 ProxyPreserveHost On ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ LogLevel warn ErrorLog ${APACHE_LOG_DIR}/tessa-error.log CustomLog ${APACHE_LOG_DIR}/tessa-access.log common

SSLEngine on SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;" Header always set X-Frame-Options DENY Header set X-Content-Type-Options "nosniff" </VirtualHost>

Important

Если необходимо использовать базовый путь, то важно также передавать этот базовый путь в веб-приложение Tessa.Web.Server. Кроме того, не забудьте в app.json веб-приложения установить свойство PathBase.

Закройте редактор с сохранением изменений.

Tip

Сервер Apache настроен как reverse proxy, принимающий любые сообщения по 443-порту, что соответствует протоколу https, и перенаправляющий трафик на localhost порт 5000, именно на этом порту по умолчанию запущено веб-приложение Tessa.Web.Server. Также в настройках указан redirect любых запросов с порта 80 (протокол http) на порт 443 (т.е. на https). В качестве протокола защиты разрешён только TLS v1.2, самый безопасный протокол на настоящий момент.

Для дистрибутива Astra Linux Special Edition откройте для редактирования файл:

sudo nano /etc/apache2/apache2.conf

Найдите в нём строку:

# AstraMode on

Замените её на:

AstraMode off

Сохраните файл и закройте редактор.

Для любого дистрибутива: перезапустите веб-сервер, выполнив команду:

sudo systemctl restart apache2

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

sudo systemctl status apache2

Если всё корректно, то рядом с именем сервиса будет выведен зелёный кружок.

Если режим просмотра статуса не закрылся сам, закройте его нажатием кнопки Q.

Tip

Сервер приложений TESSA построен на основе технологии ASP.NET Core. Особенности по его установке на различные дистрибутивы Linux, не покрываемые настоящим руководством, доступны на MSDN по ссылке: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-6.0.

Установка TESSA на новую базу данных

К настоящему моменту должны быть настроены:

  1. СУБД PostgreSQL

  2. Веб-сервис tessa.service

  3. Веб-сервер Nginx или Apache

  4. Настроенный сертификат

Tip

Проверьте, что если вы указали другие логин/пароль для пользователя PostgreSQL, чем было указано в инструкции, то для этого раздела необходимо, чтобы в файлах app-db.json из папок ~/build/linux/tools и ~/tessa/web были прописаны заданные вами логин/пароль этого пользователя. После изменения параметров перезапустите веб-сервис командой sudo systemctl restart tessa.

Перейдите в папку linux внутри распакованного архива со сборкой:

cd ~/build/linux

Запустите скрипт установки:

./setup.sh

Скрипт предложит ввести:

  1. Адрес подключения к веб-сервисам. Нажмите Enter, чтобы подтвердить значение по умолчанию https://localhost.

  2. Имя базы данных. Нажмите Enter, если при настройке PostgreSQL вы создали базу данных и назначили на неё права, как указано выше.

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

  3. Путь к файловой папке, где будет расположено содержимое файлов. Нажмите Enter, чтобы использовать путь по умолчанию /home/tessa/tessa/files, тогда в ходе установки будет создана папка files рядом с папками web, chronos и webbi.

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

  5. Путь к папке веб-сервиса. Нажмите Enter, чтобы использовать путь по умолчанию /home/tessa/tessa/web.

  6. Путь к папке сервиса Chronos. Нажмите Enter, чтобы использовать путь по умолчанию /home/tessa/tessa/chronos.

Tip

Если в качестве имени базы данных нажать Enter без указания имени БД, то установка будет выполнена для пустой базы данных, которая указана в конфигурационном файле app-db.json, причём она уже должна быть создана на момент запуска скрипта. Это полезно в сценариях, когда необходимо предварительно настроить права пользователя PostgreSQL, от которого приложения подключаются к СУБД.

После ввода скрипт выведет заданные настройки. Если при вводе настроек допущена ошибка, то нажмите Ctrl+C, чтобы прервать выполнение скрипта, после чего заново запустите его. Если всё корректно, нажмите любую клавишу, чтобы начать установку.

Установка займёт несколько минут. После завершения установки скрипт предложит перезапустить веб-сервис и запустить Chronos.

Tip

Если установка завершилась с ошибкой, то скрипт выведет местоположение файла лога, который содержит текст ошибки. После её исправления удалите базу данных командой tools/tadmin DropDatabase (если она была создана), и после запустите скрипт снова.

Выполните команду в терминале для перезапуска сервиса:

sudo systemctl restart tessa

Теперь проверьте, что сервис функционирует. Для этого в любом веб-браузере (например, в Firefox) откройте страницу по адресу: https://localhost/check или https://127.0.0.1/check (localhost может выдавать ошибку на некоторых инсталляциях).

Note

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

Tip

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

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

Настройка Chronos

Настроим и запустим сервис Chronos, чтобы он выполнял различные фоновые задачи, в т.ч. пересчёт ролей и замещений.

Создайте конфигурационный файл сервиса Chronos и откройте его на редактирование, используя команду в терминале:

sudo nano /etc/systemd/system/chronos.service

Скопируйте следующий текст:

[Unit] Description=Syntellect Chronos

[Service] WorkingDirectory=/home/tessa/tessa/chronos ExecStart=/home/tessa/tessa/chronos/Chronos Restart=always RestartSec=10 SyslogIdentifier=chronos User=tessa UMask=002 Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install] WantedBy=multi-user.target

Закройте редактор с сохранением изменений.

Tip

Строка WorkingDirectory содержит путь до папки с сервисом Chronos. Строка ExecStart должна содержать тот же путь вместе с именем исполняемого файла Chronos. В строке User указана учётная запись Linux, которая используется для запуска сервиса Chronos.

Настройте автозапуск сервиса Chronos и запустите его, выполнив команду в терминале:

sudo systemctl enable chronos && sudo systemctl start chronos

Tip

Здесь chronos соответствует имени сервиса chronos.service без расширения .service.

Проверьте, что сервис успешно запущен, подождав полминуты (пока сервис Chronos инициализируется) и выполнив команду:

sudo systemctl status chronos

Если всё корректно, то рядом с именем сервиса будет выведен зелёный кружок.

Если режим просмотра статуса не закрылся сам, закройте его нажатием кнопки Q.

Также проверьте файл лога log.txt, который должен появится в папке Chronos, по умолчанию в ~/tessa/chronos. В файле не должно быть сообщений-ошибок, которые отмечаются словом ERROR или FATAL, но должны быть информационные сообщения о запуске различных плагинов.

Установка Webbi

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

Note

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

Important

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

Установка Jinni

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

Установка Monitor

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

Note

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

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

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

Important

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

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

Проверка установленной системы TESSA

Откройте веб-браузер и откройте страницу по адресу: https://localhost или https://127.0.0.1 (localhost может выдавать ошибку на некоторых инсталляциях).

Система должна перенаправить на страницу логина в веб-клиент. Введите логин admin и пароль admin, это выполнит вход от имени администратора TESSA с именем “Admin”.

Если была произведена установка веб-сервиса Jinni, то проверьте, что система действительно конвертирует файлы офисных форматов (например, .docx) из веб-клиента.

Создайте любую карточку, приложите к ней тестовый документ 01.docx небольшого размера (не более 1-2 Мб). Выполните предпросмотр документа. Спустя некоторое время (1-2 минуты) документ должен быть отображен в области предпросмотра.

Вы успешно установили и настроили типовую конфигурацию платформы TESSA.

Back to top