В документе изложены способы развёртывания PC:

  • запуск в среде контейнеризации Docker
  • с помощью скрипта инсталляции под Linux
  • вручную под Windows.

Опциональные модули лицензируются отдельно. Для рационального потребления вычислительноых ресурсов перед установкой следует уточнить, какие компоненты входят в поставку.

Перед установкой

Подготовка БД

Поддерживаемые СУБД — Postgres, Oracle, MS SQL.

Перед установкой необходимо создать БД PCS и БД PCSS (опционально, только при использовании компонента Server Signer).

Создать пользователя, под которым PC будет подключаться к БД. Необходимые привилегии CRUD + Alter.

Структуру БД создавать не нужно. При первом подключении PC сам создаст все необходимые таблицы.

Под Docker

Образы

Модули PC размещены непосредственно в образах.

  • PCS: registry.paycontrol.org/pc/pc-server:6
  • PCE: registry.paycontrol.org/pc/pc-external:6
  • PCP: registry.paycontrol.org/pc/pc-pusher:6
  • PCCRT: registry.paycontrol.org/pc/pc-crt:6
  • PCSS: registry.paycontrol.org/pc/pc-server-signer:6

Переменные

  • SPRING_CONFIG_ADDITIONAL_LOCATION задаёт путь к файлу конфигурации для модуля. Пример значения: file:/opt/app/etc/application.yml.

PCS

  • SPRING_DATASOURCE_URL — Строка подключения к БД PCS. Пример для PostgreSQL: jdbc:postgresql://dbserver.loc:5432/db_pcs;
  • SPRING_DATASOURCE_USERNAME — Имя пользователя для подключения к БД PCS;
  • SPRING_DATASOURCE_PASSWORD — Пароль пользователя для подключения к БД PCS.

PCE

  • PC_EXTERNAL_SERVER_URL — адрес эндпоинта API-интерфейса модуля PCS, как правило оканчивается на pc-api/.

PCCRT

  • PC_CRT_PCSURL — адрес эндпоинта API-интерфейса модуля PCS, как правило оканчивается на pc-api/, доступный с рабочего места оператора АРМ РКС.

PCSS

  • SPRING_DATASOURCE_URL — Строка подключения к БД PCSS. Пример для PostgreSQL: jdbc:postgresql://dbserver.loc:5432/db_pcss;
  • SPRING_DATASOURCE_USERNAME — Имя пользователя для подключения к БД PCSS;
  • SPRING_DATASOURCE_PASSWORD — Пароль пользователя для подключения к БД PCSS.
  • PC_SIGNER_PCSURL — адрес эндпоинта API-интерфейса модуля PCS, как правило оканчивается на pc-api/.
  • PC_SIGNER_URL — адрес эндпоинта модуля PCSS, на который должен быть отправлен вызов для подтверждения транзакции Server Singer'ом. Как правило оканчивается на pc-server-signer-api/confirm_async/.

Пример docker-compose.yml

