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

· 10 мин

Содержание

Платформу 1С 8.3 на Ubuntu обновляют так: скачивают дистрибутив сервера новой версии, ставят его рядом со старым (/opt/1cv8/x86_64/<новая версия>/), выключают службу старой версии и включают службу новой. Старая версия при этом остаётся на диске — откат занимает пару минут. После переключения правят путь к модулю веб-сервера в конфиге Apache и обновляют клиенты на рабочих местах до того же номера.

Речь именно о платформе — серверных компонентах ragent, rmngr, rphost, модуле веб-расширения и RAS. Обновление конфигурации (БП, ЗУП, УТ) — отдельная операция через конфигуратор, она с переустановкой платформы не связана.

1. Подготовка сервера Ubuntu к обновлению 1С

Перед установкой новой версии соберите сведения о текущей. Минимальный набор команд:

# какие версии платформы уже стоят
ls /opt/1cv8/x86_64/ 2>/dev/null; ls /opt/1C/v8.3/x86_64/ 2>/dev/null

# какая версия реально запущена (путь к ragent содержит номер)
ps -o args= -C ragent

# службы 1С в systemd
systemctl list-units --all | grep -E 'srv1cv8|srv1cv83|ras'

Запишите номер текущей версии и имя службы — они понадобятся для отката.

Что проверить и сохранить:

  • 📦 Резервные копии баз. Платформа на данные в СУБД не влияет, но если после перехода сразу понадобится обновлять конфигурацию, копия должна быть. Для PostgreSQL — pg_dump каждой базы.
  • 🗂 Реестр кластера. Каталог /home/usr1cv8/.1cv8/1C/1cv8/ хранит список информационных баз, настройки рабочих серверов, администраторов кластера. Скопируйте его целиком.
  • 🔑 Лицензии. Программные лицензии лежат в /var/1C/licenses/. Обновление платформы их не трогает, но копия на случай ошибки не помешает. Для аппаратных ключей проверьте, что драйвер HASP (aksusbd) работает.
  • 📋 Системные требования новой версии. Посмотрите, поддерживает ли выбранный релиз вашу версию Ubuntu и СУБД. Особенно это важно при связке с PostgreSQL: сборки для 1С выпускают под определённые версии платформы.
  • 🕐 Окно работ. На время переключения службы все пользователи отключатся. Выбирайте вечер или выходной и предупредите людей заранее.
sudo tar czf /root/licenses-$(date +%F).tar.gz /var/1C/licenses

Архив реестра кластера делайте позже, на шаге остановки службы: при работающем сервере файлы реестра могут меняться во время копирования.

2. Два способа обновить платформу 1С на Ubuntu

Способ зависит от того, какая версия стоит сейчас и какую вы ставите. С версии 8.3.20 фирма поставляет для Linux универсальный установщик setup-full-…-x86_64.run, и новые версии ставятся каждая в свой каталог. До этого сервер ставили deb-пакетами 1c-enterprise83-*, и новая версия заменяла старую.

СпособКогдаПлюсыРиски
Установщик .runСтавите 8.3.20 и новееВерсии живут параллельно, откат — переключение службыНужно вручную перевести службу и Apache на новый каталог
deb-пакетыСтарые версии до 8.3.20Привычный dpkg/aptНовая версия вытесняет старую, откат — переустановкой
Смешанный переходС 8.3.1x на 8.3.2xРазовая операцияОстаётся старая служба srv1cv83, её надо отключить

💡 Если сейчас стоит старая версия из deb-пакетов, а ставите современную — это и есть смешанный переход. Старые пакеты не удаляйте до проверки: просто отключите их службу.

Что скачать

На портале обновлений выберите «Технологическая платформа 8.3», нужную версию и дистрибутив «Сервер 1С:Предприятия (64-bit) для DEB-based Linux-систем». Внутри архива — файл установщика. Скопируйте его на сервер, например в /tmp/1c/.

3. Пошаговое обновление серверных компонентов ragent, rmngr и ws

Ниже — порядок для установщика .run. В примерах старая версия 8.3.22.1709, новая 8.3.24.1467: подставьте свои номера.

Шаг 1. Установите новую версию рядом со старой

cd /tmp/1c
tar xzf server64_8_3_24_1467.tar.gz
chmod +x setup-full-8.3.24.1467-x86_64.run
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components server,ws

Компонент server — это ragent, rmngr, rphost и ras. Компонент ws — модули веб-сервера. Полный список компонентов и ключей показывает ./setup-full-….run --help. Пока ничего не переключено, базы продолжают работать на старой версии.

Если установщик ругается на зависимости, доустановите типовой набор и запустите снова:

sudo apt update
sudo apt install -y fontconfig ttf-mscorefonts-installer libgsf-1-114

Шаг 2. Остановите и отключите службу старой версии

sudo systemctl stop srv1cv8-8.3.22.1709@default
sudo systemctl disable srv1cv8-8.3.22.1709@default

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

