Новая платформа на сервере 1С под Linux: установка рядом со старой, переключение службы и откат

· 9 мин

Содержание

Сервер 1С на Linux обновляют так: ставят новую версию платформы рядом со старой, останавливают службу старой версии, подключают systemd-юнит новой и запускают его на тех же портах. Старая версия остаётся в своём каталоге, поэтому откат занимает пару минут. Конфигурации баз при этом не меняются: обновляется только платформа.

Ниже — порядок для платформы 8.3.20 и новее, где дистрибутив для Linux поставляется единым установщиком setup-full-*.run, а файлы ложатся в /opt/1cv8/x86_64/<версия>/. Для старых сборок на пакетах deb/rpm отличия указаны отдельно. Команды даны для Ubuntu/Debian; на RHEL-подобных системах меняется только менеджер пакетов.

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

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

  • 🧩 Требования конфигураций. В описании каждого релиза конфигурации указан минимальный номер платформы. Убедитесь, что все базы кластера работают на выбранной версии: номер платформы должен быть не ниже требуемого.
  • 🐘 Версия СУБД. Если базы на PostgreSQL, сверьте, какие сборки PostgreSQL поддерживает новая платформа. Платформу и СУБД одновременно не обновляйте: два изменения сразу не дадут понять, что сломалось.
  • 🖥️ Клиенты. Версия клиента должна совпадать с версией сервера до последней цифры. Если на рабочих местах стоит 8.3.24.1467, а сервер станет 8.3.25.1374, подключиться пользователи не смогут, пока клиенты не обновятся.
  • 🔑 Лицензии. Программные лицензии привязаны к параметрам оборудования, а не к номеру платформы. Смена версии их не сбрасывает, но перед работой сделайте копию каталога лицензий (обычно /var/1C/licenses).
  • 💾 Место на диске. Каждая версия платформы занимает около 1–1,5 ГБ. Проверьте df -h /opt и заодно место под резервную копию базы .

Отдельно посмотрите, как сейчас запущен сервер. Это определит, какую службу останавливать:

systemctl list-units --type=service | grep -i 1c
ls /opt/1cv8/x86_64/ 2>/dev/null; ls /opt/1C/v8.3/x86_64/ 2>/dev/null

Если сервер работает через srv1cv8-8.3.xx.xxxx@default, это новая схема. Если через srv1cv83 (скрипт в /etc/init.d) — старая пакетная установка. Переход со старой схемы на новую описан ниже, в разделе про запуск службы.

Перед обновлением сервера 1С
Выполнено: 0 / 6

Где взять дистрибутив сервера 1С для Linux и как не сломать пакеты

У фирмы 1С нет публичного apt- или yum-репозитория для платформы. Дистрибутив скачивают с портала релизов по подписке на ИТС: раздел «Технологическая платформа», нужная версия, файл «Технологическая платформа 1С:Предприятия (64-bit) для Linux». Внутри архива лежит установщик вида setup-full-8.3.25.1374-x86_64.run.

Какой файл брать:

Сборка платформыЧто в архивеКуда ставится
8.3.20 и новееединый установщик setup-full-*.run/opt/1cv8/x86_64/<версия>/
до 8.3.20набор пакетов 1c-enterprise83-common, -server, -ws и др./opt/1C/v8.3/x86_64/

Разница принципиальная. Старые пакеты ставились в один общий каталог, и новая версия затирала предыдущую. Установщик 8.3.20+ раскладывает каждую версию в свой каталог, поэтому две-три платформы спокойно живут на одном сервере.

Скопируйте архив на сервер, распакуйте и дайте установщику право на запуск:

scp server64_8_3_25_1374.tar.gz admin@srv1c:/tmp/
cd /tmp && tar xzf server64_8_3_25_1374.tar.gz
chmod +x setup-full-8.3.25.1374-x86_64.run

Теперь о репозиториях системы. Опасность не в платформе 1С, а в соседях. Плановый apt upgrade может подтянуть новую версию PostgreSQL или системных библиотек в тот же вечер, когда вы меняете платформу.

Закрепите пакеты СУБД, чтобы они обновлялись только по вашему решению: sudo apt-mark hold <имя пакета postgresql>. Список закреплённых пакетов показывает apt-mark showhold, снять закрепление — apt-mark unhold.

Если на сервере включены автоматические обновления (unattended-upgrades), на время работ их лучше приостановить.