services:
  pcs:
    restart: unless-stopped
    image: registry.paycontrol.org/pc/pc-server:6
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_USERNAME=${PCS_DB_USER}
      - SPRING_DATASOURCE_PASSWORD=${PCS_DB_PASSWORD}
      - SPRING_DATASOURCE_URL=${PCS_DB_CONNECTION_URL}
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "wget -q -O - --no-verbose --tries=1 http://localhost:8080/pc-api/health_check | grep -q 'PC Server' || exit 1",
        ]
      interval: 5s
      timeout: 5s
      retries: 20

  pce:
    restart: unless-stopped
    image: registry.paycontrol.org/pc/pc-external:6
    ports:
      - "8081:8081"
    depends_on:
      pcs:
        condition: service_healthy
    environment:
      - PC_EXTERNAL_SERVER_URL=http://pcs:8080/pc-api/
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "wget -q -O - --no-verbose --tries=1 http://localhost:8081/pc-client-api/health_check | grep -q 'PC External' || exit 1",
        ]
      interval: 5s
      timeout: 5s
      retries: 20

  pcp:
    restart: unless-stopped
    image: registry.paycontrol.org/pc/pc-pusher:6
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "wget -q -O - --no-verbose --tries=1 http://localhost:8082/pc-pusher-api/health_check | grep -q 'PC Pusher' || exit 1",
        ]
      interval: 5s
      timeout: 5s
      retries: 20

  pccrt:
    restart: unless-stopped
    image: registry.paycontrol.org/pc/pc-crt:6
    ports:
      - "8084:8084"
    depends_on:
      pcs:
        condition: service_healthy
    environment:
      - PC_CRT_PCSURL=http://pcs_address_accessible_from_admin_workspace/pc-api
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "wget -q -O - --no-verbose --tries=1 http://localhost:8084/pc-crt/health_check | grep -q 'PC Conflicts Resolving Tool' || exit 1",
        ]
      interval: 5s
      timeout: 5s
      retries: 20

  pcss:
    restart: unless-stopped
    image: registry.paycontrol.org/pc/pc-server-signer:6
    environment:
      - PC_SIGNER_PCSURL=http://pcs:8080/pc-api/
      - PC_SIGNER_URL=http://pcss:8083/pc-server-signer-api/confirm_async/
      - SPRING_DATASOURCE_USERNAME=${PCSS_DB_USER}
      - SPRING_DATASOURCE_PASSWORD=${PCSS_DB_PASSWORD}
      - SPRING_DATASOURCE_URL=${PCSS_DB_CONNECTION_URL}
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "wget -q -O - --no-verbose --tries=1 http://localhost:8083/pc-server-signer-api/health_check | grep -q 'PC Server Signer' || exit 1",
        ]
      interval: 5s
      timeout: 5s
      retries: 20

Под ОС Linux

Для работы PC, перед инсталляцией, необходимо установить JRE версий 17 или 21.

PC версии 6 поставляется в виде отдельных дистрибутивов для каждого модуля. По-умолчанию, в качестве директории для инсталляции модулей используется путь /opt/pc/, где для каждого модуля будет создана отедельная директория.

У пользователя, осуществляющего установку должны быть права на выполнение действий с уровнем привилегий root, либо возможность использовать учётную запись root.

Для инсталляции модуля необходимо:

  • разархивировать дистрибутив модуля на время инсталляции;
  • внестри актуальные для инфраструктуры параметры конфигурации в файл application.yml;
  • при необходимости — скорректировать путь для инсталляции в файле install.conf задав желаемое значение переменной PC_INSTALL_DIR;
  • запустить инсталляцию с помощью ./install.sh.

В результате инсталляции будет:

  • создана директория, в которую будет произведена инсталляция;
  • скопированы файлы модуля PC;
  • скопирован конфигурационный файл;
  • создан и запущен сервиса;
  • включён автозапуск сервиса.

Под ОС Windows

Для работы PC, перед инсталляцией, необходимо установить JRE версий 17 или 21.

PC версии 6 поставляется в виде отдельных модулей и сопутствующих файлов. По умолчанию, в качестве директории для инсталляции модулей используется путь C:\pc\, где для каждого модуля нужно создать отдельную директорию.

Модули PC доступны по ссылке.

Программа NSSM для установки служб доступна по ссылке.

Для инсталляции модулей необходимо:

  • создать директории для модулей PC:
Название модуля Путь
PC Server C:\pc\pc-server
PC Pusher C:\pc\pc-pusher
PC External C:\pc\pc-external
PC Server Signer C:\pc\pc-server-signer
PC CRT C:\pc\pc-crt
  • разложить модули, их сопутствующие файлы и nssm.exe в соответствующие директории:
