RunaWfeWithPostgreSQLExample

Материал из RunaWFE
Версия от 11:35, 26 декабря 2020; WikiSysop (обсуждение | вклад) (1 версия импортирована)
Перейти к навигации Перейти к поиску

Пример настройки сервера RunaWFE для работы с двумя экземплярами СУБД PostgreSQL в ОС AltLinux p7

Версия 4.5.0

© 2015-2023, ООО "Процессные технологии"


В данном руководстве рассмотрен пример установки сервера RunaWFE 4.2 на ОС AltLinux p7. В качестве СУБД используется PostgreSQL. Кроме того, описана установка и настройка второго экземпляра СУБД PostgreSQL для возможности использования его в качестве дополнительного источника данных в задачах ботов.


Установка сервера RunaWFE

# apt-get install runawfe-server

Запуск сервера для проверки успешной установки

# service runawfe4-server start

После запуска, веб интерфейс RunaWFE должен быть доступен по ссылке вида http://ip:28080/wfe , где ip - это адрес сервера

По умолчанию RunaWFE использует СУБД H2.

Остановка сервера

# service runawfe4-server stop


Установка СУБД PostgreSQL 9.4

# apt-get install postgresql9.4-server

Создание нового кластера БД PostgreSQL

# /etc/init.d/postgresql initdb

По умолчанию кластер располагается в /var/lib/pgsql/data/

Запуск сервера PostgreSQL

# service postgresql start

Создание нового пользователя runa_dbuser (потребуется дважды ввести пароль для пользователя)

# createuser –U postgres –d –S –R –P runa_dbuser


Создание БД PostgreSQL для RunaWFE

Подключение к СУБД под пользователем postgres

$ psql –U postgres

Создание БД с именем "runa" для RunaWFE сервера

# CREATE DATABASE runa;

Назначение привилегий пользователю runa_dbuser на созданную базу runa

# GRANT ALL privileges ON DATABASE runa TO runa_dbuser;

Просмотр доступных БД

\l

Выход из psql

\q


Регистрация класса-драйвера в сервере приложений

Создайте модуль org.postgresql для jdbc драйвера следующей структуры:

/usr/share/jboss-ass/modules/
\
 - org
  \
   - postgresql
    \
     - main
      \
       - module.xml
       - postgresql-9.4-1201.jdbc4.jar

module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
 <resources>
  <resource-root path="postgresql-9.4-1201.jdbc4.jar"/>
 </resources>
 <dependencies>
  <module name="javax.api"/>
  <module name="javax.transaction.api"/>
 </dependencies>
</module>

Скачать драйвер можно следующим образом:

$ wget https://jdbc.postgresql.org/download/postgresql-9.4-1201.jdbc4.jar


Регистрации источника данных в сервере приложений

Конфигурации RunaWFE сервера в ОС AltLinux расположены в /usr/share/jboss-ass/configuration/

$ cd /usr/share/jboss-as/standalone/configuration/

Добавление секции источника данных и драйвера в standalone-runa.xml

 <datasources>
   <datasource jndi-name="java:jboss/datasources/PostgreDS" pool-name="PostgreDS">
     <connection-url>jdbc:postgresql://localhost:5432/runa</connection-url>
     <driver>postgresql</driver>
     <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
     <pool>
       <min-pool-size>10</min-pool-size>
       <max-pool-size>100</max-pool-size>
       <prefill>true</prefill>
     </pool>
     <security>
       <user-name>runa_dbuser</user-name>
       <password>runaWFE</password>
     </security>
     <statement>
       <prepared-statement-cache-size>32</prepared-statement-cache-size>
       <share-prepared-statements>true</share-prepared-statements>
     </statement>
   </datasource>
   <drivers>
     <driver name="postgresql" module="org.postgresql">
       <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
     </driver>
   </drivers>
 </datasources>


Привязка источника данных и установка соответствующего диалекта в database.properties

Создайте каталог /jboss-as/standalone/wfe.custom

$ mkdir wfe.custom

Создайте файл wfe.custom.database.properties со следующим содержимым, определяющим тип соединения с PostgreSQL сервером и привязки к источнику данных PostgreDS

hibernate.connection.datasource=jboss/datasources/PostgreDS
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

При первом запуске системы структура базы данных будет создана автоматически. Запустите сервер RunaWFE.

# service runawfe4-server start

Проверьте доступность веб интерфейса RunaWFE сервера.

