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

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

Note

В этой инструкции мы подразумеваем, что при установке была указана учётная запись администратора с именем “tessa”. По инструкции система будет установлена в домашнюю папку этого пользователя /home/tessa, где приложения будут автоматически иметь права доступа на все используемые файлы.

Note

Если это ваша первая установка системы на Linux и вы не являетесь опытным администратором Linux, мы рекомендуем придерживаться такого сценария, т.е. указать пользователя с именем “tessa” (и любым паролем). При установке системы в папку, отличную от домашней папки, или при запуске сервисов с правам специальных групп пользователей (например, www-data для веб-сервисов) потребуется также средствами Linux настроить права доступа к папке с файлами (и потенциально к другим папкам, к которым потребуется право на изменение).

Tip

Переключение языка ввода, в зависимости от дистрибутива и настроек, может по умолчанию выполняться сочетаниями клавиш Shift+Alt, Ctrl+Shift или Win+Пробел.

Tip

Установка Astra Linux тестировалась на релизах Special Edition Смоленск 1.6 и Common Edition Орёл 2.11.5.

Для установки системы в Linux потребуется активно использовать терминал (окно консоли). Терминал можно открыть сочетанием клавиш Ctrl+Shift+T (только Ubuntu и Linux Mint) или найти его в главном меню (для Astra Linux - Пуск -> Системные -> Терминал Fly; для Debian/Fedora нажмите “Обзор” в левом верхнем углу, после чего с клавиатуры введите Терминал).

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

  • Ctrl+Shift+C или Ctrl+Insert (Astra Linux): копирование в буфер обмена терминала.

  • Ctrl+Shift+V или Shift+Insert (Astra Linux): вставка из буфера обмена терминала.

  • Ctrl+U: очистка текущей введённой команды (удаляет текст от позиции курсора до начала строки).

  • Ctrl+L: очистка окна терминала путём его прокрутки вниз.

  • Ctrl+Z: прервать выполнение команды, которая сейчас выполняется.

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

  • Ctrl+Shift+V или Shift+Insert: вставка из буфера обмена терминала.

  • Shift+стрелки или Shift+PageUp/PageDown: выделение текста.

  • Ctrl+K: удаление выделенного текста или текущей строки, если текст не выделен. Удалённый текст помещается в буфер обмена редактора (он не зависит от буфера обмена терминала).

  • Alt+6 (в справке обозначено как M+^): копирование текущей строки или выделенного текста в буфер обмена редактора.

  • Ctrl+U: вставка текста из буфера обмена редактора в текущую позицию курсора.

  • Alt+T: удалить текст от позиции курсора до конца файла.

  • Для выхода с сохранением изменений используйте Ctrl+X, нажмите Y для подтверждения, что изменения будут сохранены, и затем Enter для подтверждения имени файла. Для выхода без сохранения изменений вместо Y введите N.

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

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

Note

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

Note

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

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

cd ~/build/linux

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

chmod 755 init.sh && ./init.sh

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

Note

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

Important

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

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

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

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

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

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

su -

apt -y install sudo

visudo

Откроется текстовый редактор 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.

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

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

sudo apt -y install libgdiplus

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

cd ~

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

sudo apt -y install ./libgdiplus_4.2-1+b1_amd64.deb

rm ~/libgdiplus_4.2-1+b1_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

Установка PostgreSQL

Установите последнюю версию PostgreSQL из репозиториев для вашего дистрибутива. На момент написания инструкции это были версии PostgreSQL 12, 11 или 10.4 для Ubuntu/Debian, и PostgreSQL 9.6 для Astra Linux. Подойдут и более новые версии.

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

sudo apt -y install postgresql postgresql-contrib

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

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

Note

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

sudo -u postgres psql postgres

Откроется консоль команды psql, которая подключена к базе данных “postgres” от имени учётной записи “postgres”. Введите в ней имя пользователя (здесь это “tessa”) и пароль (здесь это “Master1234”).

Tip

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

CREATE USER tessa WITH SUPERUSER PASSWORD 'Master1234';

Note

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

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

\du

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

SHOW hba_file;

  • Для Ubuntu 18.10 и раньше, и PostgreSQL 10.x это путь /etc/postgresql/10/main/pg_hba.conf

  • Для Ubuntu 19.04 и 19.10 это путь /etc/postgresql/11/main/pg_hba.conf

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

  • Для Debian / Astra Linux и 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.json (см. ниже), а также задав ему пароль \password postgres в psql (см. выше). Дополнительно с помощью команды setfacl потребуется предоставить права для пользователя postgres (описано ниже).

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

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

  • ~/tessa/web/app.json - конфигурационный файл веб-сервиса.

  • ~/tessa/chronos/app.json - конфигурационный файл сервиса Chronos.

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

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

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

Important

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

Изменим файл pg_hba.conf. Для этого выполните в терминале для Ubuntu 18.10 и раньше:

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

Для Ubuntu 19.04 и 19.10:

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

Для Ubuntu 20.04:

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

Для Debian / Astra Linux:

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

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

local all all peer

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

local all all md5

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

host all all 0.0.0.0/0 md5

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

host all all ::1/128 ident

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

host all all ::1/128 md5

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

local all postgres peer

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

local all postgres md5

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

Теперь откройте на редактирование файл postgresql.conf, который расположен в той же папке, что и предыдущий файл. Для Ubuntu 18.10 и раньше:

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

Для Ubuntu 19.04 и 19.10:

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

Для Ubuntu 20.04:

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

Для Debian / Astra Linux:

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

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

listen_addresses = '*'

Tip

Вы можете также указать listen_addresses = 'localhost', если СУБД располагается на том же сервере, что и сервер приложений.