Сразу после остановки сохраните реестр кластера:

sudo tar czf /root/srvinfo-$(date +%F).tar.gz /home/usr1cv8/.1cv8/1C/1cv8

Для старой схемы из deb-пакетов служба называется иначе:

sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83

Убедитесь, что процессов старой версии не осталось: ps -o args= -C ragent,rmngr,rphost. Пустой вывод — порты 1540–1541 свободны.

Шаг 3. Подключите и запустите службу новой версии

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

sudo systemctl link /opt/1cv8/x86_64/8.3.24.1467/srv1cv8-8.3.24.1467@.service
sudo systemctl enable srv1cv8-8.3.24.1467@default
sudo systemctl start srv1cv8-8.3.24.1467@default

Экземпляр @default работает от пользователя usr1cv8 с каталогом данных /home/usr1cv8/.1cv8/1C/1cv8/ и портом агента 1540. Реестр кластера — общий для всех версий, поэтому список баз и настройки рабочего сервера подхватятся без повторной регистрации.

Две службы разных версий с одинаковыми портами одновременно не запустятся: вторая упадёт с ошибкой занятого порта. Поэтому шаг 2 обязателен.

4. Веб-сервер и консоль RAS после смены версии

Это шаг, который чаще всего забывают. Публикации баз продолжают ссылаться на модуль старой версии, и веб-клиент с HTTP-сервисами начинают выдавать ошибку несоответствия версий.

Apache

Найдите все строки с модулем 1С:

grep -rn "wsap24" /etc/apache2/

Строка выглядит так:

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

Замените номер версии на новый во всех найденных файлах, проверьте синтаксис и перезапустите Apache:

sudo sed -i 's#/8.3.22.1709/wsap24.so#/8.3.24.1467/wsap24.so#' /etc/apache2/apache2.conf
sudo apachectl configtest
sudo systemctl restart apache2

Если строка с LoadModule у вас в отдельном файле из conf-available или sites-available — правьте его. Файлы default.vrd в каталогах публикаций менять не нужно: путь к платформе в них не записан.

Новые публикации удобнее делать утилитой webinst из каталога новой версии — она сама пропишет правильный путь к модулю.

RAS и консоль администрирования

Сервер администрирования ras тоже привязан к версии. Если вы запускали его своим юнитом или скриптом, поправьте в нём путь к исполняемому файлу. Ручной запуск выглядит так:

sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1467/ras cluster --daemon

Консоль кластера на Windows-машине администратора должна быть той же версии, что и сервер. Иначе подключение к RAS по порту 1545 даст ошибку версии.

5. Как проверить, что платформа 1С на Ubuntu обновилась

Пять проверок за пять минут:

  1. Служба активна: systemctl status srv1cv8-8.3.24.1467@default — статус active (running).
  2. Запущена нужная версия: ps -o args= -C ragent — в пути должен быть новый номер.
  3. Порты слушаются: ss -tlnp | grep -E ':154[0-1]' — агент на 1540, менеджер кластера на 1541. Рабочие процессы займут порты из диапазона, заданного в свойствах рабочего сервера (по умолчанию 1560–1591).
  4. Кластер виден через RAS: /opt/1cv8/x86_64/8.3.24.1467/rac cluster list — выводит кластер и его параметры. Список сеансов: rac session list --cluster=<id кластера>.
  5. Журнал без ошибок: journalctl -u srv1cv8-8.3.24.1467@default --since "15 min ago".

Затем откройте базу тонким клиентом и веб-клиентом. Первый вход после смены версии может занять дольше обычного: сервер заново формирует кеш конфигурации.

Что настроить после перехода

  • ⚙️ Клиенты на рабочих местах. Тонкий клиент должен совпадать с сервером по номеру версии до последней цифры. Удобнее всего опубликовать дистрибутив клиента в общей папке и указать его в настройках 1cestart — клиенты обновятся при входе. Без этого пользователь увидит ошибку Несоответствие версий клиента и сервера.
  • 📊 Параметры рабочего сервера. Откройте свойства рабочего сервера в консоли и проверьте лимиты памяти и число рабочих процессов. Они хранятся в реестре кластера и должны сохраниться, но после крупного скачка версий нелишне сверить.
  • 🧾 Технологический журнал. Если вы вели его, проверьте, что файл logcfg.xml лежит там, где его ищет новая версия, и каталог журнала доступен на запись пользователю usr1cv8.
  • 🧹 Старый кеш. Если после перехода формы открываются с ошибками или ведут себя странно, очистите сеансовые данные сервера (см. таблицу ошибок ниже).

6. Ошибки после обновления 1С на Ubuntu и что с ними делать

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

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

Если ошибка не из этого списка, начните с журнала службы (journalctl -u …) и файлов дампов в каталоге данных кластера: в них обычно видно, какой модуль или библиотека не загрузились.

