Установка серверной части (вне докера)

Установка и настройка PostgreSQL в CentOS 7

Добавляем репозиторий PostgreSQL в yum и устанавливаем все пакеты PostgreSQL 11:

sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

sudo yum install postgresql11 postgresql11-server postgresql11-contrib

Инициализируем базу данных PostgreSQL следующей командой:

sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

Добавляем СУБД в автозапуск и запускаем:

sudo systemctl enable postgresql-11
sudo systemctl start postgresql-11

Задать пароль для пользователя postgres:

su postgres

Запускаем интерпретатор командной строки PostgreSQL

psql

И устанавливаем пароль для пользователя postgres

\password postgres

В /var/lib/pgsql/11/data/postgresql.conf в параметре listen_addresses указываем IP, который СУБД будет слушать

В /var/lib/pgsql/11/data/pg_hba.conf указываем адреса с которых можно будет подключаться к СУБД. В качестве метода проверки указываем md5.

Перезагружаем СУБД для принятия изменений:

sudo systemctl restart postgresql-11

Суперпользователем postgres выполнить первоначальную инициализацию БД:

Создать пользователя user_robin

CREATE ROLE user_robin WITH
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
NOREPLICATION
CONNECTION LIMIT -1
PASSWORD 'xxxxxx';

Создать БД robin и назначить владельцем user_robin

CREATE DATABASE robin_2
WITH
OWNER = user_robin
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;

Создать пользователей схем

CREATE USER user_orch LOGIN PASSWORD 'Qwerty123';
CREATE USER user_quartz LOGIN PASSWORD 'Qwerty123';
CREATE USER user_rpm LOGIN PASSWORD 'Qwerty123';

Выполнить скрипт initial.sql с созданием схем и функций C

Внимание: в файле initial.sql содержатся скрипты указанные выше, их необходимо закомментировать или удалить.

Установка и настройка FlyWay 6.4.3

Скачиваем Flyway с официального сайта по ссылке: https://flywaydb.org/documentation/commandline/#download-and-installation

Сконфигурировать инструмент миграции FlyWay: conf/flyway.conf:

flyway.url=jdbc:postgresql://localhost:5432/robin_2
flyway.user=user_robin
flyway.password=Qwerty123
flyway.schemas=flyway
flyway.baselineVersion=1.0
flyway.baselineDescription=Base Migration

Далее распаковываем скрипты из архива sql.zip в каталог flyway/sql/

Выполнить:

flyway baseline

Запускаем миграцию базы данных в Flyway следующей командой:

flyway migrate

Статус работы Flyway и скриптов можно посмотреть командой

flyway info

Установка, настройка и запуск WildFly 18 в standalone режиме

Скачиваем издание Java EE Full & Web Distribution с официального сайта WildFly https://wildfly.org/downloads/ (приложения протестированы на версии wildfly-18.0.1.Final)

На сервере должна быть установлена JDK не ниже 8_202!

Распакуем скачанный дистрибутив в директорию /opt/wildfly/

# mkdir -p /opt/wildfly/
# unzip wildfly*.zip -d /opt/wildfly/

Активируем и обновляем пароль для учетной записи admin. Для этого запускаем $wildfly_home/bin/add-user.sh В интерактивном режиме пошагово выполняем следующие действия. 1. Выбираем пункт «a» и в поле username указываем admin. 2. Выбираем пункт «b», затем пункт «a».

  • При выводе сообщения - What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[PowerUser,BillingAdmin,] - нажимаем Enter
  • При выводе сообщения - Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? - отвечаем «no»

Из дистрибутива RMS 2.0 распаковываем архив rms2.zip в директорию $wildfly_home/modules/ В данном архиве находятся wildfly-модуль с файлами свойств приложений. В файлах свойств /rms2/main/properties/rms2.properties, /rms2/main/properties/quartz2.properties, /rms2/main/properties/rpm.properties прописываем свои параметры для подключения к RabbitMQ и LDAP.

Скачиваем драйвер PostgreSQL для JDBC по следующей ссылке https://jdbc.postgresql.org/download.html

Запускаем сервер приложений WildFly следующей командой:

$wildfly_home/bin/standalone.sh

Выполняем команду, указав путь до скачанного драйвера:

