Как перевести кластер 1С на Ubuntu на новую версию платформы и не остаться без отката

· 9 мин

Содержание

Обновление сервера 1С на Ubuntu сводится к четырём действиям: поставить новую версию платформы рядом со старой, сохранить каталог кластера и лицензии, переключить службу srv1cv8 на новую версию и обновить клиентов до того же номера. Начиная с платформы 8.3.20 каждая версия ставится в свой каталог /opt/1cv8/x86_64/<версия>/, поэтому старая остаётся на диске и откат занимает пару минут.

Главная боль при обновлении — не установка пакетов, а то, что после неё перестают подключаться пользователи, падает веб-публикация или служба не стартует. Ниже порядок, при котором каждый из этих сбоев либо не случается, либо лечится за минуты.

Что проверить на сервере до обновления

Сначала выясните, что именно сейчас работает. На одном сервере часто стоит несколько версий, и запущена не всегда последняя.

Посмотрите установленные версии:

ls /opt/1cv8/x86_64/          # платформы 8.3.20 и новее
ls /opt/1C/v8.3/x86_64/       # старые установки до 8.3.20
dpkg -l | grep 1c-enterprise  # если ставили из deb-пакетов

Узнайте, какая служба запущена и от какой версии:

systemctl list-units --type=service | grep -i 1cv8
ps -ef | grep ragent

В строке процесса ragent виден полный путь к исполняемому файлу. Номер версии в этом пути и есть рабочая версия сервера.

Что ещё проверить до начала:

  • 🧩 Совместимость конфигураций. Посмотрите в описании релизов ваших конфигураций, на какой минимальной версии платформы они работают. Обычно проблема обратная: свежий релиз конфигурации требует платформу не ниже определённого номера, ради этого и обновляются.
  • 🐧 Версия Ubuntu. Новые версии платформы ориентированы на актуальные LTS-выпуски. На старой системе установщик может не найти нужные версии библиотек.
  • 💾 Место на диске. Каждая версия платформы занимает несколько сотен мегабайт. Плюс резервные копии — заложите запас в несколько гигабайт.
  • 🔌 Веб-сервер. Если базы опубликованы через Apache, запомните, где лежит конфигурация публикации. Её придётся править.
  • 🔑 Тип лицензий. Программные лицензии или аппаратный ключ HASP. Для ключа нужен работающий драйвер aksusbd, он с платформой не ставится.

Зависимости для сервера на Ubuntu обычно такие: fontconfig, шрифты Microsoft Core Fonts (пакет ttf-mscorefonts-installer), imagemagick, libgsf-1-114. Без шрифтов сервер работает, но печатные формы и отчёты в PDF формируются с неверной вёрсткой.

sudo apt update
sudo apt install fontconfig imagemagick libgsf-1-114 ttf-mscorefonts-installer
sudo fc-cache -fv

Резервные копии перед обновлением сервера 1С

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

Что сохранитьГде лежитЗачем
Каталог кластера/home/usr1cv8/.1cv8/1C/1cv8/Список кластеров, баз, рабочих серверов, администраторов
Программные лицензии/var/1C/licenses/Файлы .lic, без них сервер не выдаст лицензии клиентам
Базы данных СУБДPostgreSQL или другая СУБДСтраховка, если вслед за платформой обновляете конфигурации

В каталоге кластера главные файлы — 1cv8wsrv.lst (реестр кластеров на этом сервере) и reg_1541/1CV8Clst.lst (описание кластера и список баз). Номер в имени папки reg_1541 совпадает с портом менеджера кластера. Если вы его меняли, папка называется иначе.

Копию снимайте при остановленной службе, иначе файлы могут быть в момент записи:

sudo systemctl stop srv1cv8-8.3.22.1709@default   # подставьте своё имя службы
sudo tar czf /root/1c-cluster-$(date +%F).tar.gz /home/usr1cv8/.1cv8
sudo tar czf /root/1c-licenses-$(date +%F).tar.gz /var/1C/licenses

Остановка службы обрывает все сеансы пользователей, фоновые и регламентные задания. Делайте это в согласованное окно, предупредив людей заранее.

Базы PostgreSQL выгружайте штатно, по каждой базе:

