RunaWfeWithPostgreSQLExample
Пример настройки сервера RunaWFE для работы с двумя экземплярами СУБД PostgreSQL в ОС AltLinux p7
Версия 4.6.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
Создать 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
Выполнить регистрацию service с помощью systemctl
# systemctl enable postgresql2 # systemctl start postgresql2 # systemctl status postgresql2
Скопировать скрипт /etc/init.d/postgres в /etc/init.d/postgres2
# cp /etc/init.d/postgres /etc/init.d/postgres2
Отредактировать скрипт /etc/init.d/postgres2 следующим образом
Отредактировать /home/user/pgsql/data2/postgres.conf, добавив строку
port=5433
Активировать сервис 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 = '*'
В /var/lib/pgsql/data отредактировать pga_hba.conf
host all all 0.0.0.0/0 md5
Таким образом первый экземпляр сервера PostgreSQL (порт 5432) будет доступен по сети с аутентификацией по паролю (метод md5).
Открытие доступа по сети для второго экземпляра PostgreSQL (порт 5433), выполняется аналогично
Отредактируйте /home/user/pgsql/data2/postgresql.conf
listen_addresses = '*' port=5433
Отредактируйте /home/user/pgsql/data2/pga_hba.conf
host all all 0.0.0.0/0 md5
Таким образом второй экземпляр сервера PostgreSQL (порт 5433) будет доступен по сети с аутентификацией по паролю (метод md5).