$wildfly_home/bin/jboss-cli.sh -c command="module add --name=org.postgresql --resources=/opt/postgresql-42.2.12.jar --dependencies=javax.api,javax.transaction.api"

Выполняем команду:

$wildfly_home/bin/jboss-cli.sh -c command="/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)"

Выполняем следующие команды, изменив адрес СУБД с localhost и значения --password на свои соответственно:

$wildfly_home/bin/jboss-cli.sh -c command="data-source add
    --name=OrchestratorDS2
    --jndi-name=java:jboss/datasources/OrchestratorDS2
    --driver-name=postgresql
    --connection-url=jdbc:postgresql://localhost/robin_2?currentSchema=orchestrator&ApplicationName=RobinManagementServer
    --user-name=user_orch
    --password=Qwerty123
    --use-java-context=true
    --min-pool-size=5
    --max-pool-size=30
    --pool-prefill=true
    --statistics-enabled=true"
$wildfly_home/bin/jboss-cli.sh -c command="data-source add
    --name=QuartzDS2
    --jndi-name=java:jboss/datasources/QuartzDS2
    --driver-name=postgresql --connection-url=jdbc:postgresql://localhost/robin_2?currentSchema=quartz&ApplicationName=RobinManagementServer --user-name=user_quartz
    --password=Qwerty123
    --use-java-context=true
    --min-pool-size=5
    --max-pool-size=30
    --pool-prefill=true
    --statistics-enabled=true"
$wildfly_home/bin/jboss-cli.sh -c command="data-source add
    --name=PackageManagerDS2
    --jndi-name=java:jboss/datasources/PackageManagerDS2
    --driver-name=postgresql --connection-url=jdbc:postgresql://localhost/robin_2?currentSchema=package_manager --user-name=user_rpm
    --password=Qwerty123
    --use-java-context=true
    --min-pool-size=5
    --max-pool-size=30
    --pool-prefill=true
    --statistics-enabled=true"

Меняем ip для интерфейсов:

$wildfly_home/bin/jboss-cli.sh -c command="/interface=management/:write-attribute(name=inet-address,value=${jboss.bind.address.management:0.0.0.0})"
$wildfly_home/bin/jboss-cli.sh -c command="/interface=public/:write-attribute(name=inet-address,value=${jboss.bind.address:0.0.0.0})"

Перезапускаем WildFly следующей командой:

$wildfly_home/bin/jboss-cli.sh --connect command=:reload

Настройка шифрования пакета аутентификации

Для того чтобы клиентское приложение RMC могло проходить аутентификацию при подключении к серверу RMS на машине пользователя должен быть установлен сертификат, используемый для шифрования пакета аутентификации. Чтобы решить проблему с его отсутствием на машине пользователя сервер Wildfly предоставляет точку входа, откуда скачивается данный сертификат. RMS расшифровывает полученный от клиента пакет приватным ключом.

1)Создать хранилище и сгенерировать пару ключей указав свои параметры

keytool -genkey -alias orchestrator-client -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 3650 -keystore orchestrator-client.jks -storepass Qwerty123 -keypass Qwerty123 -dname "cn=RMS, ou=Robin, o=ITBR, L=Moscow, ST=Moscow, C=RU"

2)Экспортировать публичный сертификат из хранилища

keytool -v -exportcert -alias orchestrator-client -keystore orchestrator-client.jks -rfc -file orchestrator-client.cer

3)Скопировать полученные файлы в директории сервера Wildfy

# mv orchestrator-client.cer $wildfly_home/certificate/client/
# mv orchestrator-client.jks $wildfly_home/certificate/server/

4)Создать Wildfly Handler - ендпоинт для скачивания сертификата. Настройка осуществляется командами jboss-cli

$wildfly_home/bin/jboss-cli.sh –connect

В интерактивном режиме JBoss CLI выполняем следующие команды:

/subsystem=undertow/configuration=handler/file=client-cert:add(path="${jboss.home.dir}/certificate/client", directory-listing="true")
/subsystem=undertow/server=default-server/host=default-host/location="/rms/client-cert":add(handler="client-cert")
quit

5)Проверить и исправить свойства приложения rms2.properties В конфигурационном файле $wildfly_home/modules/rms2/main/properties/rms2.properties в блоке настройки криптографии прописываются соответствующие сертификатам параметры.

Значения по умолчанию:

