Установка сервера приложений#

Автономный режим используется когда нагрузка позволяет использовать один экземпляр сервера приложений.

Необходимое программное обеспечение под ОС Astra Linux / Debian#

Если планируется работать с большим количеством прикрепленных файлов, необходимо подключить дополнительный раздел большого объема. Например сетевой ресурс 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

Примечание

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

После входа будет предложено зарегистрировать базу данных:

Регистрация БД

Система предложит сформировать файл запроса лицензии.
Полученный файл запроса нужно отправить контактному лицу в ООО «Бизнес-Технологии» и получить от него файл с лицензией.