|
|
(не показано 35 промежуточных версий 3 участников) |
Строка 1: |
Строка 1: |
− | ==Подготовка БД==
| + | {{Уведомление|Актуальная документация по версии 5 располагается по адресу https://repo.paycontrol.org/index/safe-tech/#paycontrol}} |
− | * Создать базу данных и пользователя на сервере СУБД, где будет работать база данных PCS (pcs-user, pcs-pass, pcs-db, pcs-db-host). Предоставить права на доступ пользователю к БД.
| |
− | * Создать базу данных и пользователя на сервере СУБД, где будет работать база данных PCIS (pcis-user, pcis-pass, pcis-db, pcis-db-host). Предоставить права на доступ пользователю к БД.
| |
− | ==Установка Java==
| |
− | Установить последнюю версию JRE ветки 1.8 или 11
| |
− | ===Обновление Security===
| |
− | ====JRE 1.8====
| |
− | * Скачать архив по адресу http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
| |
− | * Распаковать и скопировать файлы по адресу ''<JRE>\lib\security\'', заменив старые версии.
| |
− | ====JRE 11====
| |
− | Замена файлов библиотек не требуется.
| |
− | | |
− | ==Установка Wildfly==
| |
− | * Скачать и распаковать актуальную версию WildFly Server. (При распаковке рекомендуется исключить кириллические символы в пути, а также пробелы.)
| |
− | https://wildfly.org/downloads/
| |
− | * Создать символьную ссылку, к примеру ''C:\wildfly'', на распакованную директорию. Пример команды:
| |
− | <syntaxhighlight lang="bat">mklink /D c:\wildfly c:\wildfly-18.0.1.Final\</syntaxhighlight>
| |
− | Далее по тексту, под <WF_PATH> имеется в виду адрес созданной символьной ссылки.
| |
− | ===Добавление JDBC-драйвера СУБД===
| |
− | ====MS SQL====
| |
− | * Скачать JDBC-драйвер с сайта Microsoft https://docs.microsoft.com/ru-ru/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
| |
− | * Создать директорию ''<WF_PATH>/modules/system/layers/base/com/microsoft/sqlserver/main/''
| |
− | * В директорию распаковать файлы и директории драйвера. Файлы драйвера (*.jar) должны располагаться непосредственно в директории ''main/''
| |
− | * Создать в этой же папке файл module.xml следующего содержания
| |
− | <syntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?>
| |
− | <module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver">
| |
− | <resources>
| |
− | <!-- JAR_PATH, for example, mssql-jdbc-6.2.1.jre8.jar -->
| |
− | <resource-root path="JAR_PATH"/>
| |
− | </resources>
| |
− | <dependencies>
| |
− | <module name="javax.api"/>
| |
− | <module name="javax.transaction.api"/>
| |
− | <module name="javax.xml.bind.api"/>
| |
− | </dependencies>
| |
− | </module>
| |
− | </syntaxhighlight>
| |
− | ===Настройка standalone.xml===
| |
− | В файл ''<WF_PATH>/standalone/configuration/standalone.xml'' внести следующие изменения
| |
− | * Добавить новый источник данных (секция ''<datasources>''):
| |
− | <syntaxhighlight lang="xml">
| |
− | <!--- На PayControl Server, заменить pcs-db-host, port, pcs-db-host, pcs-db, pcs-user, pcs-pass --->
| |
− | <datasource jta="true" jndi-name="java:jboss/datasources/PCServerDS" pool-name="PCServerDS" enabled="true" use-ccm="true">
| |
− | <connection-url>jdbc:sqlserver://pcs-db-host:port;databaseName=pcs-db</connection-url>
| |
− | <connection-property name="url">
| |
− | jdbc:sqlserver://pcs-db-host:port;databaseName=pcs-db
| |
− | </connection-property>
| |
− | <driver>mssql</driver>
| |
− | <security>
| |
− | <user-name>pcs-user</user-name>
| |
− | <password>pcs-pass</password>
| |
− | </security>
| |
− | <pool>
| |
− | <min-pool-size>5</min-pool-size>
| |
− | <max-pool-size>50</max-pool-size>
| |
− | <prefill>false</prefill>
| |
− | <use-strict-min>false</use-strict-min>
| |
− | <flush-strategy>FailingConnectionOnly</flush-strategy>
| |
− | </pool>
| |
− | <validation>
| |
− | <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
| |
− | </validation>
| |
− | </datasource>
| |
− | | |
− | <!--- На PayControl Pusher, заменить pcis-db-host, port, pcis-db-host, pcis-db, pcis-user, pcis-pass --->
| |
− | <datasource jta="true" jndi-name="java:jboss/datasources/PCPusherDS" pool-name="PCPusherDS" enabled="true" use-ccm="true">
| |
− | <connection-url>jdbc:sqlserver://pcis-db-host:port;databaseName=pcis-db</connection-url>
| |
− | <connection-property name="url">
| |
− | jdbc:sqlserver://pcis-db-host:port;databaseName=pcis-db
| |
− | </connection-property>
| |
− | <driver>mssql</driver>
| |
− | <security>
| |
− | <user-name>pcis-user</user-name>
| |
− | <password>pcis-pass</password>
| |
− | </security>
| |
− | <pool>
| |
− | <min-pool-size>5</min-pool-size>
| |
− | <max-pool-size>50</max-pool-size>
| |
− | <prefill>false</prefill>
| |
− | <use-strict-min>false</use-strict-min>
| |
− | <flush-strategy>FailingConnectionOnly</flush-strategy>
| |
− | </pool>
| |
− | <validation>
| |
− | <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
| |
− | </validation>
| |
− | </datasource>
| |
− | </syntaxhighlight>
| |
− | * Добавить новый драйвер (секция ''<datasources/drivers>'')
| |
− | <syntaxhighlight lang="xml">
| |
− | <driver name="mssql" module="com.microsoft.sqlserver">
| |
− | <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
| |
− | </driver>
| |
− | </syntaxhighlight>
| |
− | *Удалить источник данных по умолчанию и welcome-page
| |
− | При конфигурировании Wildfly можно (при переводе системы в промышленную эксплуатацию - рекомендуется) удалить пример источника данных и страницу-приветствие. Для этого в файле standalone.xml необходимо убрать (либо закомментировать) следующие объекты:
| |
− | <syntaxhighlight lang="xml">
| |
− | <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
| |
− | <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
| |
− | <driver>h2</driver>
| |
− | <security>
| |
− | <user-name>sa</user-name>
| |
− | <password>sa</password>
| |
− | </security>
| |
− | </datasource>
| |
− | </syntaxhighlight>
| |
− | <syntaxhighlight lang="xml">
| |
− | <driver name="h2" module="com.h2database.h2">
| |
− | <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
| |
− | </driver>
| |
− | </syntaxhighlight>
| |
− | <syntaxhighlight lang="xml">
| |
− | <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
| |
− | </syntaxhighlight>
| |
− | <syntaxhighlight lang="xml">
| |
− | <location name="/" handler="welcome-content"/>
| |
− | </syntaxhighlight>
| |
− | <syntaxhighlight lang="xml">
| |
− | <handlers>
| |
− | <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
| |
− | </handlers>
| |
− | </syntaxhighlight>
| |
− | ===Настройка standalone.conf.bat===
| |
− | В файл ''<WF_PATH>/bin/standalone.conf.bat'' внести следующие изменения:
| |
− | | |
− | * На всех серверах установить максимальный объем используемой памяти, равный ''ОбщийОбъёмОЗУ - 1536MB''
| |
− | Для этого в строке
| |
− | ''JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"'' поменять параметр ''Xmx''
| |
− | | |
− | * На сервере PayControl External необходимо установить адрес сервера PC Server (host и port заменить на реальные значения)
| |
− | <syntaxhighlight lang="bat">set "JAVA_OPTS=%JAVA_OPTS% -Dpc_url=http://<host>:<port>/pc-api/ -Dpc_locale=ru"</syntaxhighlight>
| |
− | | |
− | * При необходимости отладки сообщений от мобильных устройств на PayControl External, можно включить вывод отладочной информации
| |
− | <syntaxhighlight lang="bat">set "JAVA_OPTS=%JAVA_OPTS% -Dpc_logRequests=true"</syntaxhighlight>
| |
− | ==Запуск проекта==
| |
− | * Скопировать файл приложения сервера ''<WF_PATH>\standalone\deployments\'':
| |
− | ** на PC Server - файл ''pc-server-<VERSION>.ear''
| |
− | ** на PC Pusher - файл ''pc-pusher-<VERSION>.war''
| |
− | ** на PC External - файл ''pc-external-<VERSION>.war''
| |
− | Один сервер WildFly может запускать одно или несколько приложений сервера
| |
− | * Запустить <syntaxhighlight lang="bat"><WF_PATH>\bin\standalone.bat -b 0.0.0.0</syntaxhighlight> где -b 0.0.0.0 - позволяет подключаться к серверу используя любой его интерфейс (опция bind)
| |
− | * Дождаться старта WF, проверить, что нет ошибок запуска.
| |
− | ==Настройка автозапуска службы сервера==
| |
− | Скопировать папку<br>
| |
− | ''<WF_PATH>\docs\contrib\scripts\service\''<br>
| |
− | в папку<br>
| |
− | ''<WF_PATH>\bin\''<br>
| |
− | Выполнить
| |
− | <syntaxhighlight lang="bat"><WF_PATH>\bin\service\service.bat install /startup</syntaxhighlight>
| |
− | При запуске в качестве службы, возможно отклонение запросов. В таком случае необходимо установить параметры JAVA_OPTS в файле standalone.conf.bat или standalone.bat, если установленные в предыдущем файле параметры не применяются.
| |
− | <syntaxhighlight lang="bat">JAVA_OPTS=%JAVA_OPTS% -Djboss.bind.address=0.0.0.0</syntaxhighlight>
| |
− | ==URL-фильтрация при совмещении PC Pusher и PC External==
| |
− | При совмещении ролей PC Pusher и PC External на одном сервере необходимо исключить возможность выполнения запросов PC Pusher со стороны сети интернет. <br>
| |
− | Для этого необходимо со стороны сети интернет разрешить подключения только на конечную точку PC External. <br>
| |
− | Конечная точка PC External - ''<host>:<port>/pc-client-api/*''<br>
| |
− | Доступ к другим конечным точкам должен быть запрещен.
| |
− | | |
− | При этом доступ к PC Pusher со стороны PC Server должен сохраниться. <br>
| |
− | Конечная точка PC Pusher - ''<host>:<port>/pc-pusher-api/*''
| |
− | ==Создание индексов в базе данных==
| |
− | После первого запуска приложения, в базе данных будут созданы необходимые таблицы.
| |
− | | |
− | На продуктивной среде после этого необходимо создать индексы в базе данных PC Server.
| |
− | | |
− | Для этого выполните SQL скрипт:
| |
− | <syntaxhighlight lang="sql">
| |
− | create index pc_keyinfo1_idx on PC_KEYINFO (userID, expiration_date, is_deleted);
| |
− | create index pc_delayedkeyinfo1_idx on PC_DELAYEDKEYINFO (userID, is_deleted);
| |
− | create index pc_device1_idx on PC_DEVICE (userID, is_deleted);
| |
− | create index pc_transaction1_idx on PC_TRANSACTION (userID, status);
| |
− | create index pc_device2_idx on PC_DEVICE (userID);
| |
− | create index pc_keyinfo2_idx on PC_KEYINFO (userID);
| |
− | create index pc_transaction2_idx on PC_TRANSACTION (userID);
| |
− | create index pc_user1_idx on PC_USER (systemID);
| |
− | </syntaxhighlight>
| |
− | ==Корректировка типов данных для MS SQL==
| |
− | Java-приложение при создании таблиц БД неоптимально устанавливает тип для одного из полей для СУБД MS SQL.
| |
− | | |
− | Для его корректировки после того, как таблицы созданы, выполните запрос
| |
− | <syntaxhighlight lang="sql">
| |
− | ALTER TABLE PC_TRANSACTION ALTER COLUMN DATA_BINARY image;
| |
− | </syntaxhighlight>
| |
− | ==Регистрация системы==
| |
− | После успешного запуска приложения PC Server до начала работы необходимо зарегистрировать прикладную систему.
| |
− | | |
− | Это действие выполняется путем отправки на PC Server HTTP POST запроса, сформированного ST/Airome. Содержание запроса предоставляется дополнительно.
| |
− | | |
− | Для отправки запроса можно использовать любое средство отправки HTTP-запросов.
| |
− | ===Примеры===
| |
− | ====PowerShell====
| |
− | <syntaxhighlight lang="PowerShell">
| |
− | $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
| |
− | $headers.Add("Content-Type", "application/json")
| |
− | | |
− | $body = "{n "request`":"eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjEE9NoZ+W1lIjEE9NoZW... ...9NoZW1lIjEE+9NoZW1lIjEE9NoZW1lIjEE9PSJ9"`n}"
| |
− | | |
− | $response = Invoke-RestMethod 'https://dev.paycontrol.org/v5.0/pc-api/' -Method 'POST' -Headers $headers -Body $body
| |
− | $response | ConvertTo-Json
| |
− | </syntaxhighlight>
| |
− | ====cURL====
| |
− | <syntaxhighlight lang="bat">
| |
− | curl --location --request POST 'http://<host>:<port>/pc-api/' --header 'Content-Type: application/json' --data-raw '{"request":"eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjEE9NoZ+W1lIjEE9NoZW1lIjEE9... ...IjEE9NoZW1lIjEE9PSJ9"}'
| |
− | </syntaxhighlight>
| |
− | | |
− | ==Доступ к сервисам==
| |
− | Адреса конечных точек по умолчанию:
| |
− | * PC Server - http://<host>:8080/pc-api/
| |
− | * PC Pusher - http://<host>:8080/pc-pusher-api/
| |
− | * PC External - http://<host>:8080/pc-client-api/
| |
− | | |
− | ===Health Check===
| |
− | Адреса конечных точек health check:
| |
− | * PC Server - http://<host>:8080/pc-api/health_check
| |
− | * PC Pusher - http://<host>:8080/pc-pusher-api/health_check
| |
− | * PC External - http://<host>:8080/pc-client-api/health_check
| |
− | =Внесение аутентификационных данных для отправки push-уведомлений=
| |
− | {{Предупреждение|Для отличных от PostgreSQL СУБД измените метод работы с последовательностями}}
| |
− | | |
− | Для '''MSSQL''' необходимо вместо строк <code>nextval('pc_split_pusher_creds_seq'),</code> использовать строку <code>NEXT VALUE FOR pc_split_pusher_creds_seq,</code>.
| |
− | | |
− | Для '''Oracle''' необходимо вместо строк <code>nextval('pc_split_pusher_creds_seq'),</code> использовать строку <code>pc_split_pusher_creds_seq.NEXTVAL,</code>.
| |
− | ==В приложение PayControl==
| |
− | Для внесение аутентификационных данных для отправки push-уведомлений в приложение PayControl необходимо выполнить следующие запросы к БД PC Pusher, заменив значения %SYSTEMID% на корректное.
| |
− | | |
− | Обратите внимание, что знаки процента '''нужно удалить'''.
| |
− | После выполнения запросов необходимо [[Руководство_администратора_PayControl_5#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]] сервера PC Pusher.
| |
− | | |
− | Пример для СУБД PostgreSQL:
| |
− | <syntaxhighlight lang="sql">INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_creds_seq'),
| |
− | 'org.paycontrol.app',
| |
− | '{"google_api_key":"AAAAoZ7vyz4:APA91bFqLfNegQCs_GfHGFeOmS68PHWWSzWpeZaYKfnLul9iHufIQJiNIAjgAykeWrTxiDDs9qQzullXww3o5XR0VS9tlBEpuhTMlz4CyHdmN2EhntJBBUlSQa-8--Rw_UzDbKBCGCXk"}',
| |
− | 'Android',
| |
− | '%SYSTEMID%');
| |
− | | |
− | INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_creds_seq'),
| |
− | 'org.paycontrol.app',
| |
− | '{"apns_key_file":"C:\\wildfly\\safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}',
| |
− | 'iOS',
| |
− | '%SYSTEMID%');</syntaxhighlight>
| |
− | | |
− | ==В приложение PayConfirm==
| |
− | Для внесение аутентификационных данных для отправки push-уведомлений в приложение PayConfirm необходимо выполнить следующие запросы к БД PC Pusher, заменив значения %SYSTEMID% на корректное. После выполнения запросов необходимо [[Руководство_администратора_PayControl_5#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]] сервера PC Pusher.
| |
− | | |
− | Пример для СУБД PostgreSQL:
| |
− | <syntaxhighlight lang="sql">INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_creds_seq'),
| |
− | 'org.payconfirm.app',
| |
− | '{"google_api_key":"AAAA4H70m7M:APA91bFsaPiXXiIuRyj4h-xGZpyd0-I3B9F1udIIergxaK8uL9vPPvUQXOvPfau2w8E-xur_6TlTzmhb2JsO13hBCxVDrNybD6Rj8k4hZKXfs7tC5fnJuWmCIB3-O_4dLo0QHlhfSbGn"}',
| |
− | 'Android',
| |
− | '%SYSTEMID%');
| |
− | | |
− | INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_creds_seq'),
| |
− | 'org.payconfirm.app',
| |
− | '{"apns_key_file":"C:\\wildfly\\safetech-apns-JVBQX52N5Z.p8","apns_key_id":"QCC684AGC4","apns_team_id":"B98K5P3YHV"}',
| |
− | 'iOS',
| |
− | '%SYSTEMID%');</syntaxhighlight>
| |
− | | |
− | ==В другое мобильное приложение==
| |
− | Для внесение аутентификационных данных для отправки push-уведомлений необходимо выполнить запрос к БД PC Pusher, заменив значение %SYSTEMID%, %appid%, %путь к файлу ключа%, %apns_key_id%, %apns_team_id%, %google_api_key% на корректные (эти данные, за исключением %SYSTEMID%, можно получить от разработчика мобильного приложения):
| |
− | <syntaxhighlight lang="sql">
| |
− | INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | is_default,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_credentials_id_seq'),
| |
− | '%appid%',
| |
− | '{"google_api_key":"%google_api_key%"}',
| |
− | 1,
| |
− | 'Android',
| |
− | '%SYSTEMID%');
| |
− | | |
− | INSERT INTO pc_split_pusher_credentials (
| |
− | id,
| |
− | appid,
| |
− | credentials,
| |
− | is_default,
| |
− | os,
| |
− | systemid)
| |
− | VALUES (
| |
− | nextval('pc_split_pusher_credentials_id_seq'),
| |
− | '%appid%',
| |
− | '{"apns_key_file":"%путь к файлу ключа%","apns_key_id":"%apns_key_id%","apns_team_id":"%apns_team_id%"}',
| |
− | 1,
| |
− | 'iOS',
| |
− | '%SYSTEMID%');
| |
− | | |
− | commit;
| |
− | </syntaxhighlight>
| |
− | | |
− | =Корректировка (смена) адресов компонентов серверов PC (при необходимости)=
| |
− | {{Предупреждение|Не рекомендуется дополнительно указывать номер порта, в случаях, если для HTTP используется порт 80, или для HTTPS используется порт 443}}
| |
− | ==Учёт изменения адреса сервера PC Server==
| |
− | Для учёта изменения адреса PCS необходимо произвести изменения в настройках PCE. В файле /opt/wildfly/bin/standalone.conf, в следующей строке, указав правильный адрес и при необходимости порт сервера PC Server, а также уточнив протокол подключения (HTTP/HTTPS):
| |
− | <syntaxhighlight lang="bash">
| |
− | JAVA_OPTS="$JAVA_OPTS -Dpc_url=http[s]://<IP или DNS-имя>[:PORT]/pc-api/ -Duser.language=ru -Dpc_locale=ru"
| |
− | </syntaxhighlight>
| |
− | | |
− | ==Учёт изменения адреса сервера PC Pusher==
| |
− | Для учёта изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:
| |
− | <syntaxhighlight lang="sql">update pc_system set pc_is_internal_url = 'http[s]://<IP или DNS-имя>[:PORT]/pc-pusher-api/' where systemid='<SYSTEMID>';</syntaxhighlight>
| |
− | ==Учёт изменения внешнего адреса сервера PC External==
| |
− | {{Предупреждение|Если система была переведена в промышленную эксплуатацию, при смене адреса для доступа мобильных устройств, не рекомендуется выводить из действия предыдущий адрес на протяжении всего срока действия выпущенных ключей пользователя. Иначе мобильное приложение потеряет доступ к серверу PC и для восстановления будет необходимо перевыпустить ключ и заново добавить его в приложение пользователя.}}
| |
− | Для учёта изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:
| |
− | <syntaxhighlight lang="sql">update pc_system set pc_is_external_url = 'http[s]://<IP или DNS-имя>[:PORT]/pc-client-api/' where systemid='<SYSTEMID>';</syntaxhighlight>
| |