Настройка ПО SEMNEXT

В среде развертывания Medium и Large рекомендуем развернуть СУБД на отдельном сервер, в среде развертывания POC и Small использовать отдельный диск.

Например, диск /dev/sdb1 c каталогом '/pgstore', для этого:

Создаем каталог

mkdir /pgstore

определяем UUID разеделов

blkid

в файле

/etc/fstab 

добавить необходимый раздел

UUID=4b2a649f-9668-4637-9d2c-c1d5eaf4fad1 /pgstore               ext4    errors=remount-ro 0       1

выполнить

mount /pgstore 

Создание кластера postgreSQL в локали ru_RU.UTF-8 Если в системе локали нету, то

locale-gen ru_RU.UTF-8

При этом локаль должна быть установлена

dpkg-reconfigure locales

Включаем локаль в консоли

export LC_ALL=ru_RU.UTF-8

Перейти под пользователя postgres:

sudo su - postgres

Удаляем старый кластер базы данных, если он существует:

pg_dropcluster --stop 11(версия кластера) main(имя кластера, получить можно pg_lsclusters)

Остановить процесс postgresql и выйти из-под postgres:

sudo systemctl stop postgresql@11-main
logout

изменить владельца каталога:

sudo chown -R postgres:postgres /pgstore

Перейти под пользователя postgres:

sudo su - postgres  

Создаем новый кластер

pg_createcluster -d /pgstore/11 --locale ru_RU.UTF-8 --start 11 main

Выйти из-под postgres и запустить службу СУБД:

logout
sudo systemctl daemon-reload
sudo systemctl start postgresql@11-main

(В случае необходимости) в файле /etc/postgresql/11/main/postgresql.conf предоставить внешний доступ к Postgresql, например:

listen_addresses = '*' 

или указать ip-адрес/адреса сервера БД.

(В случае необходимости) в конфигурационном файле

/etc/postgresql/11/main/pg_hba.conf

разрешить доступ к БД с сервера приложений и хранилища MongoDB, добавив следующие строчки:

host    all             all             IP-сервера приложений/маска         md5
host    all             all             IP-хранилища Моngo DB/маска         md5

Пользователем postgres в psql выполнить:

CREATE DATABASE SEMDB WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';
ALTER DATABASE SEMDB OWNER TO postgres;

В конфигурационном файле postgresql.conf для параметра max_prepared_transactions установить значение равным 200, значение по умолчанию для ПО SEMNEXT

max_prepared_transactions = 200         # zero disables the feature

Скопировать JDBC-драйвер ppostgresql-9.4.1212.jre6.jar в директорию /opt/wildfly/standalone/deployments
Перезапустить сервер приложений

service wildfly restart

Зайти в административную консоль

http://ip_сервера_приложений:9990/

перейти в Configuration→Subsystem→Datasources→Non XA нажать Add выбираем «PostgreSQL Datasource», задать:

  Name: DefaultDataSource
  JNDI name: java:/jdbc/SEM 

перейти на вкладку Detected Drivers и выбираем JDBS-драйвер postgresql-9.4.1212.jre6.jar, настроить параметры в конфигурационном файле /opt/wildfly/standalone/configuration/standalone-full.xml.
Все ниже описанные настройки производятся в секциях конфигурационного файла standalone-full.xml

В конфигурационном файле /opt/wildfly/standalone/configuration/standalone-full.xml Найти секцию <subsystem xmlns=«urn:jboss:domain:datasources:4.0»>. Настроить параметры для связи с базой данных:

  
  <subsystem xmlns="urn:jboss:domain:datasources:4.0">
            <datasources>
                    <xa-datasource jndi-name="java:/jdbc/SEM" pool-name="DefaultDataSource" enabled="true" use-ccm="true">
                    <xa-datasource-property name="ServerName">
                        ИМЯ_СЕРВЕРА_БД
                    </xa-datasource-property>
                    <xa-datasource-property name="PortNumber">
                        ПОРТ_СЕРВЕРА_БД_ПО_УМОЛЧАНИЮ_5433
                    </xa-datasource-property>
                    <xa-datasource-property name="DatabaseName">
                        ИМЯ_БД_РЕКОМЕНДУЕМ_SEMDB//
                    </xa-datasource-property>
                    <xa-datasource-property name="currentSchema">
                        ИМЯ_СХЕМЫ_РЕКОМЕНДУЕМ_sem
                    </xa-datasource-property>
                    <driver>postgres</driver>
                    <xa-pool>
                        <min-pool-size>10</min-pool-size>
                        <max-pool-size>20</max-pool-size>
                        <prefill>true</prefill>
                    </xa-pool>
                    <security>
                        <user-name>ИМЯ_ПОЛЬЗОВАТЕЛЯ_БД_SEM_NEXT_ПО_УМОЛЧАНИЮ_postgres</user-name>
                        <password>ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_БД_SEM_NEXT</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
                        <background-validation>true</background-validation>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
                    </validation>
                </xa-datasource>
                <drivers>
                        <driver name="postgres" module="org.postgres">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>

