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

Установка Middle архитектуры Корпоративного сервера 2024 на ОС Астра Линукс 1.7/1.8 (для высоконагруженных систем)

Обновлено: 27.10.26

Инструкция актуальна для версий продукта: 2025.4.6.16449 – 2026.4.14.17766

Обратите внимание

Для установки потребуется wildcard-сертификат, содержащий полную цепочку (fullchain).

Например:

-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate: your_domain_name.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate: DigiCertCA.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate: TrustedRoot.crt)
-----END CERTIFICATE-----

Где:

  • Основной сертификат — your_domain_name.crt.
  • Промежуточный сертификат — DigiCertCA.crt.
  • Корневой сертификат — TrustedRoot.crt.

0. Технические требования

  • 6 Виртуальных машин (без slave и файлового сервера — 4);
  • Для сервера NFS дополнительно 3 диска (для Р7 Диск, для Сервера документов, для Сервера поиска);
  • ТХ Машин, для тестирования, возможно использовать:
  • от 2 CPU;
  • от 4 ГБ RAM (для ролей Поиска и Р7 Диска рекомендуем использовать от 8 ГБ);
  • от 20 ГБ свободного пространства на диске;
  • Более конкретные данные рассчитываются по обращению в ТП;
  • Отключение или перевод SELinux в режим permissive для корректной работы сервисов.
Обратите внимание

Выбор версии СУБД и ОС для серверов баз данных зависит от версии Корпоративного сервера.

Требуемая версия PostgreSQL зависит от установленной версии Корпоративного сервера. Ограничения по версии ОС относятся только к серверам БД (сам Р7 Диск ставится на любую поддерживаемую систему):

  • Для Корпоративного сервера версии 2026.4.14.17766 и выше: требуется PostgreSQL 13 и новее. Серверы баз данных необходимо разворачивать на ОС Astra Linux 1.8.1 (или новее).
  • Для Корпоративного сервера ниже версии 2026.4.14.17766: допускается использование PostgreSQL 11 на ОС Astra Linux 1.7.4.

Дальнейшая инструкция описывает процесс установки Корпоративного сервера 2026.4.14.17766.

1. Архитектура

1.1. Схема

Схема Middle архитектуры Корпоративного сервера 2024

1.2. Описание

1.2.1. Роль Р7 Диск

Фронт и бэкенд сервиса Р7 Диска, модули Р7 Диск, Р7 Почта, Р7 Управление, Р7 Календарь и т. д. Хранение и обработка пользовательских сессий и файлов.

1.2.2. Роль PostgreSQL

Хранение информации о пользователях, файлах, ролях, событиях и т. п. Критически важная роль для работы продукта.

1.2.3. Роль Поиск

Отвечает за поиск файлов и писем в продукте Р7 Диск, крайне требователен к ресурсам сервера. Чем больше данных и чаще ведётся поиск, тем больше требуется ресурсов.

1.2.4. Роль NFS сервер

Является файловым хранилищем пользовательских файлов и индексов Р7 Диск и сервиса Поиска, а также кеша и лицензии Сервера документов.

1.2.5. Роль Сервер документов

Отвечает за функционал редактирования документов.

2. Роль PostgreSQL

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=postgresql
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

2.1. Установите PostgreSQL

sudo apt update && sudo apt install postgresql -y

2.2. Проверьте установленную версию PostgreSQL

После установки проверьте, какая именно версия СУБД была развёрнута в системе:

psql -V
Важно

Запомните полученную версию (например, 11 или 13). Во всех дальнейших шагах инструкции обязательно заменяйте цифру «15» в путях к файлам и командах на вашу актуальную версию.

2.3. Отредактируйте postgresql.conf

sudo nano /etc/postgresql/15/main/postgresql.conf

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

listen_addresses = 'localhost,192.168.26.48' # what IP address(es) to listen on;
port = 5432

Где:

  • localhost, 192.168.26.48 — адреса, которые слушает сервис;
  • 5432 — порт, который сервис прослушивает.

2.4. Измените pg_hba.conf

sudo nano /etc/postgresql/15/main/pg_hba.conf

Добавьте строку:

host cddisk cddisk 192.168.26.99/32 trust
host pagesdb cddisk 192.168.26.99/32 trust

Где:

  • cddisk — имя базы данных Р7 Диск;
  • cddisk — имя пользователя для Р7 Диск;
  • pagesdb — имя базы данных для модуля Р7 Страницы;
  • 192.168.26.99 — адрес, с которого будет подключаться Р7 Диск.

2.5. Создайте пользователя и БД для роли «Р7 Диск»