Tip

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

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

Для дистрибутива 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.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 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 по умолчанию в репозиториях доступен 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) и замените на следующее:

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 on; 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 включен протокол 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/.](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-3.1&tabs=aspnetcore3x

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

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

Important

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

Откройте окно терминала и установите 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-3.0&tabs=aspnetcore3x

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

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

  1. СУБД PostgreSQL

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

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

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

Tip

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

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

cd ~/build/linux

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

./setup.sh

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

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

  2. Имя базы данных. Введите tessa и нажмите Enter, это приведёт к созданию новой базы данных с именем tessa.

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

  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.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

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

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

Настройка Chronos

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

Note

Чтобы в системе выполнялась конвертация файлов для предпросмотра в веб-клиенте, необходимо, чтобы в системе был установлен LibreOffice или OpenOffice. Установить его следует из репозитория или из магазина приложений, если он уже не установлен, обратитесь к документации по вашему дистрибутиву Linux. В конфигурационном файле app.json в настройке OpenOfficePython указано "python3", этого достаточно, чтобы система самостоятельно подключилась к установленным LibreOffice / OpenOffice и выполнила конвертацию.

Tip

Если вы хотите отключить конвертацию файлов офисных форматов для предпросмотра в веб-клиенте, то в app.json в папке Chronos ~/tessa/chronos в настройке OpenOfficePython укажите пустую строку "".

Создайте конфигурационный файл сервиса 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

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

Проверьте, функционирует ли unoconv. Найдите процессы unoconv и LibreOffice среди запущенных процессов (последние две строки):

Процессы могут отсутствовать или появиться и тут же завершиться при запуске сразу после установки. В этом случае либо перезагрузите компьютер, либо закройте, а затем сразу откройте окно терминала, в котором перезапустите сервис Chronos:

sudo systemctl restart chronos

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

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

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

Tip

Пока запущен сервис Chronos, вы не сможете открывать приложения LibreOffice / OpenOffice на том же компьютере (на сервере приложений). Это связано с тем, что плагин конвертации файлов использует unoconv, который загружает фоновый процесс офиса в режиме прослушивания, чтобы в дальнейшем использовать его для передачи конвертируемых файлов. Если потребуется запустить какое-либо офисное приложение, то временно остановите Chronos командой sudo systemctl stop chronos, а позже запустите его (или он запустится автоматически при перезапуске компьютера).

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

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

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

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

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

В этом случае мы рекомендуем такую последовательность действий:

  1. Перезапустите сервер, на котором запущен Chronos:

    sudo reboot

  2. После запуска остановите сервис Chronos:

    sudo systemctl stop chronos

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

  4. Скопируйте тестовый документ 01.docx в домашнюю папку и выполните следующую команду:

    unoconv -f pdf -o ~/01.pdf ~/01.docx

  5. Конвертация должна быть выполнена достаточно быстро, после чего искомый файл 01.pdf будет расположен в домашней папке. Откройте его, если содержимое тестового документа конвертировано с ошибками или файл не был создан, то обратитесь к документации вашего дистрибутива и к инструкции по команде unoconv.

  6. Запустите сервис Chronos:

    sudo systemctl start chronos

  7. Теперь проверьте ещё раз конвертацию из веб-клиента. Она должна выполнится успешно спустя не более, чем 1-2 минуты для тестового документа.

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

Быстрая установка на Astra Linux

Здесь собраны наборы команд и настроек, которые позволят быстро установить всё необходимое для развёртывания тестового стенда на Astra Linux, релиз Смоленск или Орёл. Команды приводятся без пояснений, поэтому для дополнительной информации прочитайте разделы выше.

Установите систему с учётной записью с именем tessa или замените параметры соответствующих команд ниже.

Распаковываем сборку в новую папку ~/build. Команды выполняйте, копируя их под одной (они разделены пустыми строками).

cd ~/build/linux

chmod 755 init.sh && ./init.sh

Копируем файл лицензии в папки chronos и web, меняем в их файлах app.json имя файла лицензии *.tlic. Далее копируем эти две папки в новую ~/tessa.

sudo apt update && sudo apt -y upgrade

sudo apt -y install postgresql postgresql-contrib apache2

sudo a2enmod headers proxy proxy_balancer proxy_http rewrite ssl

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

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

Для Astra Linux Common Edition дополнительно выполните команду:

sudo apt -y install libgdiplus

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

cd ~

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

sudo apt install ./libgdiplus_4.2-1+b1_amd64.deb

rm ~/libgdiplus_4.2-1+b1_amd64.deb

Для всех дистрибутивов:

sudo -u postgres psql postgres

CREATE USER tessa WITH SUPERUSER PASSWORD 'Master1234';

\q

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

Замените содержимое файла 000-default.conf на текст из раздела Настройка веб-сервера Apache.

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

Отредактируйте файл pg_hba.conf в соответствии с указаниями в разделе Настройка доступа по сети к PostgreSQL.

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

Отредактируйте файл postgresql.conf в соответствии с указаниями в разделе Настройка доступа по сети к PostgreSQL.

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

Вставьте в файл tessa.service текст из раздела Настройка веб-сервиса TESSA.

sudo systemctl enable tessa && sudo systemctl start tessa

sudo systemctl restart postgresql apache2

Теперь запустите скрипт установки TESSA.

cd ~/build/linux

./setup.sh

На вопросы перед установкой нажимайте: [Enter]; tessa [Enter]; [Enter]; [Enter]; [Enter]; [Enter].

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

Вставьте в файл chronos.service текст из раздела Настройка Chronos.

sudo systemctl enable chronos && sudo systemctl start chronos

Система установлена и готова к работе.

Back to top