Переход сервера 1С на новую версию платформы в Ubuntu, Debian и CentOS без простоя и потери кластера

· 9 мин

Содержание

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

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

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

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

Три копии, без которых не начинайте

  • 🗄️ Копия баз данных. Для PostgreSQL — pg_dump каждой базы, для MS SQL на отдельном сервере — штатный бэкап СУБД. Выгрузка в .dt тоже подойдёт, но на больших базах она идёт часами.
  • 📁 Копия каталога кластера. По умолчанию это /home/usr1cv8/.1cv8/1C/1cv8/. Там лежит реестр кластера 1CV8Clst.lst, список баз, настройки рабочих серверов и сеансовые данные.
  • 🔑 Копия файлов программных лицензий. Обычно они в /var/1C/licenses/. Платформа их не удаляет, но при неудачных экспериментах с правами каталог иногда портят.
sudo systemctl stop srv1cv8-8.3.23.1865@default   # имя службы вашей текущей версии
sudo tar czf /root/srvinfo-$(date +%F).tar.gz /home/usr1cv8/.1cv8
sudo tar czf /root/licenses-$(date +%F).tar.gz /var/1C/licenses

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

Что проверить заранее

  1. Совместимость конфигураций. У каждой типовой конфигурации в описании релиза указана минимальная версия платформы. Новая платформа должна быть не ниже этого номера — и при этом поддерживаться конфигурацией.
  2. Версию СУБД. Новые выпуски платформы иногда требуют более свежую сборку PostgreSQL. Сверьте номер своей сборки со списком поддерживаемых в описании выпуска платформы.
  3. Клиентов. Версия клиента должна совпадать с версией сервера до последней цифры. Подумайте, как обновятся рабочие места: вручную, через автообновление или через общий каталог дистрибутивов.
  4. Свободное место. Одна версия сервера занимает несколько сотен мегабайт в /opt, плюс архив дистрибутива во временном каталоге.

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

Какой дистрибутив скачать и каким способом ставить

Дистрибутивы сервера берут на портале обновлений 1С в разделе «Технологическая платформа 8.3», выбрав нужную версию. Для Linux там лежат отдельные архивы для DEB-систем (Debian, Ubuntu, Astra) и для RPM-систем (CentOS, RHEL, РЕД ОС, Alma, Rocky).

Способ установки зависит от версии платформы:

Версия платформыЧто внутри архиваКуда ставитсяКак обновлять
До 8.3.20Набор пакетов 1c-enterprise83-*.deb или 1C_Enterprise83-*.rpm/opt/1C/v8.3/x86_64/Новая версия замещает старую в том же каталоге
8.3.20 и новееЕдиный установщик setup-full-<версия>-x86_64.run/opt/1cv8/x86_64/<версия>/Версии ставятся рядом, переключается служба

Если сейчас у вас платформа до 8.3.20, а ставите вы новую — это переход между двумя схемами. Старые пакеты и старый скрипт службы srv1cv83 придётся убрать вручную после проверки новой версии.

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

Обновление сервера 1С на Ubuntu и Debian

Пример ниже — переход с 8.3.23.1865 на 8.3.24.1691. Номера подставьте свои: они нужны в путях и в имени службы.

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

Эту часть можно сделать днём, служба продолжает работать.

NEW=8.3.24.1691
tar xzf server64_8_3_24_1691.tar.gz
chmod +x setup-full-$NEW-x86_64.run
sudo ./setup-full-$NEW-x86_64.run --mode unattended --enable-components server,ws

Компонент server — сам сервер 1С, ws — модуль веб-сервера для публикаций. Список остальных компонентов (консоль администрирования, сервер хранилища) покажет запуск установщика с ключом --help.

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

ls /opt/1cv8/x86_64/

Шаг 2. Проверить зависимости до переключения

Скрытый приём, который экономит окно обновления: прогоните ldd по главным бинарникам новой версии. Отсутствующая библиотека всплывёт сейчас, а не в момент, когда пользователи уже отключены.

ldd /opt/1cv8/x86_64/$NEW/ragent | grep "not found"
ldd /opt/1cv8/x86_64/$NEW/rphost | grep "not found"

Пустой вывод — всё на месте. Если что-то не найдено, доставьте пакет через apt. Для корректной печати форм на сервере обычно ставят ещё шрифты Microsoft (ttf-mscorefonts-installer) и fontconfig.

Шаг 3. Переключить службу

С этого момента пользователи отключаются. Предупредите их заранее.

OLD=8.3.23.1865
NEW=8.3.24.1691
sudo systemctl stop srv1cv8-$OLD@default
sudo systemctl disable srv1cv8-$OLD@default
sudo systemctl link /opt/1cv8/x86_64/$NEW/srv1cv8-$NEW@.service
sudo systemctl enable --now srv1cv8-$NEW@default

Если старая версия ниже 8.3.20 и запускалась скриптом srv1cv83, остановите и отключите именно его:

sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83

Шаг 4. Убедиться, что сервер ожил

systemctl status srv1cv8-$NEW@default
ss -tlnp | grep -E ':154[01]'

Агент сервера слушает порт 1540, менеджер кластера — 1541, рабочие процессы — диапазон, заданный в свойствах рабочего сервера (по умолчанию 1560–1591). Затем откройте консоль администрирования новой версии: кластер, список баз и рабочие серверы должны быть прежними.

Старые пакеты до 8.3.20

Если вы обновляетесь в пределах старой схемы, пакеты ставят поверх:

sudo systemctl stop srv1cv83
sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb 1c-enterprise83-ws_*.deb
sudo systemctl start srv1cv83