sudo -i -u postgres psql -c 'CREATE DATABASE cddisk;'
sudo -i -u postgres psql -c "CREATE USER cddisk WITH password 'cddisk';"
sudo -i -u postgres psql -c 'GRANT ALL privileges ON DATABASE cddisk TO cddisk;'
sudo -i -u postgres psql -c 'CREATE DATABASE pagesdb OWNER cddisk;'
sudo -i -u postgres psql -c 'GRANT ALL privileges ON DATABASE pagesdb TO cddisk;'

Где:

  • cddisk — имя БД для работы Р7 Диск;
  • cddisk — пользователь с доступом к БД cddisk;
  • cddisk — пароль пользователя cddisk;
  • pagesdb — имя базы данных для модуля Р7 Страницы.

2.6. Перезапустите PostgreSQL

sudo systemctl restart postgresql

3. Роль Сервер документов (DS)

Уточнение

Актуальная инструкция на сайте ↗.

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-service=http
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

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

sudo echo "deb https://downloads.r7-office.ru/repository/r7-server-apt/ r7 main" | sudo tee /etc/apt/sources.list.d/r7server.list

3.2. Добавьте ключ к репозиторию

sudo curl -s https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/r7.gpg --import && sudo chmod 644 /etc/apt/trusted.gpg.d/r7.gpg

Добавьте файл для авторизации в репозитории:

sudo vi /etc/apt/auth.conf.d/r7server.conf

Если данной директории нет, необходимо отредактировать файл auth.conf:

sudo vi /etc/apt/auth.conf

Пропишите в файле следующие данные:

machine downloads.r7-office.ru
login server
password KwmuQmOzuFIw9wcJsL3zb

Измените права доступа к файлу:

sudo chmod 600 /etc/apt/auth.conf.d/r7server.conf
Уточнение

Если директории /etc/apt/auth.conf.d нет, то выполните эту команду:

sudo chmod 600 /etc/apt/auth.conf

3.3. Обновите список пакетов

sudo apt update

3.4. Установите PostgreSQL

sudo apt install postgresql -y

3.5. Запустите PostgreSQL

sudo systemctl enable --now postgresql

3.6. Создайте БД и пользователя

sudo -i -u postgres psql -c "CREATE USER r7office WITH password 'r7office';"
sudo -i -u postgres psql -c "CREATE DATABASE r7office OWNER r7office;"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE r7office TO r7office;"

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

sudo apt install "rabbitmq-server=3.*" redis-server nginx-extras -y

3.8. Запустите сервисы

sudo systemctl enable --now rabbitmq-server
sudo systemctl enable --now redis-server

3.9. Настройка DS

# Пароль от пользователя r7office в PostgreSQL
sudo echo r7-office-documentserver-ee ds/db-pwd select r7office | sudo debconf-set-selections

# Пользователь с доступом к БД r7office
sudo echo r7-office-documentserver-ee ds/db-user select r7office | sudo debconf-set-selections

# БД для DS в PostgreSQL
sudo echo r7-office-documentserver-ee ds/db-name select r7office | sudo debconf-set-selections

# header для JWT
sudo echo r7-office-documentserver-ee ds/jwt-header string AuthorizationJWT | sudo debconf-set-selections

# Включение/отключение JWT
sudo echo r7-office-documentserver-ee ds/jwt-enabled boolean true | sudo debconf-set-selections

# Секрет JWT, необходимо запомнить, понадобится при установке Р7 Диск
sudo echo r7-office-documentserver-ee ds/jwt-secret password "123QWEasddsaEWQ321" | sudo debconf-set-selections

Где:

  • db-pwd — пароль пользователя в параметре db-user;
  • db-user — пользователь, созданный в п.3.6;
  • db-name — имя базы данных, созданной в п.3.6;
  • jwt-header — заголовок HTTP, который будет использоваться для отправки токена исходящего запроса;
  • jwt-enabled — определяет, включены ли токены или нет;
  • jwt-secret — определяет параметры секретного ключа для генерации токена сеанса.

3.10. Установка DS

3.10.1. Обновите кэш менеджера пакетов

sudo apt-get update

3.10.2. Установите пакет

sudo apt install r7-office-documentserver-ee -y

3.11. Запустите DS

sudo systemctl enable --now ds-docservice.service 
sudo systemctl enable --now ds-converter.service 
sudo systemctl enable --now ds-metrics.service

3.12. Переведите на HTTPS

Уточнение

Актуальная инструкция на сайте ↗.

3.12.1. Создайте директорию

sudo mkdir /var/www/r7-office/Data/ssl

3.12.2. Поместите сертификат и ключ в таком виде

