Установка серверной части (вне докера)
======================================
Установка и настройка 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``
.. code:: sql
CREATE ROLE user_robin WITH
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
NOREPLICATION
CONNECTION LIMIT -1
PASSWORD 'xxxxxx';
Создать БД robin и назначить владельцем ``user_robin``
.. code:: sql
CREATE DATABASE robin_2
WITH
OWNER = user_robin
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;
Создать пользователей схем
.. code:: sql
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``
По умолчанию ротация логов происходит ежедневно без удаления старых
логов:
.. code:: xml
Необходимо заменить этот блок настроек следующим блоком (добавить две
новые строки с тегами ``rotate-size`` и ``max-backup-index``:
.. code:: xml
В этом случае ротация будет происходить после того, как размер файла
логов превысит 300 Мбайт, а максимальное число архивных логов равно 256,
при достижении которого старые файлы логов будут удаляться.
Месторасположение файлов логов в домашнем каталоге Wildfly:
``./standalone/log``.
Если вы хотите изменить месторасположение файлов логов, то необходимо
заменить строку:
.. code:: xml
следующей строкой:
.. code:: xml
После всех изменений перезапустите 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