sudo -u postgres pg_dump -Fc -f /backup/buh_$(date +%F).dump buh

Если после платформы вы сразу обновляете конфигурации, копия баз обязательна. Платформу можно откатить. Изменённую структуру базы без копии — нет.

Способы установки: .run-установщик или deb-пакеты

Дистрибутив сервера скачивают с портала обновлений по своему договору сопровождения. Для Linux он бывает в двух видах.

СпособКогда подходитОсобенности
Единый установщик .runПлатформа 8.3.20 и новее, любой дистрибутив LinuxСтавит компоненты в /opt/1cv8/x86_64/<версия>/, есть тихий режим
Набор deb-пакетовНужна установка через dpkg, учёт в пакетном менеджереПакеты одной версии ставятся вместе, путь тот же для 8.3.20+
Ручная распаковка без установщикаНе рекомендуетсяНет служб, нет учёта версий, сложный откат

«Ручная сборка» сервера 1С из исходников невозможна: платформа поставляется только в бинарном виде. Под ручной установкой обычно понимают распаковку файлов в каталог руками. Так делать не стоит.

Установка через .run

Распакуйте архив и запустите установщик в тихом режиме с нужными компонентами:

tar xzf server64_8_3_25_1394.tar.gz
chmod +x setup-full-8.3.25.1394-x64.run
sudo ./setup-full-8.3.25.1394-x64.run --mode unattended --enable-components server,ws,server_admin,ru

Компоненты: server — сам сервер, ws — модуль веб-сервера, server_admin — утилиты администрирования (ras, rac), ru — русский интерфейс. Номер версии в примере условный, подставьте свой.

Установка из deb-пакетов