Переходим в секцию <subsystem xmlns=«urn:jboss:domain:messaging-activemq:1.0»> И добавляем очереди:

  <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
  <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
  <jms-queue name="Measure" entries="java:/jndi/Measure"/>
  <jms-queue name="Event" entries="java:/jndi/Event"/>
  <jms-queue name="AdminLog" entries="java:/jndi/AdminLog"/>
  <jms-queue name="Command" entries="java:/jndi/Command"/>
  <jms-queue name="CalcParam" entries="java:/jndi/CalcParam"/>
  <jms-queue name="Collector" entries="java:/jndi/Collector"/>
  <jms-queue name="ParamControl" entries="java:/jndi/ParamControl"/>
  <jms-queue name="Rule" entries="java:/jndi/Rule"/>
  <jms-queue name="RuleExec" entries="java:/jndi/RuleExec"/>
  <jms-queue name="SetValue" entries="java:/jndi/SetValue"/>
  <jms-queue name="Notify" entries="java:/jndi/Notify"/>
  <jms-queue name="EventNotify" entries="java:/jndi/EventNotify"/>
  <jms-queue name="EventImport" entries="java:/jndi/EventImport"/>
  <jms-topic name="EventExport" entries="java:/jndi/EventExport"/>
  <jms-topic name="ParamChange" entries="java:/jndi/ParamChange"/>

Так же очереди можно добавить через административную консоль.

Переходим в секцию <subsystem xmlns=«urn:jboss:domain:undertow:3.1»> находим <servlet-container name=«default»> и меняем на:

  <servlet-container name="default" default-encoding="UTF-8" use-listener-encoding="true">

Переходим в секцию <subsystem xmlns=«urn:jboss:domain:undertow:3.1»> Настраиваем параметры статистики:

  <subsystem xmlns="urn:jboss:domain:undertow:3.1">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
        <host name="default-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <location name="/files" handler="files"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
        </host>
       </server>
       <servlet-container name="default" default-encoding="UTF-8">
           <jsp-config/>
           <websockets/>
       </servlet-container>
       <handlers>
           <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
           <file name="files" path="/files"/>
       </handlers>
       <filters>
            <response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
            <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
       </filters>
  </subsystem>

В зависимости от MQTT сервера, название настроек может иметь другие названия. Ниже приведены названия параметров для EMQ. Установить размер пакета MQTT не меньше 2 Мб.

# Maximum MQTT packet size allowed. Value: Bytes Default: 64K
mqtt.max_packet_size = 2MB

Назначить порт администрирования EMQ

## The IP Address and Port that the EMQ HTTP API will bind.
## Value: IP:Port | Port. Default: 0.0.0.0:8080
listener.api.mgmt = 0.0.0.0:8081

Переходим в секцию <subsystem xmlns=«urn:jboss:domain:mail:2.0»> Настраиваем параметры почты:

  <mail-session name="default" jndi-name="java:jboss/mail/Default">
     <smtp-server outbound-socket-binding-ref="mail-smtp"/>
  </mail-session>
  <mail-session name="semona-smtp" jndi-name="java:jboss/mail/semona-smtp" from="ПОЧТОВЫЙ_ЯЩИК_СЛУЖБЫ_ПОДДЕРЖКИ">
     <smtp-server outbound-socket-binding-ref="semona-smtp" username="ПОЧТОВЫЙ_ЯЩИК_СЛУЖБЫ_ПОДДЕРЖКИ" password="ПАРОЛЬ_УЗ_ПОЧТОВОГО_ЯЩИКА_СЛУЖБЫ_ПОДДЕРЖКИ"/>
  </mail-session>

Переходим в секцию <socket-binding-group name=«standard-sockets» default-interface=«public» port-offset=«${jboss.socket.binding.port-offset:0}»>

Настраиваем параметры почтового сервера:

  <outbound-socket-binding name="semona-smtp" source-port="0" fixed-source-port="false">
            <remote-destination host="ИМЯ_ПОЧТОВОГО_СЕРВЕРА" port="ПОРТ_ПОЧТОВОГО_СЕРВЕРА_ПО_УМОЛЧАНИЮ_25"/>
        </outbound-socket-binding>

Переходим в секцию <subsystem xmlns=«urn:jboss:domain:logging:3.0»> Настраиваем логер:

 
 <size-rotating-file-handler name="FILE" autoflush="true">
      <formatter>
          <named-formatter name="PATTERN"/>
      </formatter>
      <file relative-to="jboss.server.log.dir" path="server.log"/>
      <rotate-size value="500m"/>
      <max-backup-index value="5"/>
      <append value="true"/>
      <suffix value=""/>
  </size-rotating-file-handler>

На этом настройка серверного приложения завершена

Установка приложений

Осталось установить приложения на сервер J2EE. Копируем приложения semona.ear, sem365angular.war в директорию развертывания /opt/wildfly/standalone/deployments. Перезапускаем сервер приложений

  service wildfly restart 

Проверяем что работает:

curl -X POST "http://localhost:8080/sem-restservices/auth/login?username=<username>&password=<password>" 

Проверяем через браузер:

  http://ip_cервера_приложений:9990
  http://ip_сервера_приложений:8080/semux/