Перевод сервера 1С:Предприятия на новую версию платформы в Debian

· 9 мин

Содержание

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

Способов поставить дистрибутив два: единый установщик setup-full-…-x86_64.run и набор deb-пакетов. Установщик удобнее, когда нужен выбор компонентов одной командой. Пакеты выбирают, если сервер обслуживается через apt и хочется, чтобы пакетный менеджер видел платформу. Порядок обновления у обоих вариантов одинаковый — ниже он расписан для системного администратора от проверки среды до диагностики.

1. Подготовка сервера Debian перед обновлением 1С

Сначала зафиксируйте, что стоит сейчас. Эти данные понадобятся и для обновления, и для отката.

cat /etc/debian_version          # версия Debian
ls /opt/1cv8/x86_64/             # установленные версии платформы
systemctl list-units --all 'srv1cv8*' 'ras*'   # службы сервера и RAS
ps -ef | grep -E 'ragent|rmngr|rphost' | grep -v grep
df -h /opt /home /var            # место на дисках

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

  • 🗂️ Резервная копия. Выгрузка или бэкап СУБД каждой базы кластера. Для PostgreSQL — pg_dump по каждой базе. Без копии баз к обновлению не переходите.
  • 💾 Каталог кластера. По умолчанию это /home/usr1cv8/.1cv8/1C/1cv8/. Там лежит реестр кластера (1cv8wsrv.lst, папки reg_1541). Скопируйте его целиком: sudo tar czf /root/srvinfo-backup.tgz /home/usr1cv8/.1cv8/1C/1cv8.
  • 💽 Место. Одна версия сервера с веб-расширением занимает несколько сотен мегабайт. Плюс сеансовые данные и журналы. Держите запас хотя бы 2–3 ГБ.
  • 🌐 Локаль. Сервер 1С работает с ru_RU.UTF-8. Проверьте: locale -a | grep -i ru_RU. Если пусто — sudo dpkg-reconfigure locales и отметьте ru_RU.UTF-8 UTF-8.
  • 🧩 Совместимость. Посмотрите в документации к новой сборке список поддерживаемых версий Debian и PostgreSQL. Особенно если переходите между крупными ветками платформы.

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

2. Откуда брать дистрибутив и какие репозитории Debian нужны

Публичного apt-репозитория у платформы нет. Дистрибутив скачивают с портала обновлений по подписке ИТС под нужную архитектуру:

ВариантЧто внутриКогда выбирать
setup-full-8.3.xx.xxxx-x86_64.runВсе компоненты: сервер, веб-расширение, клиенты, RASНужно выбрать компоненты одной командой
Архив deb-пакетов для 64-разрядного сервераОтдельные пакеты 1c-enterprise-<версия>-common, -server, -ws и др.Платформой управляют через apt/dpkg

Скачанный файл перенесите на сервер, например в /opt/distr/8.3.xx.xxxx/. Сверьте контрольную сумму, если она опубликована.

Репозитории самого Debian нужны для зависимостей. Шрифты Microsoft лежат в компоненте contrib, поэтому проверьте, что он подключён:

grep -rh '^deb\|^Components' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

В строке deb … или в поле Components: (формат deb822 в /etc/apt/sources.list.d/debian.sources) должны быть main contrib. Если contrib нет — допишите его и выполните sudo apt update.

Если серверов 1С несколько, удобно поднять локальный репозиторий из deb-пакетов платформы (например, через reprepro или простой каталог с dpkg-scanpackages). Тогда новую версию раскатывают одной командой apt install на всех узлах.

3. Зависимости и библиотеки для платформы 1С

Сервер 1С на Debian обычно требует шрифты, библиотеки работы со шрифтами и ODBC-обвязку. Базовый набор:

sudo apt update
sudo apt install fontconfig libfreetype6 libgsf-1-114 libglib2.0-0 unixodbc
sudo apt install ttf-mscorefonts-installer
sudo fc-cache -fv

Без шрифтов Microsoft печатные формы и отчёты, сформированные на сервере, «плывут»: съезжают колонки, меняется ширина текста.

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

ldd /opt/1cv8/x86_64/8.3.xx.xxxx/ragent | grep 'not found'

Каждая строка not found — имя библиотеки. Найти пакет поможет apt-file search <имя.so> (сначала sudo apt install apt-file && sudo apt-file update).

При установке deb-пакетов через apt install ./файл.deb зависимости подтянутся сами. Если ставили через dpkg -i и получили ошибку зависимостей, исправьте её командой sudo apt -f install.

4. Обновление сервера 1С на Debian пошагово

4.1. Установка новой версии рядом со старой

Вариант с установщиком .run:

cd /opt/distr/8.3.xx.xxxx
chmod +x setup-full-8.3.xx.xxxx-x86_64.run
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,ru

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

Вариант с deb-пакетами — из каталога с распакованным архивом:

sudo apt install ./1c-enterprise-8.3.xx.xxxx-common_*.deb \
                 ./1c-enterprise-8.3.xx.xxxx-server_*.deb \
                 ./1c-enterprise-8.3.xx.xxxx-ws_*.deb

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

Проверьте, что появился новый каталог: ls /opt/1cv8/x86_64/. Старая версия при этом не удаляется.

4.2. Переключение службы systemd