/var/www/r7-office/Data/ssl/имя_файла.crt
/var/www/r7-office/Data/ssl/имя_файла.key

Где:

  • имя_файла — домен или произвольное название.

3.12.3. Замените конфиг на HTTPS

sudo cp /etc/r7-office/documentserver/nginx/ds.conf /etc/r7-office/documentserver/nginx/ds.conf_orig
sudo cp -f /etc/r7-office/documentserver/nginx/ds-ssl.conf.tmpl /etc/r7-office/documentserver/nginx/ds.conf

3.12.4. Измените конфигурационный файл

sudo nano /etc/r7-office/documentserver/nginx/ds.conf
3.12.4.1. Измените строки
# Закомментировать 
#ssl on 
# Изменить
ssl_certificate /var/www/r7-office/Data/ssl/имя_файла.crt; 
ssl_certificate_key /var/www/r7-office/Data/ssl/имя_файла.key;

Где:

  • имя_файла — домен или произвольное название.
3.12.4.2. Запустите скрипт для обновления секрета storage
sudo bash /usr/bin/documentserver-update-securelink.sh

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

sudo nginx -t

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

systemctl restart nginx

3.13. Регистрация Сервера документов

Если вы приобрели Сервер документов и получили файл license.lic, вы можете поместить его в каталог установки для получения полной версии программы.

Если вы используете дистрибутив Linux на базе Debian, файл license.lic помещается в следующую папку:

/var/www/r7-office/Data/license.lic

Имя файла лицензии должно быть строго license.lic.

После этого ваша версия Сервера документов станет зарегистрированной и полнофункциональной.

4. Роль Р7 Диск

Уточнение

Актуальная инструкция на сайте ↗.

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-service=http
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

4.1. Скачайте архив дистрибутива

4.2. Разместите архив в /mnt

4.3. Распакуйте

unzip CDinstall_*.zip

4.4. Перейдите в каталог

cd CDDiskPack/CDinstall/

4.5. Для HTTPS

Если требуется настройка HTTPS, перед установкой скопируйте файлы crt и key в папку CDDiskPack/CDinstall/sslcert.

Важно

Имя файла должно содержать название домена и расширение.

Например, для домена devr7.ru имена файлов должны быть devr7.ru.crt и devr7.ru.key.

4.6. Добавьте права на исполнение скрипту

chmod +x online_installer.sh

4.6.1. Настройка для DS

Данные действия необходимы при установке версии Корпоративного сервера ниже 14000.

# Пароль от пользователя r7office в PostgreSQL
sudo echo r7-office-documentserver-ee ds/db-pwd select r7office | sudo debconf-set-selections

# Пользователь с доступом к БД r7office
sudo echo r7-office-documentserver-ee ds/db-user select r7office | sudo debconf-set-selections

# БД для DS в PostgreSQL
sudo echo r7-office-documentserver-ee ds/db-name select r7office | sudo debconf-set-selections

# header для JWT
sudo echo r7-office-documentserver-ee ds/jwt-header string AuthorizationJWT | sudo debconf-set-selections

# Включение/отключение JWT
sudo echo r7-office-documentserver-ee ds/jwt-enabled boolean true | sudo debconf-set-selections

# Секрет JWT, необходимо запомнить, понадобится при установке Р7 Диск
sudo echo r7-office-documentserver-ee ds/jwt-secret password "123QWEasddsaEWQ321" | sudo debconf-set-selections
# Host БД для DS в PostgreSQL
sudo echo r7-office-documentserver-ee ds/db-host string 192.168.27.184  | sudo debconf-set-selections

Где:

  • db-pwd — пароль пользователя в параметре db-user;
  • db-user — пользователь, созданный в п.3.6;
  • db-name — имя базы данных, созданной в п.3.6;
  • jwt-header — заголовок HTTP, который будет использоваться для отправки токена исходящего запроса;
  • jwt-enabled — определяет, включены ли токены или нет;
  • jwt-secret — определяет параметры секретного ключа для генерации токена сеанса;
  • 192.168.27.184 — IP-адрес сервера с «Роль PostgreSQL».

4.7. Запустите установку

Важно

В зависимости от версии дистрибутива, шаги могут отличаться.

bash ./online_installer.sh

4.7.1. В процессе установки

4.7.1.1. Чистая установка

Если требуется выполнить чистую установку (при этом будут удалены имеющаяся установка Р7 Диск и зависимости):

  • Выберите Да:
Окно подтверждения чистой установки
4.7.1.2. Установка СУБД на локальную ВМ

PostgreSQL будет на другой ВМ:

  • Выберите Нет:
Окно отказа от установки PostgreSQL на локальную машину
4.7.1.3. Установка Сервера Документов
Обратите внимание