7. Как откатить обновление платформы на прежнюю версию

При установке через .run откат — это то же переключение, только в обратную сторону:

sudo systemctl stop srv1cv8-8.3.24.1467@default
sudo systemctl disable srv1cv8-8.3.24.1467@default
sudo systemctl enable srv1cv8-8.3.22.1709@default
sudo systemctl start srv1cv8-8.3.22.1709@default

Затем верните старый путь в LoadModule Apache и перезапустите веб-сервер. Клиентам, которые уже успели обновиться, менять ничего не нужно: на рабочем месте может стоять несколько версий, и 1cestart выберет подходящую.

Есть ограничение. Если после перехода на новую платформу вы успели обновить конфигурацию до релиза, которому нужна именно новая версия, откат платформы этой базе не поможет — она просто не откроется. Тогда вариант один: восстановить базу из копии, сделанной до обновления.

Не удаляйте каталог старой версии хотя бы неделю. Когда всё стабильно, удалить её можно через деинсталлятор в каталоге версии или пакетным менеджером, если ставили deb-пакетами. Для смешанного перехода старые пакеты убирают командой sudo apt remove "1c-enterprise83-*".

8. Автоматизация: скрипт обновления с отчётом в Telegram

Если серверов несколько или обновления идут каждый квартал, шаги 2–5 удобно собрать в один скрипт. Он останавливает старую службу, включает новую, правит Apache, проверяет результат и присылает отчёт.

#!/bin/bash
# upgrade-1c.sh OLD NEW, например: upgrade-1c.sh 8.3.22.1709 8.3.24.1467
set -u
OLD="$1"; NEW="$2"
BASE=/opt/1cv8/x86_64
TG_TOKEN="${TG_TOKEN:?нужен токен бота}"
TG_CHAT="${TG_CHAT:?нужен chat_id}"
APACHE_CONF=/etc/apache2/apache2.conf

report() {
  curl -s "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
    --data-urlencode chat_id="$TG_CHAT" \
    --data-urlencode text="$(hostname): $1" > /dev/null
}

[ -x "$BASE/$NEW/ragent" ] || { report "версия $NEW не установлена"; exit 1; }

# 1. остановка старой службы
systemctl stop "srv1cv8-$OLD@default"
systemctl disable "srv1cv8-$OLD@default"

# 2. запуск новой
systemctl link "$BASE/$NEW/srv1cv8-$NEW@.service"
systemctl enable "srv1cv8-$NEW@default"
systemctl start "srv1cv8-$NEW@default"

# 3. Apache
sed -i "s#/$OLD/wsap24.so#/$NEW/wsap24.so#" "$APACHE_CONF"
apachectl configtest && systemctl restart apache2

# 4. проверка
sleep 10
RUNNING=$(ps -o args= -C ragent | grep -c "/$NEW/")
if systemctl is-active --quiet "srv1cv8-$NEW@default" && [ "$RUNNING" -gt 0 ]; then
  report "1С обновлена: $OLD -> $NEW, служба активна"
else
  report "ОШИБКА обновления 1С $OLD -> $NEW, смотрите journalctl"
  exit 1
fi

Запуск: sudo TG_TOKEN=… TG_CHAT=… ./upgrade-1c.sh 8.3.22.1709 8.3.24.1467. Токен бота храните в отдельном файле с правами 600, а не в теле скрипта.

Сам дистрибутив скрипт не ставит намеренно: установку новой версии удобнее делать заранее, днём, без остановки баз. Переключение — уже в окно работ, одной командой. Если apache2.conf у вас не единственный файл с модулем, добавьте в скрипт остальные пути или замените sed по одному файлу на grep -rl wsap24 /etc/apache2 | xargs sed -i ….

Перед запуском скрипта в окно работ
Выполнено: 0 / 5

Частые вопросы

Нужно ли заново регистрировать базы в кластере после обновления платформы?
Нет. Список баз хранится в реестре кластера в каталоге usr1cv8, общем для всех версий. Новая служба подхватит его сама.
Можно ли держать на одном сервере Ubuntu две версии платформы одновременно?
Установленными — да, в разных каталогах. Запущенными на одних портах — нет. Чтобы держать два работающих кластера, второму нужен свой экземпляр службы с другими портами и каталогом данных.
Надо ли обновлять PostgreSQL вместе с платформой?
Не обязательно. Проверьте в системных требованиях нового релиза, поддерживает ли он вашу версию СУБД. Если поддерживает, PostgreSQL можно не трогать.
Обновятся ли клиенты на Windows сами?
Только если настроено автообновление через 1cestart и указан путь к дистрибутиву новой версии. Иначе клиент нужно поставить вручную на каждое рабочее место.
Сколько длится простой при обновлении?
Если новая версия поставлена заранее, переключение службы и Apache занимает 5–10 минут. Дольше идёт только первый вход в базы, пока сервер строит кеш конфигурации.