В современных сборках в каталоге версии лежит шаблон службы srv1cv8-<версия>@.service. Экземпляр default использует стандартный каталог кластера и порты 1540/1541.

OLD=8.3.22.1709        # подставьте свои номера
NEW=8.3.24.1586

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
systemctl status srv1cv8-$NEW@default

Новая служба подхватит тот же реестр кластера: базы, рабочие серверы и администраторы кластера сохранятся.

Если на старой версии служба запускалась init-скриптом srv1cv83 (параметры в /etc/default/srv1cv83), остановите её через sudo systemctl stop srv1cv83 и отключите автозапуск. Параметры из /etc/default/srv1cv83 (порты, каталог данных, отладка) перенесите в новую службу через sudo systemctl edit srv1cv8-$NEW@default.

Служба сервера администрирования RAS тоже привязана к версии. Если вы управляете кластером через rac или удалённую консоль, переключите и её — шаблон лежит в том же каталоге версии. Затем проверьте: /opt/1cv8/x86_64/$NEW/rac cluster list.

4.3. Веб-сервер Apache

Этот шаг чаще всего забывают. Модуль веб-расширения подключён в конфигурации Apache по полному пути с номером версии:

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

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

grep -rn '_1cws_module' /etc/apache2/
sudo sed -i "s#/x86_64/$OLD/wsap24.so#/x86_64/$NEW/wsap24.so#" /etc/apache2/conf-available/1c.conf   # путь к вашему файлу
sudo apachectl configtest && sudo systemctl restart apache2

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

4.4. Клиенты

Версия клиента должна совпадать с версией сервера до последней цифры. Варианты:

  • 🖥️ Клиенты на Linux — тот же установщик с компонентами client_full или client_thin.
  • 🪟 Клиенты на Windows — установка нужной версии платформы вручную или через групповые политики. Лаунчер 1cestart сам выберет установленную версию под сервер.
  • 🌍 Веб-клиент — обновляется вместе с модулем Apache, на рабочих местах ничего ставить не нужно.

Обновлять клиентов лучше в то же окно работ. Иначе утром пользователи увидят ошибку о несовпадении версий.

4.5. Кластер из нескольких серверов

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

  1. Остановите службы на всех узлах: сначала на дополнительных рабочих серверах, затем на центральном.
  2. Установите новую версию на каждый узел.
  3. Запустите службу на центральном сервере и убедитесь, что кластер виден через rac cluster list.
  4. Запустите службы на остальных узлах и проверьте в консоли, что все рабочие серверы в строю.

Если один узел остался на старой версии, он не сможет работать с кластером, а сеансы на нём будут завершаться ошибками.

4.6. Проверка после переключения

Перед тем как открыть доступ пользователям, пройдите короткий контроль:

Проверка сервера 1С после обновления
Выполнено: 0 / 7

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

5. Права, пользователь usr1cv8 и лицензии после обновления

Служба работает от пользователя usr1cv8 (группа grp1cv8). Установщик создаёт его при первой установке, при обновлении — использует существующего.

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

sudo find /home/usr1cv8/.1cv8 ! -user usr1cv8 -ls
sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8

То же касается каталогов технологического журнала и дампов: пользователь usr1cv8 должен иметь право записи в них.

Что происходит с лицензиями:

  • 🔑 Программная лицензия хранится в файлах в /var/1C/licenses. Обновление платформы её не затрагивает. Перевыпуск нужен, только если поменялось «железо» или параметры системы, к которым лицензия привязана. Проверьте, что usr1cv8 может читать этот каталог.
  • 🔌 Аппаратный ключ HASP работает через драйвер ключа для Linux. Обновление платформы драйвер не трогает, но после перезагрузки сервера убедитесь, что его служба запущена.

Не активируйте лицензию повторно «на всякий случай» — число повторных активаций ограничено, а старые файлы лицензий удалять при обновлении не нужно.

6. Диагностика: журналы, типичные сбои и откат

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

journalctl -u srv1cv8-$NEW@default -n 200 --no-pager
ss -tlnp | grep -E ':(1540|1541|15[6-9][0-9])\b'

Вторая команда показывает, кто занял порты. Если на 1540 висит процесс старой версии, значит, старая служба не остановилась.

Для подробной картины включают технологический журнал: файл logcfg.xml кладут в каталог conf платформы (в новых сборках — /opt/1cv8/conf/). Пример минимальной настройки, которая пишет исключения и сеансы с ошибками:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="/var/log/1c/techlog" history="24">
    <event><eq property="name" value="EXCP"/></event>
    <property name="all"/>
  </log>
</config>

Каталог /var/log/1c/techlog создайте заранее и отдайте его usr1cv8. После диагностики журнал отключите, иначе он займёт диск.

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

Если не помогло: откат на прежнюю версию

Старая версия осталась на диске, поэтому откат — это обратное переключение службы:

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

Верните прежний путь в LoadModule Apache и перезапустите веб-сервер. Если реестр кластера повреждён, остановите службу и восстановите каталог из архива srvinfo-backup.tgz.

После недели стабильной работы старую версию можно удалить: для пакетов — sudo apt remove по списку из dpkg -l | grep 1c-enterprise, для установки через .run — деинсталлятором в каталоге этой версии.

Частые вопросы об обновлении 1С на Debian

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