Название модуля Список файлов
PC Server pc-server-6.*.jar, application.yml, директория libs
PC Pusher pc-pusher-6.*.jar, application.yml (опционально)
PC External pc-external-6.*.jar, application.yml (опционально)
PC Server Signer pc-server-signer-6.*.jar, application.yml
PC CRT pc-crt-6.*.jar, application.yml (опционально)
  • при необходимости внести актуальные для инфраструктуры параметры конфигурации в файл application.yml (для PCS и PCSS необходимо указать реквизиты подключения к их базам данных);
  • установить службу для каждого модуля через nssm:
    • открыть командную строку от имени Администратора;
    • перейти в директорию модуля, например, cd C:\pc\pc-server;
    • выполнить команду для установки модуля - nssm.exe install modulename, где вместо modulename указать имя директории, в которой находится модуль, например, pc-server;
    • в открывшемся окне программы во вкладке Application прописать:
Название параметра Значение
в Path полный путь к java.exe
в Startup directory полный путь до директории с модулем
в Arguments -jar полный_путь_к_файлу_модуля, например, -jar C:\pc\pc-server\pc-server-6.0.1.jar
в Service Name имя службы, например, PC Server
  • во вкладке I/O прописать
Название параметра Значение
в Output полный путь для к файлу с логами, например, C:\pc\pc-pusher\pc-server.log
в Error полный путь для к файлу с логами, например, C:\pc\pc-pusher\pc-server.log
  • нажать Install service.

Описание управления службами доступно по ссылке.

После установки

Проверка доступности сервисов

При запросе на серверы по указанным ниже эндпоинтам будут выведены название модуля сервера PC, его версия и версия API.

  • PC Server — http://<IP или имя сервера PC Server>:8080/pc-api/health_check
  • PC External — http://<IP или имя сервера PC External>:8081/pc-client-api/health_check
  • PC Pusher — http://<IP или имя сервера PC Pusher>:8082/pc-pusher-api/health_check
  • PC CRT — http://<IP или имя сервера PC CRT>:8084/pc-crt/health_check
  • PC Server Signer — http://<IP или имя сервера PC Server Signer>:8083/pc-server-signer-api/health_check

PC API

По умолчанию адрес сервера PCS для взаимодействия с его API располагается по адресу http://<host>:8080/pc-api/.

Регистрация прикладной системы

После успешного запуска приложения PC Server до начала работы необходимо зарегистрировать прикладную систему.

Это действие выполняется путем отправки на PC Server HTTP POST содержимого файла запроса на регистрацию прикладной системы, полученного у поставщика решения.

Для отправки запроса можно использовать любое средство отправки HTTP-запросов, например, Postman, cURL и т.д.

Пример запроса для регистрации с помощью cURL

curl --location --request POST 'http://<IP или имя сервера PC Server>:<порт>/pc-api/' --header 'Content-Type: application/json' --data '{"request":"eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjEE9NoZ+W1lIjEE9NoZW1lIjEE9... ...IjEE9NoZW1lIjEE9PSJ9"}'

Результат регистрации

При успешной регистрации прикладной системы на сервере PCS, в теле ответа будет возвращена информация о прикладной системы и идентификатор прикладной системы.

В приведённом примере идентификатором зарегистрированной прикладной системы является e64a67c9-73e9-462c-9c27-2d0195a2bd23. В дальнейшем этот идентификатор понадобится при настройке прикладной системы на работу с сервером PC. Если значение идентификатора прикладной системы утеряно, свяжитесь с поставщиком или разработчиком PC для его уточнения.

