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

Миграция Корпоративный сервер 2019 docker версия в Корпоративный сервер 2024 docker версия релиз 2025.3.12.15877

Обновлено: 06.04.26

1. Подготовка к миграции

1.1. Останавливаем сервер документов и создаем пользователя на сервере с КС2024

Смотрим container id контейнера с названием downloads.r7-office.ru:9011/r7office/ds/ds-app

docker ps

Для остановки сессий с документами выполняем скрипт внутри контейнера КС2024:

docker exec container_id_ds-app bash /usr/bin/documentserver-prepare4shutdown.sh

Аналогично завершаем сессии документов для КС2019:

docker exec r7 bash /usr/bin/documentserver-prepare4shutdown.sh

Проверяем, что файлы не открываются на редактирование.

1.2. Создаем пользователя для миграции и добавляем его в группу docker

Если группы docker нет

groupadd docker
useradd -u 1999 -G docker cddisk

Посмотреть uid и gid созданного пользователя:

id cddisk

Перезапустите службу docker, после создания группы и добавления пользователя cddisk

systemctl restart docker

2. Работы для интеграции на Корпоративном сервере 2019

2.1. Создаем пользователя cddisk с правами SELECT

2.1.1. Войдите в контейнер КС2019

docker exec -it r7 bash

2.1.2. Узнаём пароль от root MySQL командой

grep -oP 'Password=\K[^;]+' /var/www/r7-office/WebStudio/web.connections.config

2.1.3. Подключаемся к MySQL

mysql -u root -p

2.1.4. Создаем пользователя cddisk с правами SELECT

CREATE USER 'cddisk'@'ip_docker_cs24' IDENTIFIED WITH mysql_native_password BY 'StrongSecurityPassword';
GRANT SELECT ON `r7-office`.* TO 'cddisk'@'ip_docker_cs24';
FLUSH PRIVILEGES;
\q

Где:

  • ip_docker_cs24 — IP-адрес Корпоративного сервера 2024;
  • StrongSecurityPassword — пароль пользователя cddisk;
  • cddisk — пользователь, с доступом к БД;
  • r7-office — имя базы данных.

2.2. Предоставляем доступ к файлам

2.2.1. Устанавливаем nfs сервер

# .deb
apt install nfs-kernel-server -y
# .rpm
yum install nfs-utils nfs4-acl-tools
# ALT Linux
apt-get install nfs-server

2.2.2. Запускаем службу nfs

systemctl start nfs-server
systemctl enable nfs-server

2.2.3. Открываем файл /etc/exports

nano /etc/exports

2.2.4. Добавляем строку в файл /etc/exports

/mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ ip_docker_cs24/32(rw,nohide,all_squash,anonuid=1999,anongid=995,no_subtree_check)

Где:

  • ip_docker_cs24 — ip адрес сервера с докер версией Корпоративного сервера 2024;
  • anonuid=1999 — указываем id, если выполнялось создание нового пользователя cddisk;
  • anongid=995 — указываем id группы docker;

Путь в начале указывается до директории со структурой документов (в примере, если по умолчанию был выбран путь при установке Корпоративного сервера 2019, если нет, заменить /mnt/r7/ на фактический путь).

2.2.5. Примените изменения

exportfs -ra

3. Работы для интеграции на Корпоративном сервере 2024

3.1. Проверьте доступ к БД и NFS Корпоративного сервера 2019

telnet ip_address_cs19 3306
telnet ip_address_cs19 2049

Где:

  • ip_address_cs19 — ip сервера Корпоративный сервер 2019;
  • 3306 — порт для MySQL;
  • 2049 — порт NFS.

3.2. Настройка доступ к файлам

3.2.1. Установите клиент nfs

# .deb
apt install nfs-common -y
# .rpm
yum install nfs-utils
# ALT Linux
apt-get install nfs-utils

3.2.2. Создайте каталог для монтирования файлов с Корпоративного сервера 2019

mkdir /mnt/cs19

3.2.3. Внесем изменения в services.json

