Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Вынос сервиса API для РЕД ОС

Обновлено: 24.09.26

0. Схема

0.1. Описание

Сервис API получает запросы пользователей. Долгие запросы отправляются в брокер очередей. Быстрые запросы к данным выполняются напрямую в БД или в сервисе Поиска. Также выполняется запросы imap к почтовому серверу.

1. Выполните установку Корпоративного портала 2024

Важно

При включенной службе firewalld необходимо выполнить настройку для http и https.

# Добавляем службы:

sudo firewall-cmd --permanent --zone=public --add-service=http

sudo firewall-cmd --permanent --zone=public --add-service=https

# Перезапускаем службу firewalld:

sudo firewall-cmd --reload

# Проверяем правила для зоны public:

sudo firewall-cmd --zone=public --list-all

Установить согласно инструкции ↗.

2. На ВМ с ролью API

2.1. Установите вспомогательные пакеты

Для версии 14752 и выше выполните установку следующих пакетов:

sudo dnf install dotnet-sdk-6.0 postgresql-odbc supervisor

Для версий ниже:

sudo dnf install dotnet-sdk-3.1 postgresql-odbc supervisor

3. На ВМ с Корпоративным сервером 2024

Важно

При включенной службе firewalld необходимо выполнить настройку.

# Откройте

# Доступ к БД

sudo firewall-cmd --permanent --zone=public --add-service=postgresql

# Доступ к очереди

sudo firewall-cmd --permanent --zone=public --add-service=amqp

# Доступ к сервису registry

sudo firewall-cmd --permanent --zone=public --add-port=7777/tcp

# Доступ к сервису search

sudo firewall-cmd --permanent --zone=public --add-port=2664/tcp

# Доступ к сервису хранения

sudo firewall-cmd --permanent --zone=public --add-port=11581/tcp

sudo firewall-cmd --permanent --zone=public --add-port=11580/tcp

# Перезапустите службу firewalld

sudo firewall-cmd --reload

# Проверьте правила для зоны public

sudo firewall-cmd --zone=public --list-all

3.1. Заархивируйте необходимые файлы и директории

tar czvf api.tar.gz --selinux /opt/r7-office/Api/ /var/log/r7-office/CDDisk/R7.Storage.Server.Api.Host /var/log/r7-office/CDDisk/Api /etc/supervisord.conf /etc/supervisord.d  /var/r7-office/filestorage_temp

3.2. Перенесите удобным Вам способом на ВМ с ролью Api

Например, через scp:

scp api.tar.gz ipВМapi:/root/

3.3. Узнайте uid и gid пользователя cddisk

id cddisk

Вывод:

id cddisk

uid=982(cddisk) gid=982(cddisk) группы=982(cddisk)

Сохраните эту информацию, она понадобится далее.

3.4. Удалите конфигурационный файл

rm /etc/supervisord.d/cddisk-api.ini

3.5. Отредактируйте файл

vi /etc/supervisord.d/cddisk.ini

Приведите к виду:

[group:cddisk]

programs=processing,filestorage,searchapi,registry,apisso

3.6. Перезапустите сервисы

systemctl restart supervisord.service

supervisorctl restart all

3.7. Открыть доступ к RabbitMQ

3.7.1. Отредактируйте файл

nano /etc/rabbitmq/rabbitmq.conf

Приведите в нём параметр к виду (если файла или их нет, то создайте):

listeners.tcp.default = 127.0.0.1:5672

listeners.tcp.other_ip = 192.168.27.77:5672

Где:

  • listeners.tcp.default — слушается интерфейс 127.0.0.1 на порту 5672
  • listeners.tcp.other_ip — слушается интерфейс 192.168.27.77 на порту 5672

3.7.2. Перезапустите сервис

systemctl restart rabbitmq-server
3.7.2.1. Проверьте, что все интерфейсы слушаются
netstat -tulpan | grep 5672

Вывод:

netstat -tulpan | grep 5672

tcp 0 0 127.0.0.1:5672 0.0.0.0:* LISTEN 15118/beam.smp

tcp 0 0 192.168.27.77:5672 0.0.0.0:* LISTEN 15118/beam.smp

