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

Вынос сервиса API для Astra Linux

Обновлено: 24.12.25

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. Установите ключ репозитория

sudo wget -O - https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null

2.2. Добавьте репозиторий

sudo wget https://packages.microsoft.com/config/debian/10/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list && sudo apt update

2.3. Установите dotnet

sudo wget https://packages.microsoft.com/debian/10/prod/pool/main/d/dotnet-host/dotnet-host-7.0.3-x64.deb && sudo apt -y install ./dotnet-host*.deb && sudo rm ./dotnet-host*.deb

2.4. Установите остальные пакеты

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

sudo apt install supervisor aspnetcore-runtime-6.0 aspnetcore-targeting-pack-6.0 autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu dotnet-apphost-pack-6.0 dotnet-hostfxr-6.0 dotnet-runtime-6.0 dotnet-runtime-deps-6.0 dotnet-sdk-6.0 dotnet-targeting-pack-6.0 libbinutils libltdl-dev libodbc1 m4 netstandard-targeting-pack-6.0 odbcinst odbcinst1debian2 unixodbc-dev

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

sudo apt install supervisor aspnetcore-runtime-3.1 aspnetcore-targeting-pack-3.1 autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu dotnet-apphost-pack-3.1 dotnet-hostfxr-3.1 dotnet-runtime-3.1 dotnet-runtime-deps-3.1 dotnet-sdk-3.1 dotnet-targeting-pack-3.1 libbinutils libltdl-dev libodbc1 m4 netstandard-targeting-pack-2.1 odbcinst odbcinst1debian2 unixodbc-dev

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/supervisor /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=120(cddisk) gid=132(cddisk) группы=132(cddisk)

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

rm /etc/supervisor/conf.d/cddisk-api.conf

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

vi /etc/supervisor/conf.d/cddisk.conf

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

[group:cddisk]

programs=processing,filestorage,searchapi,registry,apisso

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

systemctl restart supervisor.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 /etc/postgresql/11/main/pg_hba.conf

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

host cddisk cddisk 192.168.25.234/32 md5

Где:

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

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

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

nano /etc/postgresql/11/main/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.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
3.13.2.1. Исправьте location/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 132 cddisk

Где:

  • 132 — id группы;
  • cddisk — имя группы.
Важно

В случае, если данный id уже занят, можно поменять командой groupmod -g <свободный_id> -o <имя_группы>.

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

useradd -u 120 -g 132 cddisk

Где:

  • 120 — id пользователя;
  • 132 — id группы;
  • cddisk — имя пользователя.
Важно

В случае, если данный id уже занят, можно поменять командой usermod -u <свободный_id> <пользователь>.

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

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

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

rm /etc/supervisor/conf.d/{cddisk-processing,cddisk-filestorage,cddisk-registry,cddisk-ssoapi,cddisk-searchapi}.conf

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

vi /etc/supervisor/conf.d/cddisk.conf

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

[group:cddisk]

programs=api

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

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

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

4.5.1. Хост с Registry

Важно

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

  • Укажите верный IP-адрес.
"serviceRegistry": {

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

},

4.5.2. Хост с БД

Важно

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

  • Укажите верный 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;",

4.5.3. Хост с RabbitMQ

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

"rabbitMq": {

  "host": "192.168.27.77",

  "username": "api",

  "password": "api",

  "timeout": 10

},
Важно

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

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

systemctl restart supervisor.service

supervisorctl restart all

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