Если версия устанавливаемого Корпоративного сервера 2024 ниже 14000, то для корректной установки роли «Р7 Диск» требуется Document Server. В данном случае будем выбирать «Нет».

Установка Сервера документов:

  • Выберите Нет:
Окно отказа от установки Сервера документов
4.7.1.3.1. Укажите адрес сервера документов установленного ранее
Окно Document Server URL
4.7.1.3.2. JWT Key Document Server

Укажите секрет установленного Document Server.

  • Значение jwt-secret было задано в п. 4.6.1 (в примере используется значение 123QWEasddsaEWQ321):
Окно ввода секрета Document Server secret
4.7.1.4. Установка CDDisk api & web
  • Выберите Да.
Окно подтверждения установки CDDisk api & web
4.7.1.5. Выберите PostgreSQL (для версий 14752 и ниже)
  • Выберите PostgreSQL:
Окно выбора типа базы данных
4.7.1.6. Создание БД

Выберите.

  • Нет:
Окно отказа от создания базы данных
4.7.1.7. Хост СУБД

Укажите IP-адрес сервера с СУБД:

Окно Database host
4.7.1.7.1. Порт СУБД

Укажите порт сервера с СУБД.

  • По умолчанию 5432, порт задавали в п.2.2:
Окно Database port
4.7.1.7.2. Укажите название БД cddisk

Создавалась на вынесенной БД в п.2.4:

Окно Database name
4.7.1.7.3. Укажите пользователя cddisk
Окно Database user for create DB
4.7.1.7.4. Пользователь СУБД
Окно Database user

Укажите пользователя сервера СУБД, заданного в п. 2.4.

  • По умолчанию: cddisk.
4.7.1.7.5. Укажите пароль пользователя cddisk
Окно Database password for create DB
4.7.1.7.6. Укажите пароль пользователя cddisk
Окно Database password for user
4.7.1.8. coremachinkey от CS19
  • Измените на актуальный, если есть Р7 Офис Корпоративный сервер 2019 и нажмите ОК;
  • Если нет, нажмите ОК без редактирования.
Окно указания значения salt для генерации ключей
4.7.1.9. Настройка HTTPS
  • Выберите Да:
Окно подтверждения настройки HTTPS
4.7.1.10. Укажите домен

Необходимо указать домен, в котором у Вас созданы записи.

Уточнение

Например, при домене devr7.ru необходимо создать A-запись cddisk.devr7.ru.

В значении укажите именно devr7.ru, а не созданную А-запись.

Окно Domain name
4.7.1.10.1. Префиксы для модулей. Пример для Р7 Диск
Окно Prefix name for cddisk

Например, если вы хотите, чтобы открылся Р7 Диск по адресу cddisk.devr7.ru, то указать нужно именно cddisk, без указания домена.

Также необходимо создать соответствующую A-запись в DNS.

4.7.1.10.2. Остальные префиксы укажите по аналогии и укажите в DNS необходимые записи по префиксам модулей
4.7.1.11. Установить Р7 Почтовый сервер
  • Выберите Нет:
Окно запроса «Установить Р7 Почтовый сервер?»
4.7.1.12. Перезагрузите систему

Для корректной работы Р7 Диск требуется перезагрузка.

4.8. Зайдите в БД

Обратите внимание

Данный пункт требуется выполнять, если вы допустили ошибку в п. 3.9 или в п. 4.7.1.3.1 и указали неверный секрет или просто хотите обновить данные для повышения безопасности.

psql -h<IP_СЕРВЕР_С_БД> -Ucddisk cddisk

4.8.1. Обновите данные DS

4.8.1.1. URL DS
UPDATE public."MessageSettings" SET "Value"='https://ds.devr7.ru' WHERE "Key" = 'documentServerUrl';
4.8.1.2. Секрет

Находится в файле /etc/r7-office/documentserver/local.json:

UPDATE public."MessageSettings" SET "Value"='123QWEasddsaEWQ321' WHERE "Key" = 'files.docservice.secret';
Вывод параметров секрета Document Server
Обратите внимание

В данном примере секрет отличается, так как его заменили другим значением в п. 3.9 и п. 4.7.1.3.1. Если вы не допустили ошибку, то изменять ничего не нужно.

4.8.2. Перезапустите cddisk

supervisorctl restart all

4.8.3. Проверьте работу документов

Зайдите на портал Корпоративного сервера 2024 и создайте документ. Проверьте редактирование.

4.9. Интеграция Корпоративного сервера 2024 с вынесенным сервером документов

4.9.1. На сервере с БД (PostgreSQL) (пункт 1) выведите информацию

sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'documentServerUrl';"
sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'apiUrlInternal';"
sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'files.docservice.secret';" # - где потребуется сохранить значение files.docservice.secret
4.9.1.1. Обновите на новые значения секрет (если требуется) и адрес сервера документов в БД
sudo -u postgres psql -d cddisk -c "UPDATE public.\"MessageSettings\" SET \"Value\"='https://ds.devr7.ru' WHERE \"Key\" = 'documentServerUrl';"
sudo -u postgres psql -d cddisk -c "UPDATE public.\"MessageSettings\" SET \"Value\"='https://cddisk.devr7.ru' WHERE \"Key\" = 'apiUrlInternal';"
  • указав вместо https://ds.devr7.ru адрес вынесенного сервера документов (если адрес вынесенного ДС одноименный — нет необходимости менять), для примера, указан в запросе — Value"='https://ds.devr7.ru'
  • указав вместо https://cddisk.devr7.ru ссылку на адрес основного приложения Корпоративного сервера.
4.9.1.2. Секрет

На вынесенном сервере документов (установили в пункте 3) укажите секрет из запроса, по значению ключа «Key» = ‘files.docservice.secret’, в файле:/etc/r7-office/documentserver/local.json
Пример:

"secret": {        
      "inbox": {
       "string": " "   // в кавычках указать ключ из селекта п. 3.9, по значению ключа "Key" = 'files.docservice.secret'        
   },
   "outbox": {
       "string": " "   // в кавычках указать ключ из селекта п. 3.9, по значению ключа "Key" = 'files.docservice.secret'
           },
   "session": {
       "string": " "   // в кавычках указать ключ из селекта п. 3.9, по значению ключа "Key" = 'files.docservice.secret'
           },

Перезапустите сервис DS (на вынесенном сервере документов) и проверьте статусы сервисов:

systemctl restart ds-* --all
systemctl status ds-*

4.9.2. Отредактируйте файл /etc/nginx/sites-available/cddisk на сервере с ролью Р7 Диск

Добавьте запись allow в блоки location /api/v1/Documents/UploadCallback и location /api/v1/Link/ds:

location /api/v1/Documents/UploadCallback {
	    proxy_set_header host $host;
	    proxy_set_header X-real-ip $remote_addr;
	    proxy_set_header User-Agent $http_user_agent;
	    proxy_set_header X-forward-for $proxy_add_x_forwarded_for;
	    proxy_set_header X-Module Disk;
	    proxy_set_header X-Forwarded-Proto $scheme;
	    allow 127.0.0.1;
		allow 192.168.25.1;
	    #allow 0.0.0.0;
            deny all;
	    proxy_pass http://localhost:38033/api/v1/Documents/UploadCallback;
}

location /api/v1/Link/ds {
	    proxy_set_header host $host;
	    proxy_set_header X-real-ip $remote_addr;
	    proxy_set_header User-Agent $http_user_agent;
	    proxy_set_header X-forward-for $proxy_add_x_forwarded_for;
	    proxy_set_header X-Module Disk;
	    proxy_set_header X-Forwarded-Proto $scheme;
		allow 127.0.0.1;
	    allow 192.168.25.1;
	    #allow 0.0.0.0;
            deny all;
	    proxy_pass http://localhost:38033/api/v1/Link/ds;
}

Где:

  • 192.168.25.1 — IP-адрес сервера DS.

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

sudo nginx -t

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

systemctl restart nginx

4.9.5. Перезапустите cddisk

supervisorctl restart all

4.9.6. Отключите сервер документов на сервере с ролью Р7 Диск, если версия ниже 14000

systemctl stop ds-* 
systemctl disable ds-metrics.service ds-docservice.service ds-converter.service

4.9.7. Отредактируйте файл /etc/hosts на сервере с ролью Р7 Диск

В файле /etc/hosts на сервере с ролью Р7 Диск удалите запись с ds.r7.ru:

127.0.0.1 ds.devr7.ru

5. Роль Search

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-port=2664/tcp
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

5.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
sudo wget https://packages.microsoft.com/config/debian/10/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list && sudo apt update
sudo wget https://packages.microsoft.com/ubuntu/20.04/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

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

sudo apt install supervisor aspnetcore-runtime-6.0 aspnetcore-targeting-pack-6.0 dotnet-apphost-pack-6.0 dotnet-hostfxr-6.0 dotnet-runtime-6.0 dotnet-sdk-6.0 dotnet-templates-6.0 dotnet-targeting-pack-6.0

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

sudo apt install supervisor aspnetcore-runtime-3.1 aspnetcore-targeting-pack-3.1 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

5.2. Перенесите конфигурационные файлы

5.2.1. Архивируйте их на ВМ с диском

Пример команды:

tar czvf search.tar.gz --selinux /opt/r7-office/SearchApi /var/log/r7-office/CDDisk/SearchApi /etc/supervisor /var/r7-office/searchindex

5.2.2. Перенесите архив удобным вам способом

Пример переноса через scp:

scp search.tar.gz ipВмПоиска:/root/

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

# Сверяем пользователя и группу на ВМ с диском
id cddisk
# Вывод
uid=119(cddisk) gid=131(cddisk) группы=131(cddisk)

# Создаём группу и пользователя на ВМ с поиском
groupadd -g 131 cddisk
 
# Создаём пользователя с uid 119 и добавляем его в группу с gid 131
useradd -u 119 -g 131 cddisk

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

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

5.5. Измените конфигурацию supervisor

5.5.1. Удалите лишнее

cd /etc/supervisor/conf.d/ && rm cddisk-api.conf cddisk-filestorage.conf cddisk-registry.conf cddisk-ssoapi.conf cddisk-processing.conf

5.5.2. Измените файл

/etc/supervisor/conf.d/cddisk.conf приводим к виду:

[group:cddisk]
programs=searchapi

5.5.3. Перезапустите службу

systemctl restart supervisor.service

5.5.4. Проверьте службу поиска

supervisorctl status all

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

На ВМ с ролью Р7 Диск.

5.6.1. Измените на «IP_СЕРВЕРА_С_Поиском»

/opt/r7-office/Service.Registry/appsettings.json
Фрагмент конфигурационного файла appsettings.json

Где:

  • 192.168.26.188 — IP-адрес сервера с установленным сервисом Поиска.

Аналогично внесите изменения в следующие файлы (для версий ниже 2.0.15.843):

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

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

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

Приведите к виду /etc/supervisor/conf.d/cddisk.conf:

[group:cddisk]
programs=api,filestorage,processing,registry,apisso

5.6.3. Перезапустите supervisor

supervisorctl restart all

6. Роль NFS (опционально)

Уточнение

NFS-сервер возможно заменить на дополнительный примонтированный диск.

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=nfs
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

6.1. Установите NFS

apt install nfs-kernel-server

6.2. Создайте каталог

mkdir -p /mnt/nfs/search
mkdir /mnt/nfs/cddisk
mkdir /mnt/nfs/ds

Где:

  • /mnt/nfs/search — каталог для файлов Сервера с сервисом Поиска;
  • /mnt/nfs/cddisk — каталог для файлов Р7 Диск;
  • /mnt/nfs/ds — каталог для файлов Сервера Документов.

6.3. Создайте пользователей ds и cddisk

6.3.1. Проверьте на ВМ с сервисом Поиска и ВМ с Р7 Диск uid и gid

id cddisk

Вывод:

root@kh-middle-p7disk:~# id cddisk
uid=119(cddisk) gid=131(cddisk) группы=131(cddisk)

6.3.2. Проверьте на ВМ с Сервером документов uid и gid

id ds

Вывод:

root@kh-middle-p7ds:~# id ds
uid=119(ds) gid=131(ds) группы=131(ds)
6.3.2.1. Измените gid и uid на ВМ с Сервером Документов

Так как uid и gid пользователя ds совпадают с uid и gid пользователя cddisk, необходимо изменить их: значения uid и gid должны быть уникальными для соответствующих пользователей и групп:

# Останавливаем службы
systemctl stop ds-converter ds-docservice ds-metrics

# Изменяем группу и права на каталог
groupmod -g 1100 ds
usermod -u 1100 -g 1100 ds

# Обновляем права на каталоги
chown -R ds:ds /var/lib/r7-office
chown -R ds:ds /var/www/r7-office
chown -R ds:ds /etc/r7-office
chown -R ds:ds /var/log/r7-office

# Запускаем сервисы
systemctl start ds-converter ds-docservice ds-metrics

6.3.3. Создайте пользователя на сервере NFS

6.3.3.1. Для DS
# Создаём группу ds
groupadd -g 1100 ds

# Создаём пользователя ds и добавляем в группу
useradd -u 1100 -g 1100 ds
6.3.3.2. Для Р7 Диска и Поиска
# Создаём группу cddisk
groupadd -g 131 cddisk

# Создаём пользователя cddisk и добавляем в группу
useradd -u 119 -g 131 cddisk

6.4. Измените файл

sudo nano /etc/exports

6.4.1. Добавьте строки

# Сетевой каталог для Сервера документов
/mnt/nfs/ds 192.168.25.1/32(rw,nohide,all_squash,anonuid=1100,anongid=1100,no_subtree_check)
# Сетевые каталоги для сервера с Р7 Диск и сервера с сервисом Поиска 
/mnt/nfs/cddisk 192.168.25.2/32(rw,nohide,all_squash,anonuid=119,anongid=131,no_subtree_check)
/mnt/nfs/search 192.168.25.3/32(rw,nohide,all_squash,anonuid=119,anongid=131,no_subtree_check)

Где:

  • 192.168.25.1 — IP-адрес сервера DS;
  • 192.168.25.2 — IP-адрес сервера с Р7 Диск;
  • 192.168.25.3 — IP-адрес сервера с сервисом Поиска.

6.4.2. Включите сетевые каталоги

sudo exportfs -ra

6.4.3. Обновите права на каталоги

chown cddisk:cddisk /mnt/nfs/cddisk
chown cddisk:cddisk /mnt/nfs/search
chown ds:ds /mnt/nfs/ds

7. Подключение сетевых каталогов

7.1. Установите клиент NFS

sudo apt install nfs-common

7.2. Для ВМ с ролью DS

7.2.1. Остановите сервис

systemctl stop ds-converter ds-docservice ds-metrics

7.2.2. Пропишите в fstab сетевой каталог

192.168.25.4:/mnt/nfs/ds /var/lib/r7-office/documentserver/App_Data/cache nfs defaults 0 0

Где:

  • 192.168.25.4 — IP-адрес NFS-сервера;
  • /mnt/nfs/ds — сетевой каталог на NFS-сервере;
  • /var/lib/r7-office/documentserver/App_Data/cache — куда монтируем сетевой каталог на сервере с DS.

7.2.3. Скопируйте файлы

cd /var/lib/r7-office/documentserver/App_Data/cache
mkdir /tmp/backup_ds
cp -pr ./ /tmp/backup_ds

7.2.4. Примонтируйте и скопируйте файлы

cd /tmp/backup_ds
mount -a
cp -pr ./ /var/lib/r7-office/documentserver/App_Data/cache

7.2.5. Запустите сервисы

systemctl start ds-converter ds-docservice ds-metrics

7.2.6. Проверьте работу редактирования

Убедитесь, что файлы создаются на NFS-сервере:

Вывод команды проверки создания файлов на NFS-сервере

7.3. Для ВМ с ролью Р7 Диск

7.3.1. Остановите сервисы

supervisorctl stop all

7.3.2. Пропишите в fstab

192.168.25.4:/mnt/nfs/cddisk /var/r7-office nfs defaults 0 0

Где:

  • 192.168.25.4 — IP-адрес NFS-сервера;
  • /mnt/nfs/cddisk — сетевой каталог на NFS-сервере;
  • /var/r7-office — куда монтируем сетевой каталог на сервере с Р7 Диск.

7.3.3. Скопируйте файлы

cd /var/r7-office
mkdir /tmp/backup_cddisk
cp -pr ./ /tmp/backup_cddisk

7.3.4. Примонтируйте и скопируйте файлы

cd /tmp/backup_cddisk
mount -a
cp -pr ./ /var/r7-office

7.3.5. Запустите сервисы

supervisorctl start all

7.3.6. Проверьте работу портала и сохранение документов

7.3.6.1. Создайте файл и отредактируйте его
Раздел «Мои документы» в модуле «Р7 Диск»
7.3.6.2. Проверьте его сохранение
Отображение сохранённого файла в модуле «Р7 Диск»

7.4. Для ВМ с Сервисом Поиска

7.4.1. Остановите сервис

supervisorctl stop all

7.4.2. Пропишите в fstab сетевой каталог

192.168.25.4:/mnt/nfs/search /var/r7-office/searchindex nfs defaults 0 0

Где:

  • 192.168.25.4 — IP-адрес NFS-сервера;
  • /mnt/nfs/search— сетевой каталог на NFS-сервере;
  • /var/r7-office/searchindex — куда монтируем сетевой каталог на сервере с сервисом Поиска.

7.4.3. Скопируйте файлы

cd /var/r7-office/searchindex
mkdir /tmp/backup_search
cp -pr ./ /tmp/backup_search

7.4.4. Примонтируйте и скопируйте файлы

cd /tmp/backup_search
mount -a
cp -pr ./ /var/r7-office/searchindex

7.4.5. Запустите сервисы

supervisorctl start all

7.4.6. Проверьте работу поиска

7.4.6.1. Введите имя файла в строке поиска

Должен выдать его в результате:

Результаты поиска файла в модуле «Р7 Диск»

8. Настройка потоковой репликации Master-Slave PostgreSQL

Важно

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

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=postgresql
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

8.1. Установите PostgreSQL на Slave

sudo apt update && sudo apt install postgresql -y

8.2. Проверьте установленную версию PostgreSQL

После установки проверьте, какая именно версия СУБД была развёрнута в системе:

psql -V
Важно

Запомните полученную версию (например, 11 или 13). Во всех дальнейших шагах инструкции обязательно заменяйте цифру «15» в путях к файлам и командах на вашу актуальную версию.

8.3. Измените postgresql.conf

sudo nano /etc/postgresql/15/main/postgresql.conf

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

listen_addresses = 'localhost,192.168.26.71' # what IP address(es) to listen on;
port = 5432

Где:

  • localhost,192.168.26.71 — адреса, которые слушает сервис;
  • 5432 — порт, который сервис прослушивает.

8.4. На Master

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

su - postgres
createuser --replication -P repluser

Система запросит пароль. Сохраните его для дальнейшего использования.

8.4.1.1. Проверьте расположение конфигурационного файла
psql -c 'SHOW config_file;'

В нашем случае это:

/etc/postgresql/15/main/postgresql.conf

8.4.2. Выйдите из оболочки postgres

exit

8.4.3. Измените postgresql.conf

sudo nano /etc/postgresql/15/main/postgresql.conf

Отредактируйте следующие параметры:

wal_level = replica
max_wal_senders = 2
max_replication_slots = 2
hot_standby = on
hot_standby_feedback = on

Где:

  • wal_level — указывает, сколько информации записывается в WAL (журнал операций, который используется для репликации);
  • max_wal_senders — лимит одновременных подключений для передачи логов, на каждый сервер Slave требуется 2 подключения;
  • max_replication_slots — максимальное число слотов репликации;
  • hot_standby — определяет, можно или нет подключаться к PostgreSQL для выполнения запросов в процессе восстановления;
  • hot_standby_feedback — определяет, будет или нет сервер slave сообщать мастеру о запросах, которые он выполняет.

8.4.4. Измените файл pg_hba.conf

sudo nano /etc/postgresql/15/main/pg_hba.conf

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

host replication repluser 127.0.0.1/32 md5
host replication repluser 192.168.26.48/32 md5
host replication repluser 192.168.26.71/32 md5
  • Данной настройкой Вы разрешаете подключение к базе данных replication пользователю repluser с локального сервера (localhost и 192.168.26.48) и сервера 192.168.26.71.

8.4.5. Перезапустите службу PostgreSQL

systemctl restart postgresql

8.5. На Slave

8.5.1. Проверьте пути до конфигурационных файлов

su - postgres -c "psql -c 'SHOW data_directory;'"

Вывод:

Вывод параметра data_directory в PostgreSQL
su - postgres -c "psql -c 'SHOW config_file;'"

Вывод:

Вывод параметра config_file в PostgreSQL

8.5.2. Остановите PostgreSQL

systemctl stop postgresql

8.5.3. Сделайте бэкап

tar -czvf /tmp/data_pgsql.tar.gz /var/lib/postgresql/15/main

8.5.4. Удалите содержимое

rm -rf /var/lib/postgresql/15/main/*

8.5.5. Запустите репликацию с Master на Slave

su - postgres -c "pg_basebackup --host=192.168.26.48 --username=repluser --pgdata=/var/lib/postgresql/15/main --wal-method=stream --write-recovery-conf"

Где:

  • 192.168.26.48 — IP-адрес мастера;
  • /var/lib/postgresql/15/main — путь до каталога с данными.

После ввода команды система запросит пароль для созданной ранее учётной записи repluser — введите его.

Начнётся процесс клонирования данных.

8.5.6. Запустите PostgreSQL

systemctl start postgresql

8.6. Проверка репликации

8.6.1. Посмотрите статус

Статус работы репликации можно посмотреть следующими командами.

8.6.1.1. На Master
select * from pg_stat_replication;
Вывод представления pg_stat_replication на сервере Master
8.6.1.2. На Slave
select * from pg_stat_wal_receiver;
Вывод представления pg_stat_wal_receiver на сервере Slave

8.6.2. Создайте тестовую базу

8.6.2.1. На Master зайдите в командную оболочку Postgres
su - postgres -c "psql"
8.6.2.2. Создайте новую базу данных
CREATE DATABASE repltest ENCODING='UTF8';
8.6.2.3. На Slave посмотрите список баз

Выполните команду:

sudo -u postgres psql -c '\l'

Вы должны увидеть среди баз ту, которую создали на первичном сервере:

Отображение тестовой базы данных в списке баз на сервере Slave

Настройка завершена.

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

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

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