Проверьте, что в БД runa были созданы таблицы. Для этого подключитесь к БД runa под пользователем runa_dbuser

# psql –U runa_dbuser runa

Отобразите таблицы

\d

В случае каких либо проблем, анализируйте логи расположенные в /usr/share/jboss-as/standalone/log/


Создание и настройка второго экземпляра СУБД PostgreSQL

Замечание. Второй экземпляр СУБД PostgreSQL можно использовать только в задачах ботов, иначе потребуется дополнительная настройка - распределенные транзакции (XA)

По умолчанию кластер баз данных создается в папке: var/lib/pgsql/data, для пользователя postgres с паролем postgres

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

$ initdb –D /home/user/pgsql/data2 –U user

Будет создан новый кластер в /home/user/pgsql/data2, владелец - пользователь user


Далее выполняется регистрация сервиса для второго экземпляра PostgreSQL


Если используется systemd

Создать service файл для второго экземпляра сервера PostgreSQL

# cp /lib/systemd/system/postgresql.service /lib/systemd/system/postgresql2.service

Отредактировать postgresql2.service следующим образом:

User=user
Group=user
Environment=PGDATA=/home/user/pgsql/data2/
Environment=PGPORT=5433

Postgresql2.service.png

Выполнить регистрацию service с помощью systemctl

# systemctl enable postgresql2
# systemctl start postgresql2
# systemctl status postgresql2


Если используется SysV

Скопировать скрипт /etc/init.d/postgres в /etc/init.d/postgres2

# cp /etc/init.d/postgres /etc/init.d/postgres2

Отредактировать скрипт /etc/init.d/postgres2 следующим образом

Postgresql2 1.png

Postgresql2 2.png

Postgresql2 3.png

Отредактировать /home/user/pgsql/data2/postgres.conf, добавив строку

port=5433

Postgresql2 4.png


Активировать сервис postgresql2

# chkconfig postgresql2 on


Запуск сервиса postgresql2 выполняется от пользователя user

$ service postgresql2 start


Создание новой БД, и подключение второго источника данных к RunaWFE

Подключение к PostgreSQL серверу (второй экземпляр, порт 5433)

# psql –U user –p 5433 –d postgres

Создание нового пользователя

# create user runa_dbuser;
# ALTER USER runa_dbuser WITH ENCRYPTED PASSWORD 'runaWFE';
# alter user runa_dbuser superuser createrole createdb;

После создания нового пользователя выполните рестарт сервиса

# service postgresql2 restart 

Создание новой БД:

# psql –U runa_dbuser–p 5433 –d postgres
# CREATE DATABASE MXD;


Подключение второго источника данных для RunaWFE

В /usr/share/jboss-as/standalone/configuration/standalone-runa.xml добавить второй datasource в секцию datasources

<datasource jndi-name="java:jboss/datasources/PostgreMXDDS" pool-name="PostgreMXDDS">
  <connection-url>jdbc:postgresql://localhost:5433/mxd</connection-url>
  <driver>postgresql</driver>
  <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
  <pool>
    <min-pool-size>1</min-pool-size>
    <max-pool-size>10</max-pool-size>
  </pool>
  <security>
    <user-name>runa_dbuser</user-name>
    <password>runaWFE</password>
  </security>
  <statement>
    <prepared-statement-cache-size>32</prepared-statement-cache-size>
    <share-prepared-statements>true</share-prepared-statements>
  </statement>
</datasource>


Открытие доступа к двум экземплярам PostgreSQL сервера по сети

В /var/lib/pgsql/data отредактировать postgresql.conf

listen_addresses = '*'


Postgresql listen.png


В /var/lib/pgsql/data отредактировать pga_hba.conf

host all all  0.0.0.0/0 md5


Postgresql pga.png

Таким образом первый экземпляр сервера PostgreSQL (порт 5432) будет доступен по сети с аутентификацией по паролю (метод md5).


Открытие доступа по сети для второго экземпляра PostgreSQL (порт 5433), выполняется аналогично

Отредактируйте /home/user/pgsql/data2/postgresql.conf

listen_addresses = '*'
port=5433

Postgresql2 listen.png

Отредактируйте /home/user/pgsql/data2/pga_hba.conf

host all all  0.0.0.0/0 md5

Таким образом второй экземпляр сервера PostgreSQL (порт 5433) будет доступен по сети с аутентификацией по паролю (метод md5).