Ставьте common раньше server: серверный пакет зависит от него. Пакеты с суффиксом -nls нужны для языков интерфейса, кроме русского и английского.

Обновление на CentOS, RHEL и их наследниках

Для RPM-систем логика та же: установка рядом, переключение службы, проверка. Отличия — в менеджере пакетов, файрволе и SELinux.

  1. Установите новую версию тем же установщиком setup-full-<версия>-x86_64.run из архива для RPM-систем, с теми же ключами.
  2. Зависимости ставьте через dnf (на старых системах — yum). Проверка через ldd из раздела про Ubuntu работает без изменений.
  3. Переключите службу командами systemctl, как описано выше.
  4. Убедитесь, что порты открыты в firewalld. После переустановки они не закрываются, но на новом сервере их часто забывают:
sudo firewall-cmd --permanent --add-port=1540-1541/tcp --add-port=1560-1591/tcp
sudo firewall-cmd --reload
  1. Если служба стартует и сразу падает без внятной ошибки в журнале — проверьте SELinux командой getenforce и поищите отказы в /var/log/audit/audit.log. Правильный путь — разрешить нужные действия политикой, а не отключать SELinux на весь сервер.

Для платформ до 8.3.20 обновление пакетами выглядит так:

sudo systemctl stop srv1cv83
sudo rpm -Uvh 1C_Enterprise83-common-*.rpm 1C_Enterprise83-server-*.rpm 1C_Enterprise83-ws-*.rpm
sudo systemctl start srv1cv83

CentOS 7 и CentOS 8 больше не получают обновлений безопасности. Если сервер 1С всё ещё на них, плановое обновление платформы — хороший повод спланировать и переезд ОС на поддерживаемый дистрибутив.

Права пользователя usr1cv8, служба и веб-публикации

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

Верните владельца каталогам, с которыми работает сервер:

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

Не забудьте про Apache

Это главный шаг, который пропускают. В конфигурации Apache путь к модулю веб-сервиса содержит номер версии:

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

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

Найдите строку и замените номер:

grep -rn "wsap24.so" /etc/apache2/ /etc/httpd/ 2>/dev/null
sudo apachectl configtest && sudo systemctl restart apache2   # на RPM-системах: httpd

Перезапуск Apache обрывает текущие сеансы веб-клиента, так что делайте его в то же окно, что и переключение сервера.

Клиенты на рабочих местах

Тонкий клиент другой версии при подключении сообщит, что версии клиента и сервера различаются. Варианты решения:

  • 💻 поставить нужную версию клиента на каждое рабочее место вручную или через групповые политики;
  • 🔄 настроить автоматическое обновление клиентов из общего сетевого каталога с дистрибутивами;
  • 🌐 для терминального сервера — обновить платформу там в то же окно, что и сервер 1С.

Как откатиться, если новая версия не взлетела

Раздельные каталоги версий делают откат быстрым. Порядок такой:

  1. Остановите и отключите службу новой версии: systemctl disable --now srv1cv8-<новая>@default.
  2. Если новая версия успела поработать с кластером, восстановите каталог /home/usr1cv8/.1cv8 из архива, снятого перед обновлением. Новая версия могла изменить формат служебных файлов, и старая на них споткнётся.
  3. Включите службу старой версии: systemctl enable --now srv1cv8-<старая>@default.
  4. Верните в Apache путь к модулю старой версии и перезапустите веб-сервер.

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

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

Старую версию удаляйте не сразу, а через неделю-две спокойной работы. Для версий 8.3.20 и новее в её каталоге есть деинсталлятор; для старых пакетов — apt remove или dnf remove по списку из dpkg -l | grep 1c-enterprise или rpm -qa | grep 1C_Enterprise.

Ошибки запуска и где искать причину

Первое место для поиска — журнал службы:

journalctl -u srv1cv8-8.3.24.1691@default -n 100 --no-pager

Если журнал пуст или неинформативен, включите технологический журнал. Файл logcfg.xml кладут в каталог conf: для версий 8.3.20+ это обычно /opt/1cv8/conf/, для старых — /opt/1C/v8.3/x86_64/conf/. Каталог для логов должен быть доступен на запись пользователю usr1cv8, иначе журнал молча не пишется.

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

Ещё одна частая причина пустого кластера — каталог srvinfo восстановили из архива, но не в тот путь. Распакуйте архив и сравните пути до файла 1CV8Clst.lst с тем, что ждёт служба.

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

Можно ли держать на одном сервере Linux две версии платформы 1С?
Да. С версии 8.3.20 каждая версия ставится в свой каталог. Одновременно запустить два кластера можно, но им нужны разные порты агента, менеджера и рабочих процессов, иначе вторая служба не стартует.
Нужно ли обновлять конфигурацию баз после обновления платформы?
Нет, это независимые операции. Платформа меняет программу сервера, конфигурация — прикладное решение в базе. Конфигурацию обновляют отдельно, когда выходит её новый релиз.
Слетит ли программная лицензия при обновлении платформы?
Нет, если не менялось оборудование сервера и параметры, к которым привязан ключ. Файлы лицензий лежат отдельно от каталога платформы и установщиком не трогаются.
Сколько длится простой пользователей?
Если новая версия установлена и проверена заранее, переключение службы и перезапуск Apache занимают несколько минут. Дольше идёт только обновление клиентов на рабочих местах.
Можно ли пропустить несколько версий платформы и обновиться сразу на последнюю?
Да, промежуточные версии ставить не нужно. Важно лишь, чтобы новая версия поддерживалась конфигурациями ваших баз и сборкой СУБД.