3.7.3. Создайте хост и пользователя

3.7.3.1. Создайте пользователя для Процессинга
rabbitmqctl add_user api api

Где:

  • api — имя пользователя;
  • api — пароль пользователя.
3.7.3.2. Выдайте права пользователю
rabbitmqctl set_permissions -p / api ".*" ".*" ".*"
3.7.3.3. Создайте хост

С данного хоста будет разрешено подключение:

rabbitmqctl add_vhost 192.168.25.234

Где:

  • 192.168.25.234 — IP-адрес сервера с API. Если таких ВМ несколько, то выполните для каждого IP.
3.7.3.4. Дайте права для ВМ с Процессингом
rabbitmqctl set_permissions -p 192.168.25.234 api ".*" ".*" ".*"

Где:

  • 192.168.25.234 — IP-адрес сервера с API. Если таких ВМ несколько, то выполните для каждого IP-адреса;
  • api — имя созданного в п.3.7.3.1 пользователя.

3.8. Настроить доступ к БД

3.8.1. Отредактируйте файл pg_hba

vi /var/lib/pgsql/data/pg_hba.conf

Добавьте следующие строки:

host all cddisk 192.168.25.234/32 md5

Где:

  • cddisk — имя базы данных;
  • cddisk — имя пользователя, с доступом к БД cddisk;
  • 192.168.25.234/32 — IP, с которого разрешено подключение;
  • md5 — метод авторизации.
Важно

Если ВМ с API несколько, то добавьте для каждой строку.

3.8.2. Отредактируйте файл postgresql.conf

nano /var/lib/pgsql/data/postgresql.conf

Приведите следующие параметры:

#listen_addresses = 'localhost'

#port = 5432

К данному виду:

listen_addresses = 'localhost,192.168.27.77'

port = 5432

Где:

  • listen_addresses — на каких интерфейсах слушает PostgreSQL подключения;
  • port — порт, который слушает сервис PostgreSQL.

3.8.3. Перезапустите сервис

systemctl restart postgresql

3.8.4. Проверьте, что все интерфейсы слушаются

netstat -tulpan | grep 5432

Вывод:

netstat -tulpan | grep 5432

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1745934/postmaster  

tcp        0      0 192.168.27.77:5432      0.0.0.0:*               LISTEN      1745934/postmaster

3.9. Отредактируйте файл сервиса Registry

vi /opt/r7-office/Service.Registry/appsettings.json

Приведите параметры к виду:

  },

  "AllowedHosts": "*",

  "Clients": [

    {

      "id": "IFileStorageService",

      "host": "http://192.168.27.77:11580/"

    },

    {

      "id": "IFileStorageRestService",

      "host": "http://192.168.27.77:11580/"

    },

    {

      "id": "IFolderStorageRestService",

      "host": "http://192.168.27.77:11580/"

    },

    { "id": "ITcpFolderStorageService",

      "Address": "192.168.27.77",

      "Port": "11581"

    },

    { "id": "ITcpFileStorageService",

      "Address": "192.168.27.77",

      "Port": "11581"

    },

    {

      "id": "ISearchService",

      "host": "http://192.168.27.77:2664"

    }

  ],

  "ServiceRegistry": {

    "Host": "http://+:7777"

  }

Где:

  • 192.168.27.77 — IP-адрес ВМ, где находится сервис filestorage и сервис search. Если эти ВМ являются разными, то указать верные значения.

3.10. Отредактируйте appsettings файл сервиса Filestorage

vi /opt/r7-office/FileStorage/appsettings.json

Приведите параметры к виду:

  },

  "AllowedHosts": "*",

  "FileStorage": {

    "Host": "http://+:11580"

  }

3.11. Отредактируйте filestorage файл сервиса Filestorage

vi /opt/r7-office/FileStorage/filestorage.json

