Установка на 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;
Команды выполняют следующие действия:
-
Создаётся роль (пользователь) в 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';
-
Создаётся пустая база данных
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, тогда будет использовано значение внутри квадратных скобок.
Пример ввода:
-
Код страны (Country Name):
RU
-
Область, город или штат (State or Province Name):
Moscow
-
Населённый пункт, город (Locality Name):
Moscow
-
Название компании (Organization Name):
Syntellect
-
Подразделение (Organizational Unit Name):
IT
-
Доменное имя или ваше имя (Common Name):
mytessa.ru
-
Адрес 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 на новую базу данных¶
К настоящему моменту должны быть настроены:
-
СУБД PostgreSQL
-
Веб-сервис tessa.service
-
Настроенный сертификат
Tip
Проверьте, что если вы указали другие логин/пароль для пользователя PostgreSQL, чем было указано в инструкции, то для этого раздела необходимо, чтобы в файлах app-db.json
из папок ~/build/linux/tools
и ~/tessa/web
были прописаны заданные вами логин/пароль этого пользователя. После изменения параметров перезапустите веб-сервис командой sudo systemctl restart tessa
.
Перейдите в папку linux
внутри распакованного архива со сборкой:
cd ~/build/linux
Запустите скрипт установки:
./setup.sh
Скрипт предложит ввести:
-
Адрес подключения к веб-сервисам. Нажмите Enter, чтобы подтвердить значение по умолчанию
https://localhost
. -
Имя базы данных. Нажмите Enter, если при настройке PostgreSQL вы создали базу данных и назначили на неё права, как указано выше.
Если скрипту необходимо создать новую базу данных с именем
tessa
, то введитеtessa
и нажмите Enter, при этом у пользователя должны быть права на создание баз данных. -
Путь к файловой папке, где будет расположено содержимое файлов. Нажмите Enter, чтобы использовать путь по умолчанию
/home/tessa/tessa/files
, тогда в ходе установки будет создана папкаfiles
рядом с папкамиweb
,chronos
иwebbi
. -
Смещение часового пояса во временной зоне по умолчанию в минутах. Например, для часового пояса UTC+02:00 укажите 120 (2 часа умножить на 60 минут в часе). Нажмите Enter, чтобы использовать смещение по умолчанию 180 (для UTC+03:00). После установки вы можете изменить смещение в карточке настроек “Временные зоны”.
-
Путь к папке веб-сервиса. Нажмите Enter, чтобы использовать путь по умолчанию
/home/tessa/tessa/web
. -
Путь к папке сервиса 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.