Установка сервера приложений
Contents
Установка сервера приложений#
Автономный режим используется когда нагрузка позволяет использовать один экземпляр сервера приложений.
Необходимое программное обеспечение под ОС Astra Linux / Debian#
postgresql-client (версия клиента должна совпадать с версией сервера)
jre 8 или jdk 8
ГосJava https://lab50.net/gosjava/
Axiom JDK (Liberica) https://axiomjdk.ru/pages/downloads/
Oracle Java https://java.com/ru/download/
другой дистрибутив на основе OpenJDK https://openjdk.java.net/
expect
htop
iotop
sysstat
ssh (клиент и сервер SSH)
mc (Midnight Commander)
tar
zip
unzip
cifs-utils
Если планируется работать с большим количеством прикрепленных файлов, необходимо подключить дополнительный раздел большого объема. Например сетевой ресурс samba/cifs
Пример подключения через конфигурационный файл /etc/fstab
# share global attach
//172.16.1.120/globalfiles /mnt/attach cifs _netdev,username=global@testdomain.local,password=123Global321,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
Установка#
Скачайте архив дистрибутива и прикладного решения с предоставленного ресурса (Предоставляется через контактное лицо, файлы globalserver.zip
и applib.zip
).
Подключитесь терминалом к серверу Global под пользователем root
Создайте временную директорию и загрузите файлы дистрибутива на сервер
mkdir -p /tmp/global
создайте пользователя и группу global
sudo groupadd global
sudo useradd -g global global
Распакуйте сервер приложений
sudo mkdir -p /opt/global/globalserver
sudo unzip /tmp/global/globalserver.zip -d /opt/global/globalserver
Распакуйте образ прикладного решения
sudo mkdir -p /opt/global/globalserver/application/applib /opt/global/globalserver/application/applibBin
sudo unzip /tmp/global/applib.zip -d /opt/global/globalserver/application/applib
Смените владельца
sudo chown -R global:global /opt/global/globalserver
Выдайте разрешение на запуск
sudo chmod ug+x /opt/global/globalserver/start.sh
sudo chmod ug+x /opt/global/globalserver/stop.sh
sudo chmod ug+x /opt/global/globalserver/globalscheduler.sh
Настройка сервисов#
Сервис нужен для работы системы global в качестве фонового процесса
Сервис global#
Для настройки сервиса нужно скопировать файл /opt/global/globalserver/admin/linux/global3.service.origin
в каталог /lib/systemd/system
и переименовать global3.service
sudo cp /opt/global/globalserver/admin/linux/global3.service.origin /lib/systemd/system/global3.service
или создать новый файл
sudo touch /usr/lib/systemd/system/global3.service
Содержимое
[Unit]
Description=Система Global
After=multi-user.target
[Service]
User=global
Group=global
AmbientCapabilities=CAP_NET_BIND_SERVICE
# Env Vars
Environment=JAVA_OPTS=-Dfile.encoding=UTF-8
Type=idle
WorkingDirectory=/opt/global/globalserver
ExecStart=/opt/global/globalserver/start.sh
ExecStop=/opt/global/globalserver/stop.sh
TimeoutStopSec=110
[Install]
WantedBy=multi-user.target
Разрешите автозагрузку сервиса
sudo systemctl daemon-reload
sudo systemctl enable global3
Сервис globalscheduler#
Для настройки сервиса нужно скопировать файл /opt/global/globalserver/admin/linux/scheduler/globalscheduler.service.origin
в каталог /lib/systemd/system
и переименовать globalscheduler.service
sudo cp /opt/global/globalserver/admin/linux/scheduler/globalscheduler.service.origin /lib/systemd/system/globalscheduler.service
или создать новый файл
sudo touch /usr/lib/systemd/system/globalscheduler.service
Содержимое
[Unit]
Description=Менеджер заданий Global SE Postgres
After=multi-user.target
[Service]
Type=idle
WorkingDirectory=/opt/global/globalserver
ExecStart=/opt/global/globalserver/globalscheduler.sh
TimeoutStopSec=110
[Install]
WantedBy=multi-user.target
Разрешите автозагрузку сервиса
sudo systemctl daemon-reload
sudo systemctl enable globalscheduler
Настройка сервера приложений#
Конфигурация Global#
Основной конфигурационный файл системы Global расположен в каталоге /opt/global/globalserver/application/config/global3.config.xml
Пропишите бд в основную конфигурацию
<databases>
<database alias="<ПсевдонимБД>" driver="org.postgresql.Driver" schema="PUBLIC"
url="jdbc:postgresql://<host>:5432/<ИмяБД>" connectionType="proxyShared" authenticationType="btk">
<users>
<user name="<ИмяПользователяБД>" password="<ПарольПользователяБД>"/>
</users>
<metaManager
mode="Xml"
defaultNamespace="ru.bitec.app.btk"
sbtName="main"
/>
<eclipseLink
persistenceUnitName="pgdev"
autoCommit="false"
/>
</database>
</databases>
<sbts>
<sbt name="main"
sourceMode="Jar"
jarFolder="/opt/global/globalserver/application/applib"
binaryFolder="/opt/global/globalserver/application/applibBin"
source="/opt/global/globalserver/application/applib"
dirWatcherEnabled="false"
>
<fileStorages>
<fileStorage name="Default"
path="/mnt/attach/"/>
</fileStorages>
</sbt>
</sbts>
Где:
<ПсевдонимБД> - сокращенное название организации, или доменное имя.
<host> - адрес сервера postgres
<ИмяБД> - имя базы данных, подготовленоой для работы Global System
<ИмяПользователяБД> - пользователь БД
<ПарольПользователяБД> - пароль пользователя БД
Конфигурация запуска#
Параметры запуска расположены в файле /opt/global/globalserver/default.sh
, их можно переопределить в файле /opt/global/globalserver/parameters.sh
#!/bin/bash
set -x
# Настройки портов
export JETTY_HTTP_PORT=8080
#память: 1000M - в мегабайтах 1G - в гигабайтах
export globalMemory=3G
Параметры запуска назначают порты для http сервера, максимальный размер оперативной памяти, а также порты для вспомогательных служб.
Конфигурация планировщика заданий#
Расположение основного файла конфигурации: /opt/global/globalserver/application/config/tools/scheduler/quartz.properties
Создайте файл конфигурации планировщика
sudo mkdir -p /opt/global/globalserver/application/config/tools/scheduler
sudo touch /opt/global/globalserver/application/config/tools/scheduler/quartz.properties
Вставьте содержимое
org.quartz.scheduler.instanceName = PostgresScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 500
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = quartzDS
org.quartz.jobStore.dontSetAutoCommitFalse=false
org.quartz.dataSource.quartzDS.driver = org.postgresql.Driver
org.quartz.dataSource.quartzDS.URL = jdbc:postgresql://<DBHOST>:5432/<DBNAME>?ApplicationName=Global-Scheduler
org.quartz.dataSource.quartzDS.user = <DBUSER>
org.quartz.dataSource.quartzDS.password = <DBPASS>
org.quartz.jobStore.tablePrefix=btk_qrtz_
org.terracotta.quartz.skipUpdateCheck=true
Где
<DBHOST> - адрес сервера postgres
<DBNAME> - имя БД
<DBUSER> - пользователь БД
<DBPASS> - пароль пользователя БД
Создайте файл конфигурации лога планировщика
sudo touch /opt/global/globalserver/application/config/tools/scheduler/logback.xml
Вставьте содержимое
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT_DEFAULT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} | [%-5level] | [%thread] | %logger | %msg%n</pattern>
</encoder>
</appender>
<appender name="FILEOUT_SESSION" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/jobscheduler.%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<!--<maxHistory>720</maxHistory>-->
<!--<totalSizeCap>3GB</totalSizeCap>-->
</rollingPolicy>
<encoder>
<pattern>%d{dd.MM.yyyy HH:mm:ss.SSS} | [%-5level] | [%thread] | %logger | %msg%n</pattern>
</encoder>
</appender>
<!--
Возможные значения параметра "level" в порядке приоритета важноости
OFF
ERROR
WARN
INFO
DEBUG
TRACE
ALL
-->
<root level="WARN">
<appender-ref ref="STDOUT_DEFAULT"/>
<appender-ref ref="FILEOUT_SESSION"/>
</root>
</configuration>
Конфигурация утилиты обновления#
В дистрибутив сервера приложений Global входит утилита обновления, которая обновляет сам сервер приложений или прикладной код образа проектного решения.
Для настройки утилиты обновления скопируйте и переименуйте поставочный конфигурационный файл /opt/global/globalserver/update/config.sh.origin
sudo cp /opt/global/globalserver/update/config.sh.origin /opt/global/globalserver/update/config.sh
#!/bin/sh
#
# Global Postgres update
# параметры утилиты обновления системы
#
#ssh сервера приложений
sSshHost="localhost"
#ssh порт
sSshPort="2299"
#ssh логин
sSshLogin="admin"
#ssh пароль
sSshPass="admin"
#наименование бд
sDbName="<ПсевдонимБД>"
#наименование SBT
sSbtName="main"
# имя сервиса сервера приложений
sGlobalService="global3"
# имя сервиса менеджера заданий
sSchedulerService="globalscheduler"
# временный каталог обновлений
sTmp="/opt/global/globalupdate"
Где:
sSshPort - порт внутреннего ssh сервера Global
sSshLogin - логин из global3.config.xml
в разделе security\users
sSshPass - пароль из global3.config.xml
в разделе security\users
sDbName - Псевдоним БД из global3.config.xml
в разделе databases\database:alias
sSbtName - Имя SBT из global3.config.xml
в разделе databases\database\metaManager:sbtName
sGlobalService - Имя сервиса сервера приложений
sSchedulerService - Имя сервиса менеджера заданий
Выдайте права на запуск
sudo find /opt/global/globalserver/update -type f -name '*.sh' -exec chmod a+x {} \;
Шифрование паролей в конфигурационных файлах#
В конфигурационных файлах системы пароли по умолчанию хранятся в открытом виде. Для шифрования паролей используется генератор шифрованных паролей, интегрированный в сервер приложений. Шифрованные пароли указываются в отдельных тэгах конфигурационных файлов. Пароли могут указываться в следующих файлах:
global3.config.xml, описан в разделе
Конфигурация Global
quartz.properties, описан в разделе
Конфигурация планировщика заданий
config.sh, описан в разделе
Конфигурация утилиты обновления
Общие принципы шифрования#
Для шифрования пароля необходимо запустить Global 3 Server c парамерами -encryptPassword
и -masterPassword
start.sh -encryptPassword password -masterPassword masterpassword
Где:
-encryptPassword
Пароль который необходимо зашифровать-masterPassword
Ключ шифрования, если не указан используется секретный ключ по умолчанию.
Результатом выполнения будет вывод в консоль строки, полученной в
результате шифрования пароля переданного параметром -encryptPassword
.
Использование шифрованных паролей#
Шифрованные пароли можно использовать во всех местах файла global3.config.xml где требуется указание пароля пользователя. Вместо тэга password
зашифрованный пароль необходимо указывать в тэге encryptedPassword
.
Пример:
<databases>
<database alias="<ПсевдонимБД>" driver="org.postgresql.Driver" schema="PUBLIC"
url="jdbc:postgresql://<host>:5432/<ИмяБД>" connectionType="proxyShared" authenticationType="btk">
<users>
<user name="<ИмяПользователяБД>" encryptedPassword="<ЗашифрованныйПарольПользователяБД>"/>
</users>
</database>
</databases>
Мастер-пароль может быть указан следующими способами:
Параметром запуска сервера приложений
-masterPassword
start.sh -masterPassword masterpassword
Параметром конфигурационного файла
global3.config.xml
с указанием файла, хранящего мастер пароль.
<security>
<masterPassword file="<ПутьКФайлуСПаролем>">
</security>
Шифрование паролей планировщика заданий#
В файле quartz.properties зашифрованный пароль может быть указан в отдельном параметре
ru.bitec.jobscheduler.quartz.dataSource.quartzDS.encryptedpassword=encryptedPassword
Ключ шифрования может быть указан следующими способами:
Параметром запуска планировщика
-masterPassword
Путь до файла с ключом шифрования указывается в конфигурационном файле в параметре
ru.bitec.jobscheduler.masterpass.path=/some/path/to/file
Примечание
Если в пути до файла используются символ \ (обратный слэш), то его требуется экранировать вторым слэшем. Пример пути:
ru.bitec.jobscheduler.masterpass.path=C:\\some\\path\\to\\file
Для шифрования пароля требуется запустить планировщик заданий c парамерами encryptPassword и masterPassword
globalscheduler.sh -encryptPassword password -masterPassword masterpassword
Где:
-encryptPassword
Пароль который необходимо зашифровать-masterPassword
Ключ шифрования, если не указан то используется стандартная логика определения мастер-пароля, так же как и при обычном запуске планировщика.
шифрование паролей утилиты обновления#
В файле config.sh хранится пароль доступа к ssh сервису сервера приложений в открытом виде и не может быть зашифрован. Если в этом файле не указывать параметры sSshLogin и sSshPass, то они будут запрошены у запускающего пользователя.
Ключи шифрования для токенов#
Закрытый ключ#
В основном файле конфигурации планировщика quartz.properties
можно указать путь до файла с закрытым ключом шифрования в параметре
ru.bitec.jobscheduler.privatekey.path = /some/path/to/file
Примечание
Если в пути до файла используются символ \ (обратный слеш), то его требуется экранировать вторым слешем. Пример пути:
ru.bitec.jobscheduler.privatekey.path=C:\\some\\path\\to\\file
Этот ключ будет использоваться для подписания токена авторизации для пользователя, который является исполнителем задачи планировщика.
Файл, до которого указан путь, должен содержать в себе только массив байт закрытого ключа, созданного по алгоритму RSA
, с размером 2048 бит, и закодированный в Base64
.
Пример содержимого файла с закрытым ключом:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAst2dVRFXdMJOSvpz0ryXtGaOmxMiPZiXC/5rCzX7Zl/kUnct16mqGbkqVeO+B04gOpOkSgyE1bnhpNbLxt4Rnywc6EAMKrF6pxaux592zi8QF0CjT2jWfjU+ps9HBo3WH9lRRRMCnNtf+11UH8aOSHS5KV5RkQvsyp6V8pXdorAcKqhmJcO3UHHhj+jM6yzP5O8eDVunwpb+/KeweQVKDRAJ/mkNXKyHQDPoAuB/0e8tQilzKMk4FspgjJPI0cyn2j88vNVKVIWES5Uq+7ENuzhbwGau78i2nEbw5Eh5MSZFsmGGcjBxtC2FKMDtQVfod+5qjr3YcAWt4NFkbF2rpwIDAQAB
Открытый ключ#
Открытый ключ используется для проверки подписанного закрытым ключом токена авторизации. Данный ключ хранится в системе Global, поэтому его задание необходимо производить на этапе Администрирование системы
.
Первичная инициализация БД#
Перед началом работы или установки поставочного дампа пустую базу данных системы требуется инициализировать. При инициализации БД будут созданы все необходимые схемы, таблицы, функции, а так же будут установленны первоначальные данные в таблицах.
Для инициализации выполните следующие действия:
Подключитесь терминалом ssh к серверу приложений. По умолчанию порт 2299, логин admin, пароль admin
ssh admin@localhost -p 2299
Где admin
- это имя пользователя из конфигурационного файла global3.config.xml, localhost
- адрес сервера Global
Подключитесь к системе в режиме sys
attach db Global as sys
Где Global
- это псевдоним БД из конфигурационного файла global3.config.xml
Выполните команду инициализации схемы
init schema
Выполните команду инициализации первоначальных данных
init data
Получение и установка лицензии#
Лицензирование системы привязано к базе данных. Уникальный код базы формируется с учетом аппаратно-программного окружения СУБД и привязано к конкретной БД. Любые изменения программно-аппаратного окружения (Тип процессора, материнская плата, мак-адрес сетевой карты, версия СУБД, имя базы данных и т.д.) приведут к потере лицензии.
Лицензия устанавливается при первой авторизации в системе. Позже лицензия может быть изменена или дополнена.
Для регистрации необходимо зайти в систему Global с помощью браузера
http://Адрес_хоста_системы_Global/
Для входа используются учетные данные:
Логин: admin
Пароль: admin
Примечание
Если используется поставочный дамп, контактное лицо передает логин и пароль для входа в систему.
После входа будет предложено зарегистрировать базу данных:
Система предложит сформировать файл запроса лицензии.
Полученный файл запроса нужно отправить контактному лицу в ООО «Бизнес-Технологии» и получить от него файл с лицензией.