Приведите параметры к виду:

  "Connection": {

    "Tcp": {

      "Address": "0.0.0.0",

      "Port": 11581

    }

3.12. Перезапустите сервисы

supervisorctl restart all

3.13. Отредактируйте файлы Nginx

3.13.1. Добавьте upstream

В файле:

/etc/nginx/conf.d/cddisk.conf

Добавьте блок:

upstream backend_api {

        server 192.168.27.226:38033;

}

Где:

  • 192.168.27.226 — IP-адрес сервера с API;
  • 38033 — порт, который слушает сервис API.

Если серверов несколько, то продублируйте строки в данном блоке, указав IP-адрес второго сервера, например:

upstream backend_api {

        server 192.168.27.226:38033;

        server 192.168.27.171:38033;

}

3.13.2. Измените файлы сайтов

/etc/nginx/sites-available/admin

/etc/nginx/sites-available/calendar

/etc/nginx/sites-available/cddisk

/etc/nginx/sites-available/cdmail

/etc/nginx/sites-available/contacts

/etc/nginx/sites-available/forms

/etc/nginx/sites-available/pages

/etc/nginx/sites-available/projects
3.13.2.1. Исправьте упоминания адрес api

Измените везде где встречается localhost:38033 на backend_api:

        location /api {

            proxy_pass http://localhost:38033/api;

        }

Приведите к виду:

        location /api {

            proxy_pass http://backend_api/api;

        }

3.13.3. Проверьте конфигурацию Nginx

nginx -t

3.13.4. Перезапустите Nginx

systemctl restart nginx

4. На ВМ с API

Важно

При включенной службе firewalld необходимо выполнить настройку для API.

# Добавляем службы:

sudo firewall-cmd --permanent --zone=public --add-port=38033/tcp

# Перезапускаем службу firewalld:

sudo firewall-cmd --reload

# Проверяем правила для зоны public:

sudo firewall-cmd --zone=public --list-all

4.1. Создание группы и пользователя cddisk

Из п.3.3 Вы узнали uid и gid пользователя.

4.1.1. Создайте группу

groupadd -g 982 cddisk

Где:

  • 982 — id группы;
  • cddisk — имя группы.

4.1.2. Создайте пользователя

useradd -u 982 -g 982 cddisk

Где:

  • 982 — id пользователя;
  • 982 — id группы;
  • cddisk — имя пользователя.

4.2. Распакуйте архив

tar xzvf api.tar.gz --selinux -C /

4.3. Удалите лишние конфигурационные файлы

rm -f /etc/supervisord.d/{cddisk-processing,cddisk-filestorage,cddisk-registry,cddisk-ssoapi,cddisk-searchapi}.ini

4.4. Отредактируйте файл

vi /etc/supervisord.d/cddisk.ini

Приведите к виду:

[group:cddisk]

programs=api

4.5. Отредактируйте файл

vi /opt/r7-office/Api/appsettings.json

Измените следующие параметры:

4.5.1. Хост с Registry

Укажите верный IP-адрес:

  "serviceRegistry": {

    "address": "http://192.168.27.77:7777"

  },
Важно

В данном примере, это IP-адрес ВМ с Корпоративным сервером 2024, т.к. на нём и сервис Registry.

4.5.2. Хост с БД

Укажите верный IP-адрес, т.к. остальные данные не изменяли:

    "R7StorageServerUserActions": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;",

    "R7StorageServer": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;",
Важно

В данном примере, верный IP — IP-адрес ВМ с Корпоративным сервером 2024, т.к. СУБД установлена на нём.

4.5.3. Хост с RabbitMQ

Укажите верный IP-адрес, пользователя и пароль:

  "rabbitMq": {

    "host": "192.168.27.77",

    "username": "api",

    "password": "api",

    "timeout": 10

  },
Важно

В данном примере, верный IP — IP-адрес ВМ с Корпоративным сервером 2024, а учётные данные пользователя были созданы в п.3.7.3.

4.6. Подключитесь к БД и измените расположение локального хранилища

sudo -u postgres psql
\c cddisk
UPDATE public."StorageConfigurations" SET "Json"='{"Host":"http://192.168.27.77:11580/"}' WHERE "Name" = 'default';
\q

4.7. Перезапустите сервис

systemctl restart supervisord.service

supervisorctl restart all

5. Проверьте работу портала

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое