Руководство по установке ПО

1.Общие сведения о документе
1.2.Назначение документа


2.Краткое описание ПО Persona.CRM
3.Порядок установки
4.Требования к серверам
4.1.Оборудование сервера приложений
4.2.Оборудование сервера СУБД
4.3.Требования к операционным системам и СУБД


5.Настройка СУБД
5.1.Установка СУБД на ОС семейства Linux
5.1.1.Добавление репозитория
5.1.2.Установка PostgreSQL
5.1.3.Сброс пароля пользователя СУБД
5.2.Подготовка базы данных
5.2.1.Создание структуры базы данных
5.3.Установка продукта Persona.CRM
5.3.1.Установка дампа базы
5.3.2.Подготовка базы к запуску

6.Настройка сервера приложений
6.1.Установка Docker
6.2.Подготовка Docker
6.3.Установка Redis
6.4.Установка платформы GreenData

7.Запуск и остановка приложения

8.Проверка работоспособности

Общие сведения о документе

Назначение документа

В документе приведено краткое описание ПО Persona.CRM и комплекса технических настроек ПО серверов для обеспечения работы системы.

Краткое описание ПО Persona.CRM

Программное обеспечение Persona.CRM - это продукт, который разработан в результате модификации (настройки) платформы GreenData (https://reestr.digital.gov.ru/reestr/1765458/ ).

Система автоматизирует работу с b2b продажами.

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

Для организации работы системы Persona.CRM необходимо выполнить следующие шаги:
1. Настроить серверное окружение для сервера приложений и СУБД.
2. Установить серверные компоненты.
3. Установить платформу GreenData.
4. Установить ПО Persona.CRM.

Требования к серверам

Оборудование сервера приложений

Примерное расходование дискового пространства:
  • 10 GB для системы,
  • 30 GB для логов приложения,
  • 60 GB для хранения файлов docker/var.

Оборудование сервера СУБД

Требования к операционным системам и СУБД

Для установки платформы GreenData требуется ПО указанной версии или новее:
  • СУБД PostgreSQL 13,
  • одна из ОС:
Linux Debian 11;
Astra Linux 2.12;
РЭД ОС 7.3.

Настройка СУБД

Установка СУБД на ОС семейства Linux

Добавление репозитория

Создать файл pgdg.list :
sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.
 d/pgdg.list'
Добавить репозиторий в список разрешенных:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
Если при выполнении команды получено сообщение: “gnupg, gnupg2 and gnupg1 do not seem to be installed”, то следует выполнить команду:
apt install -y gnupg2
затем повторить предыдущую команду.
apt update

Установка PostgreSQL

Для установки выполнить команду:
apt install postgresql-13 -y

Сброс пароля пользователя СУБД

Для защиты необходимо сменить пароль пользователя postgres на уникальный и надежный:
su - postgres
psql -c "ALTER USER postgres WITH PASSWORD 'strong_password';"

Подготовка базы данных

Создание структуры базы данных

Подключиться к PostgreSQL:
sudo -u postgres psql
Создать пользователя и базу данных, выдать доступ:
postgres=# create user low_code_user with password 'strong_password_specify_on_your_own'; 
postgres=# create database low_code_db with owner low_code_user ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' 
LC_CTYPE 'en_US.UTF-8'; 
postgres=# grant all privileges on database low_code_db to low_code_user;
 \q

Установка продукта Persona.CRM

Установка дампа базы

Файл с дампом последней версии продукта загрузить на сервер СУБД, предварительно создав целевую папку:
user@developer-pc:~$ scp ~/low_code_db.dmp root@SERVER_DB:~/dumps
Запустить восстановление базы из дампа:
 pg_restore --host=localhost --username=low_code_user --format=custom --dbname=low_code_db --schema=public --no
owner low_code_db.dmp
Или подключиться к базе через TablePlus.exe и выполнить восстановление:
Процесс может занять до 10 минут.

Необходимо учесть, что после восстановления базы из дампа сбрасываются пароли для аккаунтов электронной почты, используемых в приложении для отправки и получения писем.

Подготовка базы к запуску

Выполнить сбор мусора и анализ базы данных, используя psql :
vacuum analyze;

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

Установка Docker

Обновить пакеты ОС:
 apt update
 apt full-upgrade -y
Установить необходимые пакеты:
 apt install ca-certificates curl gnupg2 lsb-release
Добавить ключ GPG для Docker:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Добавить репозиторий Docker и повторно обновить пакеты:
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.
 docker.com/linux/debian \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev
 /null
 apt update
Установить Docker и необходимые компоненты:
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Подготовка Docker

Необходимо использовать образ платформы GreenData последней версии. Авторизоваться в Docker Hub, используя учетные данные, полученные при покупке продукта, и скачать образ:
docker login -u <YOUR_USERNAME> -p <YOUR_PASSWORD> dockerhub.greendatasoft.ru
docker pull dockerhub.greendatasoft.ru/public/platform:latest

Установка Redis

Создать папку, перейти в нее, добавить конфигурационный файл:
 cd ~ 
mkdir redis 
cd redis/
nano docker-compose.yml
Наполнить файл содержимым:
# Copyright Broadcom, Inc. All Rights Reserved.
 # SPDX-License-Identifier: APACHE-2.0
 version: '2'
 services:
  redis01:
    image: docker.io/bitnami/redis:latest
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
    ports:
      - '6378:6379'
    volumes:
      - 'redis01_data:/bitnami/redis/data'
Создать контейнер:
 docker compose up -d docker-compose.yml
Если потребуется иметь несколько контейнеров (когда нужно развернуть несколько приложений на одном сервере), то использовать команду (уменьшая порт для каждого нового и меняя имя):
 docker run -p 6377:6379 --name redis02 -d redis redis-server --save 60 1 --loglevel warning

Установка платформы GreenData

Пользователь, под которым производится настройка и от имени которого будет работать приложение, не принципиален.
В файловой системе создать папку для приложения и перейти в нее:
 cd ~
 mkdir -p apps/lowcode
 cd apps/lowcode
Создать файлы конфигурации:
touch app.yml
touch secret_variable.csv
touch docker-compose.yml
В эту же папку поместить файл лицензии license.txt, полученный с дистрибутивом продукта.

Наполнить файлы содержимым.

app.yml:
server:
  # the port on which the application runs inside the docker container
  port: 8080
 spring:
  profiles:
    # active application profile
    active: prod
  datasource:
    # jdbc database connection string (PostgreSQL)
    url: jdbc:postgresql://localhost:5432/low_code_db
    # username to connect to the database
    username: low_code_user
    # user password to connect to the database
    password: <strong_password_specify_on_your_own>
  # dialect (PostgreSQL)
  jpa.properties.hibernate.dialect: org.hibernate.dialect.PostgreSQL9Dialect
 greendata-core:
  security:
    # place to store secret variables
    secretVariableFile: config/secret_variable.csv
  # the address where users will log in to the system. Needed to correctly construct http-links, e.g. when 
sending e-mails
  url: 'https://<your_address>'
  # optional if using https reverse proxy to make WebSocket work
  allowedOrigins: '*'  
  http:
    sessionStorage:
      type: REDIS
      redis:
        #   
        address: redis://localhost:6378
        #  ,   0
        #database: 0
        # ,   
        #password: password
  cache:
    remote:
      type: REDIS
      redis:
        #   
        address: redis://localhost:6378
        #  ,   0
        #database: 0
        # ,   
        #password: password
  sip:
    enabled: true
    url: https://sipgateway.greendata.store    
docker-compose.yml:
version: '3.9'
 services:
  lowcode:
    #       ,      
    restart: unless-stopped
    #  
    image: dockerhub.greendatasoft.ru/public/platform:latest
    environment:
      JAVA_OPTS: '-Xmx8g -XX:-UseCompressedClassPointers'
      RUN_ARGS: '--spring.config.additional-location=/app.yml'
    # ,    -  ( )
    volumes:
      - ./app.yml:/app.yml
      - ./license.txt:/license.txt
      - ./logs:/logs
      - ./secret_variable.csv:/secret_variable.csv
    #  
    container_name: lowcode
    #    
    network_mode: 'host'
    #  
    logging:
      # 
      driver: none

Запуск и остановка приложения

Создать контейнер для приложения и запустить его (без опции -d на экарне будут отображаться отладочные сообщения):
docker compose up -d
Для простого запуска, остановки или перезапуска приложения выполнить:
 docker start lowcode
 docker stop lowcode
 docker restart lowcode

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

 curl http://localhost:8080/auth/login
На экране появится html разметка страницы аутентификации в случае успешного запуска приложения