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

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

Обновлено: 24.12.25

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
sudo apt-get install nfs-common
# для yum
sudo yum install nfs-utils
# ALT Linux
sudo apt-get install nfs-utils

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

mkdir /mnt/cs19

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

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/r7office/:

cp template.yaml template.yaml.old

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

Проверяем в конфигурации 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.1.18.15276
    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.1.18.15276
    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.1.18.15276
    networks:
    - net-cs
    - net-ds
    - net-mail
    restart: unless-stopped
    volumes:
    - source: /opt/r7office/configs/processing/filestorage.json
      target: /opt/r7-office/Processing/filestorage.json
      type: bind
    - source: /opt/r7office/configs/processing/filestorage_temp
      target: /var/r7-office/filestorage_temp_proc/
      type: bind
    #- source: /opt/r7office/configs/processing/appsettings.json
    #  target: /opt/r7-office/Processing/appsettings.json
    #  type: bind
    - source: /opt/r7office/configs/processing/services.json
      target: /opt/r7-office/Processing/services.json
      type: bind
    - source: /opt/r7office/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/r7office/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 — очередь экспорта файлов.