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

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

Обновлено: 25.03.26

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

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

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

docker ps

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

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

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

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

useradd -u 1999 -G docker cddisk

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

id cddisk

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

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

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

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

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

mysql -u root -p

2.1.3. Создаем пользователя 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

/var/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

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

# для yum
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:/var/www/r7-office/Data/Products/Files /mnt/cs19 nfs defaults 0 2

Где:

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

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

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.

Откроем файл 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 — очередь экспорта пользователей;
  • Количество сообщений — это количество пользователей которые в процессе переноса;
  • Export.Data.From.Cs — очередь экспорта файлов.