Пример

    {
        "answer_type": "system_info",
        "answer": {
        "result": {
            "error_message": "Success",
            "error_code": 0
        },
        "system_info": {
            "billing_period": 365,
            "system_id": "e64a67c9-73e9-462c-9c27-2d0195a2bd23",
            "description": "Bank1 Payments",
            "report_template_path": "/opt/app/report.docx",
            "created_at": "2020-03-23 12:34:1.895",
            "pc_is_external_url": "https://bank1.example.com/pc-client-api/",
            "register_request": "eyJyZXF1ZXN0I...Xc9PSJFSSZEhTQUFKRXc9PSJEhTQUFKRXc9PSZXN0Ijp7InFyVJ9",
            "pc_is_internal_url": "http://localhost:8080/pc-pusher-api/",
            "is_deleted": false,
            "license_info": {
                "users_count": 20,
                "used": 0,
                "message": "LICENSE NOT FOUND! You are using unlicensed demo-only version of the service"
            },
            "billing_type": 3,
            "user_keys_expiration_period": 365,
            "name": "Bank1"
        }
    },
    "answer_version": 3
}

Включение формирования имитовставки (при необходимости)

Имитовставку при необходимости можно включить, тогда ее значение будет возвращаться в коллбэке и информации о подтверждённой транзакции в HEX-кодировке в поле gost_imit.

Создание временной директории для Linux

Необходимо создать "временную" директорию /var/opt/cprocsp/tmp с правом на запись в неё для пользователя, под которым запускается PCS.

Включение параметра для формирования имитовставки

С помощью запроса

Установка параметра производится с помощью POST-запроса на сервер PCS на эндпоинт http[s]://<HOSTNAME or IP>[:PORT]/pc-api/server_settings

Тело запроса:

{
"GOST_IMIT_PROVIDER": "CryptoPro JCP 2.0"
}

С помощью PC CRT

  • Откройте в браузере http[s]://<HOSTNAME or IP>[:PORT]/pc-crt/#
  • Выберите любой идентификатор системы и нажмите ОК
  • На открывшейся странице нажмите на кнопку настроек внизу слева
  • В пункте Криптопровайдер для формирования ГОСТ-имитовставки пропишите CryptoPro JCP 2.0
  • Нажмите Применить изменения внизу страницы

Корректировка (смена) адресов компонентов серверов PC (при необходимости)

Изменение адреса размещения компонента PCS

При перемещении компонента PCS на другой адрес, необходимо изменить адрес его размещения в параметрах конфигурации Прикладной системы и следующих компонентов PC:

  • PCE, параметр pc.external.server.url;
  • PCCRT, параметр pc.crt.pcs-url;
  • PCSS, параметр pc.signer.pcs-url.

Изменение адреса модуля PC Pusher

Установить адрес PCP можно с помощью запроса к API сервера PCS. Для этого необходимо отправить HTTP PATCH запрос с требуемым адресом PCP в качестве значения параметра pc_is_internal_url. Подробное описание PC API и эндпоинта для конфигурирования по ссылке. Пример тела запроса:

{
    "pc_is_internal_url":"http[s]://<HOSTNAME or IP>[:PORT]/pc-pusher-api/",
}

Также значение параметра можно установить через интерфейс АРМ РКС (при наличии).

Изменение внешнего адреса сервера PC (адреса для взаимодействия мобильного приложения)

Установить адрес PCP можно с помощью запроса к API сервера PCS. Для этого необходимо отправить HTTP PATCH запрос с требуемым адресом PCP в качестве значения параметра pc_is_external_url. Подробное описание PC API и эндпоинта для конфигурирования по ссылке. Пример тела запроса:

{
    "pc_is_external_url":"https://<Внешний IP или DNS-имя сервера PC>[:PORT]/pc-client-api/",
}

Также значение параметра можно установить через интерфейс АРМ РКС (при наличии).

Изменение адреса размещения компонента PCSS

Адрес размещения компонента PCSS задаётся в двух местах:

  • Адрес, используемый для уведомления компонента PCSS о том, что создан новый пользователь с атрибутом Server Signer и передачи его userid для персонализации, устанавливается в параметрах конфигурации сервера PCS запросом через API;
  • Адрес и непосредственно в настройках компонента PCSS в параметре pc.signer.url. Используется при регистрации пользователя для последующей отправки уведомлений о появлении транзакций для подтверждения на этот адрес.