mkdir deb && tar xzf deb64_8_3_25_1394.tar.gz -C deb
sudo dpkg -i deb/*.deb
sudo apt -f install    # дотянет недостающие зависимости

Ставьте пакеты одной версии одним вызовом. Смесь common от одной версии и server от другой не заработает.

Старая версия после установки новой остаётся в своём каталоге. Не удаляйте её, пока новая не отработала хотя бы несколько дней. Это и есть ваш откат.

Переключение службы и обновление кластера серверов 1С

Начиная с 8.3.21 в каталоге версии лежит готовый шаблон службы systemd. Новая служба подключается так:

VER=8.3.25.1394
sudo systemctl stop srv1cv8-8.3.22.1709@default
sudo systemctl disable srv1cv8-8.3.22.1709@default
sudo systemctl link /opt/1cv8/x86_64/$VER/srv1cv8-$VER@.service
sudo systemctl enable --now srv1cv8-$VER@default

Старую и новую службу одновременно не запускайте. Обе слушают одни и те же порты 1540, 1541 и диапазон рабочих процессов, вторая просто не стартует.

Новая версия подхватывает кластер из того же каталога /home/usr1cv8/.1cv8. Регистрировать базы заново не нужно.

Если у вас стоял сервер версии ниже 8.3.20 со скриптом /etc/init.d/srv1cv83, отключите его, иначе после перезагрузки поднимется старая версия:

sudo systemctl disable srv1cv83

Аналогично переключите службу сервера администрирования ras, если пользуетесь rac или сторонней консолью. Шаблон для неё лежит в том же каталоге версии. Если файла шаблона нет, запустите ras вручную:

/opt/1cv8/x86_64/$VER/ras cluster --daemon

Если в кластере несколько рабочих серверов

Все серверы кластера работают на одной и той же версии платформы. Сервер с другим номером к кластеру не подключится.

Порядок такой:

  1. Установите новую версию на все серверы заранее, не запуская службы.
  2. В одно окно остановите службы на всех серверах.
  3. Запустите новую службу на центральном сервере, дождитесь старта менеджера кластера.
  4. Запустите службы на остальных рабочих серверах.
  5. Проверьте в консоли, что все рабочие серверы видны и активны.

Веб-публикация после обновления

Это шаг, который забывают чаще всего. В конфигурации Apache модуль 1С подключается по полному пути с номером версии:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.25.1394/wsap24.so"

Замените номер версии на новый и перезапустите Apache. Можно переопубликовать базу утилитой webinst из каталога новой версии, она перепишет путь сама. Если на сервере опубликовано несколько баз, путь меняется в одной строке LoadModule, а не в каждой публикации.

Перезапуск Apache обрывает сеансы веб-клиента и HTTP-сервисов. Делайте его в то же окно.

Проверка сервера после обновления

Сначала служба и порты:

systemctl status srv1cv8-8.3.25.1394@default
ss -tlnp | grep -E '1540|1541'

Затем кластер и базы через rac (нужен запущенный ras):

/opt/1cv8/x86_64/8.3.25.1394/rac cluster list
/opt/1cv8/x86_64/8.3.25.1394/rac infobase summary list --cluster=<uuid-кластера>

Если на кластере задан администратор, к командам по базам добавляются параметры авторизации. Точный синтаксис смотрите в rac help.

Контроль после обновления
Выполнено: 0 / 7

Лицензии удобно проверить командой rac session list --licenses с указанием кластера. Если сеанс есть, а лицензии у него нет, смотрите раздел про ошибки ниже.

Клиенты тоже обновляются

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

Варианты:

  • 🖥 Разослать дистрибутив тонкого клиента и поставить на рабочие места.
  • 🌐 Настроить автоматическое обновление клиента через веб-сервер: клиент сам скачает нужную версию при подключении.
  • 🗂 На терминальном сервере поставить новую версию клиента один раз для всех.

Удобнее всего обновлять клиентов за день до сервера. Старые версии клиента остаются на компьютере, а 1cestart выбирает подходящую.

Типовые сбои после обновления и как их снять

Диагностика: выберите симптом

Права на каталог кластера восстанавливаются одной командой:

sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8

Если база после обновления ведёт себя странно — зависают формы, сыплются ошибки при открытии, которых раньше не было, — помогает очистка сеансовых данных кластера. Остановите службу, удалите папки snccntx* внутри reg_1541 и запустите службу снова.

Очистка сеансовых данных делается только при остановленной службе. Все пользователи будут отключены, несохранённые данные в открытых формах пропадут. Перед удалением убедитесь, что копия каталога кластера из шага резервирования на месте.

Откат сервера 1С на прежнюю версию

Откат на Ubuntu — это обратное переключение служб. Старая версия по-прежнему лежит в своём каталоге.

OLD=8.3.22.1709
NEW=8.3.25.1394
sudo systemctl disable --now srv1cv8-$NEW@default
sudo systemctl enable --now srv1cv8-$OLD@default

После этого:

  1. Верните в конфигурации Apache путь к wsap24.so старой версии и перезапустите Apache.
  2. Если каталог кластера повреждён, остановите службу и распакуйте архив из резервной копии.
  3. Проверьте, что у пользователей есть клиент старой версии. Обычно он не удалялся.

Откат платформы не откатывает конфигурации. Если вы успели обновить конфигурацию базы до релиза, которому нужна новая платформа, на старой версии такая база не откроется. Здесь поможет только восстановление базы из резервной копии СУБД.

Удаляйте старую версию платформы только через неделю-две спокойной работы. На Ubuntu это просто удаление её каталога или пакетов, а место она занимает небольшое.

Можно ли обновить сервер 1С без остановки работы пользователей?
Нет. Переключение службы на новую версию разрывает все сеансы. Простой при этом короткий: при заранее установленной новой версии переключение занимает несколько минут.
Нужно ли обновлять PostgreSQL вместе с платформой?
Не обязательно. Сборка PostgreSQL обновляется отдельно и по своим требованиям совместимости. Смешивать два обновления в одно окно не стоит: при сбое трудно понять, что виновато.
Слетят ли программные лицензии после обновления платформы?
Нет, если не меняется оборудование. Лицензия привязана к параметрам компьютера, а не к версии платформы. Файлы в /var/1C/licenses новая версия использует те же.
Можно ли держать на одном сервере две версии платформы и запускать обе?
Хранить можно сколько угодно. Запустить два сервера одновременно можно только с разными портами агента, менеджера и рабочих процессов, и это будут два разных кластера.
Как часто обновлять серверную платформу?
Когда этого требует релиз конфигурации или когда в новой версии исправлена ошибка, которая у вас проявляется. Гнаться за каждой сборкой на рабочем сервере не нужно.