nano /opt/r7-office-docker/configs/processing/services.json
# Внесите имя каталога созданного в пункте 3.2.2 в "folder"
{
      "name": "CS.UserImport",
      "handlers": [
        {
          "name": "ExportDataFromCsMessageHandler",
          "type": "ExportDataFromCsMessageHandler",
          "subscriptionEndpoint": "Export.Data.From.Cs",
          "folder": "/mnt/cs19",
          "customer": 1,
          "useExchange": true,
          "degreeOfParallelism": 1
        },

3.2.4. Настройте автоматическое монтирование сетевой папки при загрузке сервера

nano /etc/fstab

Добавьте в файл содержимое

ip_address_cs19:/mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ /mnt/cs19 nfs defaults 0 2

Где:

  • ip_address_cs19 — ip сервера с Корпоративным сервером 2019;
  • /mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ — имя каталога, который сделали сетевым;
  • /mnt/cs19 — куда монтируется.

3.2.5. Примонтируйте сетевой каталог

systemctl daemon-reload
mount -a

3.3. Проверяем порты rabbitmq

Перед внесением изменений cкопируйте файл template.yaml в каталоге /opt/r7-office-docker/

cp template.yaml template.yaml.old

3.3.1. Откройте файл template.yaml, расположенный в каталоге /opt/r7-office-docker/

Проверяем в конфигурации cs-rabbitmq что порт 5672 публичный:

cs-rabbitmq:
  container_name: cs-rabbitmq
  environment:
    RABBITMQ_DEFAULT_PASS: guest
    RABBITMQ_DEFAULT_USER: guest
    RABBITMQ_NODE_PORT: '5672'
    r7_team_rabbit_pass: team
  hostname: cs-rabbit
  image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2025.3.12.15877
  networks:
  - net-cs
  ports:
  - mode: host
    protocol: tcp
    published: '5672'
    target: '5672'
  restart: unless-stopped

3.3.2. Добавляем rabbitmq management plugin (опционально)

Для мониторинга прогресса миграции добавляем rabbitmq management plugin публичный порт 15672 и включаем отображение метрик

cs-rabbitmq:
  container_name: cs-rabbitmq
  environment:
    RABBITMQ_DEFAULT_PASS: guest
    RABBITMQ_DEFAULT_USER: guest
    RABBITMQ_NODE_PORT: '5672'
    r7_team_rabbit_pass: team
    RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: "-rabbitmq_management_agent disable_metrics_collector false"
  hostname: cs-rabbit
  image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2025.3.12.15877
  networks:
  - net-cs
  ports:
  - mode: host
    protocol: tcp
    published: '5672'
    target: '5672'
  - mode: host
    protocol: tcp
    published: '15672'
    target: '15672'
  restart: unless-stopped
  command: >
    sh -c "
    rabbitmq-plugins enable rabbitmq_management &&
    docker-entrypoint.sh rabbitmq-server
    "

3.4. Добавляем файл appsettings.json и директорию внутрь контейнера

Смотрим container id контейнера с названием downloads.r7-office.ru:9011/r7office/cs/cddisk-processing

docker ps

3.4.1. Извлекаем файл из контейнера командой, находясь в директории r7-office

docker cp container_id_cddisk-processing:/opt/r7-office/Processing/appsettings.json ./

или заменив ./ на путь к директории r7-office-docker.

Откроем файл appsettings.json на редактирование и приводим строку "CommunityRepository" к виду:

"ConnectionStrings": {
  "R7StorageServerUserActions": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;",
  "R7StorageServer": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;",
  "CommunityRepository": "Server=ip_address_cs19;UserID=cddisk;Password=StrongSecurityPassword;Database=r7-office"

Где:

  • ip_address_cs19 — ip сервера с Корпоративным сервером 2019;
  • cddisk — пользователь и его пароль, созданный в пункте 2.1.3.

3.4.2. Добавляем volumes в файле template.yaml в блок cs-processing

cs-processing:
  container_name: cs-processing
  depends_on:
  - cs-registry
  - cs-searchapi
  - cs-filestorage
  - cs-rabbitmq
  - cs-postgres
  environment:
    r7_db_host: cs-psql
    r7_db_name: postgres
    r7_db_pass: pg_pass
    r7_db_port: '5432'
    r7_db_user: postgres
    r7_filestorage_host: cs-filestorage
    r7_filestorage_tcp_port: '11581'
    r7_rabbitmq_host: cs-rabbit
    r7_rabbitmq_pass: guest
    r7_rabbitmq_user: guest
    r7_registry_addr: http://cs-registry:7777
    r7_searchapi_addr: http://cs-search:2664
  hostname: cs-processing
  image: downloads.r7-office.ru:9011/r7office/cs/cddisk-processing:2025.3.12.15877
  networks:
  - net-cs
  - net-ds
  - net-mail
  restart: unless-stopped
  volumes:
  - source: /opt/r7-office-docker/configs/processing/filestorage.json
    target: /opt/r7-office/Processing/filestorage.json
    type: bind
  - source: /opt/r7-office-docker/configs/processing/filestorage_temp
    target: /var/r7-office/filestorage_temp_proc/
    type: bind
  #- source: /opt/r7-office-docker/configs/processing/appsettings.json
  #  target: /opt/r7-office/Processing/appsettings.json
  #  type: bind
  - source: /opt/r7-office-docker/configs/processing/services.json
    target: /opt/r7-office/Processing/services.json
    type: bind
  - source: /opt/r7-office-docker/configs/processing/nlog.config
    target: /opt/r7-office/Processing/nlog.config
    type: bind
  - source: ./support_logs/processing
    target: /var/log/r7-office/CDDisk/R7.Storage.Server.Processing.Host
    type: bind
  - source: /mnt/cs19
    target: /mnt/cs19
    type: bind
    read_only: true
  - source: /opt/r7-office-docker/appsettings.json
    target: /opt/r7-office/Processing/appsettings.json
    type: bind

4. Пересобираем контейнеры после внесения изменений

4.1. Пересобираем контейнеры после сохранения изменений внесенных template.yaml

docker compose -f template.yaml up -d && docker restart container_id_ds-app

5. Запускаем миграцию

5.1. Запускаем миграцию в браузере

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

https://cddisk.domain.ru/api/v1/ExportFromCs/Start

Где:

  • cddisk.domain.ru — адрес модуля Р7-Диск у Корпоративный сервер 2024

5.2. Используем мониторинг прогресса миграции с помощью RabbitMQ

Открываем адрес в браузере и авторизуемся с помощью данных из пункта 3.3.2:

http://ip_docker_cs24:15672

Где:

  • ip_docker_cs24 — IP-адрес Корпоративного сервера 2024;
  • Import.User.From.Cs — очередь экспорnа пользователей;
  • Количество сообщений — это количество пользователей которые в процессе переноса;
  • Export.Data.From.Cs — очередь экспорта файлов.