Установка на 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, тогда будет использовано значение внутри квадратных скобок.
Пример ввода:
-
Код страны (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 по умолчанию в репозиториях доступен 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 на новую базу данных¶
К настоящему моменту должны быть настроены:
-
СУБД PostgreSQL
-
веб-сервис tessa.service
-
настроенный сертификат
Tip
Проверьте, что если вы указали другие логин/пароль для пользователя PostgreSQL, чем было указано в инструкции, то для этого раздела необходимо, чтобы в файлах app.json
из папок ~/build/linux/tools
и ~/tessa/web
были прописаны заданные вами логин/пароль этого пользователя. После изменения параметров перезапустите веб-сервис командой sudo systemctl restart tessa
Перейдите в папку “linux” внутри распакованного архива со сборкой.
cd ~/build/linux
Запустите скрипт установки:
./setup.sh
Скрипт предложит ввести:
-
Адрес подключения к веб-сервисам. Нажмите Enter, чтобы подтвердить значение по умолчанию
https://localhost
. -
Имя базы данных. Введите
tessa
и нажмите Enter, это приведёт к созданию новой базы данных с именемtessa
. -
Путь к файловой папке, где будет расположено содержимое файлов. Нажмите Enter, чтобы использовать путь по умолчанию
/home/tessa/tessa/files
, тогда в ходе установки будет создана папкаfiles
рядом с папкой веб-сервисаweb
и сервисаchronos
. -
Смещение часового пояса во временной зоне по умолчанию в минутах. Например, для часового пояса 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.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
не смог корректно инициализироваться.
В этом случае мы рекомендуем такую последовательность действий:
-
Перезапустите сервер, на котором запущен Chronos:
sudo reboot
-
После запуска остановите сервис Chronos:
sudo systemctl stop chronos
-
Если вы используете сервер с GUI, то закройте и тут же откройте окно терминала, с которого выполнялась установка системы.
-
Скопируйте тестовый документ
01.docx
в домашнюю папку и выполните следующую команду:unoconv -f pdf -o ~/01.pdf ~/01.docx
-
Конвертация должна быть выполнена достаточно быстро, после чего искомый файл
01.pdf
будет расположен в домашней папке. Откройте его, если содержимое тестового документа конвертировано с ошибками или файл не был создан, то обратитесь к документации вашего дистрибутива и к инструкции по командеunoconv
. -
Запустите сервис Chronos:
sudo systemctl start chronos
-
Теперь проверьте ещё раз конвертацию из веб-клиента. Она должна выполнится успешно спустя не более, чем 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
Система установлена и готова к работе.