Остановка службы 1С и резервные копии

Этот этап нельзя сокращать. Платформа меняется на работающем сервере, и всё, что пойдёт не так, придётся возвращать из копий.

Шаг 1. Запретите новые сеансы и предупредите людей

Заранее сообщите пользователям время работ. В консоли кластера в свойствах каждой базы включите блокировку начала сеансов и укажите сообщение. С Linux-машины без графики то же делается через rac, если запущен сервер администрирования ras:

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

Параметры блокировки и завершения сеансов у rac зависят от версии. Точный синтаксис посмотрите в справке: rac help infobase и rac help session.

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

Шаг 2. Сделайте копию баз средствами СУБД

Выгрузка .dt для большой базы идёт долго и требует монопольного доступа. На сервере с PostgreSQL быстрее и надёжнее штатный дамп:

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

Для каждой базы — свой файл. Проверьте, что файлы не нулевого размера.

Шаг 3. Остановите службу и сохраните настройки кластера

sudo systemctl stop srv1cv8-8.3.24.1467@default
# старая схема:
# sudo systemctl stop srv1cv83

После остановки скопируйте каталог данных кластера. По умолчанию это /home/usr1cv8/.1cv8/1C/1cv8. В нём лежат список кластеров 1cv8wsrv.lst и реестр кластера в подкаталоге reg_1541 — список баз, администраторы, рабочие серверы.

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

Без этой копии ошибка при запуске новой версии может оставить вас без зарегистрированных баз в кластере. Сами данные баз в СУБД не пострадают, но регистрировать всё заново долго.

Установка новых пакетов платформы на Linux

Установщик работает и в графическом, и в текстовом режиме. На сервере без графики удобен режим без вопросов:

sudo ./setup-full-8.3.25.1374-x86_64.run --mode unattended --enable-components server,ws,server_admin

Что означают компоненты:

  • server — сам сервер 1С:Предприятия (агент, менеджер кластера, рабочие процессы);
  • ws — модуль расширения веб-сервера, нужен для публикации баз через Apache;
  • server_admin — сервер администрирования ras и утилита rac.

Набор и названия компонентов иногда меняются между версиями. Полный список для своего дистрибутива выведите командой ./setup-full-8.3.25.1374-x86_64.run --help. Клиентские компоненты на сервер ставить не нужно, если на нём никто не работает интерактивно.

После установки проверьте, что каталог новой версии появился и в нём есть исполняемые файлы сервера:

ls /opt/1cv8/x86_64/
ls /opt/1cv8/x86_64/8.3.25.1374/ | grep -E 'ragent|rac|ras|srv1cv8'

Если установщик ругается на отсутствующие библиотеки, доставьте их из системного репозитория и запустите установку ещё раз. Чаще всего не хватает пакетов шрифтов и fontconfig — без них сервер не сформирует печатные формы и PDF.

Обновление на старой пакетной схеме

На сборках до 8.3.20 обновление выглядит иначе: старые пакеты удаляют, новые ставят поверх.

dpkg -l | grep 1c-enterprise
sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb 1c-enterprise83-ws_*.deb

Каталог данных кластера при этом не трогается, но версия в /opt/1C/v8.3/x86_64/ будет заменена. Поэтому быстрого отката здесь нет: только переустановка прежних пакетов. Это весомый довод перейти на единый установщик при ближайшем обновлении.

Запуск кластера на новой версии сервера 1С

В каталоге каждой версии лежит шаблон systemd-юнита srv1cv8-<версия>@.service. Его подключают к systemd, выключают юнит старой версии и включают новый.

OLD=8.3.24.1467
NEW=8.3.25.1374

sudo systemctl disable srv1cv8-$OLD@default
sudo systemctl link /opt/1cv8/x86_64/$NEW/srv1cv8-$NEW@.service
sudo systemctl enable srv1cv8-$NEW@default
sudo systemctl start srv1cv8-$NEW@default
systemctl status srv1cv8-$NEW@default

Суффикс @default означает экземпляр со стандартными параметрами: порты агента 1540, менеджера кластера 1541, диапазон рабочих процессов 1560–1591, данные в /home/usr1cv8/.1cv8/1C/1cv8. Новая версия подхватит тот же каталог данных, и все базы окажутся на месте.

Если у старого сервера были нестандартные порты или каталог данных, перенесите их. Посмотрите, как был настроен старый юнит, и задайте те же значения для нового через systemctl edit:

