Установка серверной части (вне докера)¶
Установка и настройка 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