# Блок настроек сервиса криптографии
# Настройка позволяющие включать/выключать сервис.
cryptography.enable=true
# Путь к каталогу в файловой системе до keystore, в котором хранится пара закрытый и публичный ключ.
# Публичный ключ из пары используется клиентом RMC для шифрования данных пакета аутентификации.
crypto.keyStore.path=/opt/wildfly/certificate/server/
# Название keystore в котором хранится пара закрытый и публичный ключ.
# Публичный ключ из пары используется клиентом RMC для шифрования данных пакета аутентификации.
crypto.keyStore.name=orchestrator-client.jks
# Тип keystore (JKS или PKCS12). JKS по умолчанию.
crypto.keyStore.type=JKS
# Пароль от keystore.
crypto.keyStore.password=Qwerty123
# Алиас пары закрытый ключ/публичный сертификат, хранящихся в keystore.
crypto.keyPair.alias=orchestrator-client
# Пароль для пары закрытый ключ/публичный сертификат, хранящихся в keystore.
crypto.keyPair.password=Qwerty123

В crypto.keyStore.path указывается абсолютный путь

Настройка логирования Wildfly

Открыть файл $wildfly_home/standalone/configuration/standalone.xml

По умолчанию ротация логов происходит ежедневно без удаления старых логов:

<periodic-rotating-file-handler name="FILE">
    <formatter>
        <named-formatter name="PATTERN"/>
    </formatter>
    <file relative-to="jboss.server.log.dir" path="server.log"/>
    <suffix value=".yyyy-MM-dd"/>
</periodic-rotating-file-handler>

Необходимо заменить этот блок настроек следующим блоком (добавить две новые строки с тегами rotate-size и max-backup-index:

<periodic-size-rotating-file-handler name="FILE">
    <formatter>
        <named-formatter name="PATTERN"/>
    </formatter>
    <file relative-to="jboss.server.log.dir" path="server.log"/>
    <suffix value=".yyyy-MM-dd"/>
    <rotate-size value="300m"/>
    <max-backup-index value="256"/>
</periodic-size-rotating-file-handler>

В этом случае ротация будет происходить после того, как размер файла логов превысит 300 Мбайт, а максимальное число архивных логов равно 256, при достижении которого старые файлы логов будут удаляться. Месторасположение файлов логов в домашнем каталоге Wildfly: ./standalone/log.

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

<file relative-to="jboss.server.log.dir" path="server.log"/>

следующей строкой:

<file path="[Абсолютный путь к каталогу c логами]/server.log"/>

После всех изменений перезапустите Wildfly.

Развертывание приложений RMS 2.0

Загрузить приложения в Wildfly командой, указав путь до файлов rms2.war, rpm.war

$wildfly_home/bin/jboss-cli.sh --connect --command="deploy /opt/rms2.war --force"
$wildfly_home/bin/jboss-cli.sh --connect --command="deploy /opt/rpm.war --force"

Теперь можно подключить клиента RMC

Создание демона для Wildfly

Предполагается что домашняя директория сервера Wildfly - /opt/wildfly/. Если другая, то необходимо это учесть в скриптах и конфигурационных файлах

Создаем пользователя для запуска демона Wildfly

# useradd -r -d /opt/wildfly -s /sbin/nologin wildfly

Назначаем созданного пользователя владельцем директории Wildfly

# chown -RH wildfly:wildfly /opt/wildfly

Создаем сервис Systemd для WildFly, копируя пример из дистрибутива

# mkdir /etc/wildfly
# cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/

Содержимое wildfly.conf, если Wildfly запускается в standalone режиме

# The configuration you want to run
WILDFLY_CONFIG=standalone.xml

# The mode you want to run
WILDFLY_MODE=standalone

# The address to bind to
WILDFLY_BIND=0.0.0.0

Копируем сценарий launch.sh в /opt/wildfly/bin/. Этот файл необходим для запуска WildFly как службы.

# cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/

Копируем служебный модуль WildFly в каталог конфигурации Systemd

# cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /usr/lib/systemd/system/

Создаем каталог для хранения PID-файла для службы WildFly

# mkdir /var/run/wildfly/
# chown -R wildfly:wildfly /var/run/wildfly/

Запускаем службу WildFly

# systemctl enable wildfly
# systemctl start wildfly

Перезапустить Wildlfy можно командой

# systemctl restart wildfly