systemctl cat srv1cv8-$OLD@default
sudo systemctl edit srv1cv8-$NEW@default

Самая частая ошибка при обновлении на Linux — стартовать новый юнит, не выключив старый. Оба пытаются занять порт 1540, второй падает, а в логе видно только «адрес уже используется».

Переход со старого srv1cv83 на systemd-юнит

Если раньше сервер запускался скриптом /etc/init.d/srv1cv83, его настройки (порты, каталог данных, отладка) хранились в /etc/default/srv1cv83 или /etc/sysconfig/srv1cv83. Перед переходом выпишите оттуда значения, затем отключите старую службу командой sudo systemctl disable srv1cv83 и подключайте новый юнит по схеме выше.

Сервер администрирования ras

Консоль кластера на Windows и утилита rac работают через ras (порт 1545 по умолчанию). Его тоже нужно запустить из каталога новой версии:

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

Если ras у вас оформлен отдельной службой, поменяйте в ней путь к исполняемому файлу на новую версию.

Клиенты

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

СпособКогда подходитМинус
Установка клиента вручнуюдо 10 рабочих местдолго и легко пропустить машину
Групповые политики, скрипт развёртываниядомен, много компьютеровнужна предварительная настройка
Автообновление клиента через веб-серверсмешанный парк, удалённые сотрудникинужна публикация дистрибутива
Тонкий клиент через терминальный сервервсе работают в RDPобновляется один терминальный сервер

Сервер 1С не запустился после обновления: диагностика и логи

Если что-то пошло не так, идите от простого к сложному.

  1. Состояние службы. systemctl status srv1cv8-<версия>@default покажет, работает ли процесс, и последние строки вывода.
  2. Журнал systemd. journalctl -u srv1cv8-<версия>@default -n 100 --no-pager — здесь видны ошибки загрузки библиотек и проблемы с правами.
  3. Порты. ss -tlnp | grep -E '154[015]' — кто слушает 1540, 1541 и 1545. Если там процесс старой версии, вы не остановили прежнюю службу.
  4. Права. Каталог данных кластера должен принадлежать пользователю usr1cv8. После ручного копирования или распаковки из бэкапа права слетают: sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8.
  5. Технологический журнал. Если служба работает, но базы ведут себя странно, включите технологический журнал: файл logcfg.xml кладут в каталог conf платформы. Пишите только нужные события и ограничьте срок хранения — журнал быстро занимает диск.
Диагностика: выберите симптом

Очистка сеансового кэша (snccntx* в каталоге reg_1541) делается только при остановленной службе, а значит, при отключённых пользователях. Сам реестр 1CV8Clst.lst при этом не трогайте.

Как откатиться на прежнюю платформу

Ради этого и ставят версии рядом. Если новая платформа ведёт себя плохо, а разбираться нет времени, верните старую:

sudo systemctl stop srv1cv8-$NEW@default
sudo systemctl disable srv1cv8-$NEW@default
sudo systemctl enable srv1cv8-$OLD@default
sudo systemctl start srv1cv8-$OLD@default

Клиенты, которые успели обновиться, тоже придётся вернуть на прежнюю версию: правило совпадения номеров работает в обе стороны.

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

Каталоги старых версий удаляйте через неделю-две стабильной работы. В каталоге каждой версии есть свой деинсталлятор. Держать больше двух-трёх версий нет смысла: они только занимают место.

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

Нужно ли обновлять конфигурации баз после смены платформы?
Нет. Платформа и конфигурация обновляются независимо. Базы продолжат работать на прежних релизах, если те поддерживают новую версию платформы.
Можно ли держать на одном Linux-сервере два кластера разных версий?
Да, если они на разных портах. Для второго экземпляра задайте свой порт агента, менеджера кластера, диапазон рабочих процессов и отдельный каталог данных.
Сколько обычно занимает обновление сервера 1С?
Сама установка и переключение службы — 10–20 минут. Основное время уходит на резервные копии баз и обновление клиентов на рабочих местах.
Слетят ли программные лицензии после обновления платформы?
Нет, если не меняется оборудование. Лицензия привязана к параметрам компьютера, а не к номеру версии платформы.
Как обновить сервер, если на нём опубликованы базы через Apache?
Установите компонент ws новой версии, поменяйте в конфигурации Apache путь к модулю на каталог новой платформы и перезапустите Apache.