Переход сервера и клиентов 1С:Предприятия 8.3 на новую версию в Linux

· 10 мин

Содержание

Чтобы обновить 1С на Linux, скачайте с портала поддержки дистрибутив новой версии платформы, поставьте его рядом со старой (с 8.3.20 версии живут в отдельных каталогах /opt/1cv8/x86_64/8.3.xx.yyyy), остановите службу старого сервера, включите службу новой версии и обновите клиенты до того же номера. Конфигурации баз при этом не трогаются: смена платформы и обновление конфигурации — две разные операции.

Ниже порядок для сервера 1С:Предприятия 8.3 и клиентских мест на Debian, Ubuntu, Astra Linux, РЕД ОС и других дистрибутивах. Команды даны для платформы 8.3.20 и новее; где у старых версий другое поведение, это сказано отдельно.

Подготовка сервера и рабочих мест к обновлению

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

  1. Узнайте текущую версию. На сервере: ls /opt/1cv8/x86_64/ (новая схема) или ls /opt/1C/v8.3/x86_64/ (пакеты до 8.3.20). Запущенную службу покажет systemctl list-units | grep srv1cv8.
  2. Проверьте совместимость. Новая версия платформы должна поддерживать релизы конфигураций, которые у вас стоят. Требования к минимальной версии платформы указаны в описании каждого релиза конфигурации.
  3. Сохраните реестр кластера. Это каталог служебного пользователя, по умолчанию /home/usr1cv8/.1cv8/1C/1cv8/. В нём файл 1cv8wsrv.lst и папка reg_1541 с файлом 1CV8Clst.lst — список баз, настроек и администраторов кластера.
  4. Сделайте копии баз. Для клиент-серверных баз — средствами СУБД (pg_dump для PostgreSQL), для файловых — копию каталога с 1Cv8.1CD.
  5. Проверьте место. Одна версия платформы занимает около 1 ГБ, плюс понадобится место под дистрибутив и временные файлы.
  6. Предупредите пользователей. При перезапуске службы все сеансы оборвутся, несохранённые документы пропадут.

Перезапуск службы сервера 1С обрывает работу всех пользователей. Делайте это в окно обслуживания, вечером или в выходной.

Сохраните реестр кластера одной командой до любых действий: sudo tar czf /root/srvinfo-$(date +%F).tgz /home/usr1cv8/.1cv8/1C/1cv8. Если что-то пойдёт не так, его можно вернуть на место при остановленной службе.

Перед обновлением платформы
Выполнено: 0 / 6

Есть ли у 1С репозиторий для apt и dnf

Короткий ответ: публичного репозитория, из которого apt upgrade сам поставит новую платформу 1С, нет. Дистрибутивы скачивают с портала поддержки после входа под учётной записью с действующей подпиской. Поэтому «автоматическое обновление » на Linux — это всегда ваша собственная схема.

Что реально работает в компаниях с несколькими серверами:

  • 📦 Свой локальный репозиторий. Пакеты 1С складывают в репозиторий на aptly или reprepro (для Debian и Ubuntu) или createrepo (для РЕД ОС, CentOS, AlmaLinux). Дальше клиенты обновляются штатным apt install или dnf install с точным номером версии.
  • 🛠 Ansible или Salt. Плейбук копирует установщик на хосты, запускает его в тихом режиме и переключает службу. Удобно, когда серверов больше двух.
  • 🔁 Обычный apt для зависимостей. Шрифты, библиотеки ImageMagick, unixodbc и прочие пакеты ставятся из репозиториев дистрибутива и обновляются вместе с системой.

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

Ручная установка новой версии платформы

С 8.3.20 1С поставляет для Linux единый установщик setup-full-8.3.xx.yyyy-x86_64.run. Он лежит внутри архивов «Сервер 1С:Предприятия (64-bit) для DEB-based Linux-систем» и «для RPM-based», а также в архиве клиента. Пакеты в архивах тоже есть, но установщиком проще.

Установка через setup-full

tar xzf server64_8_3_xx_yyyy.tar.gz
chmod +x setup-full-8.3.xx.yyyy-x86_64.run
sudo ./setup-full-8.3.xx.yyyy-x86_64.run --mode unattended --enable-components server,ws,ru

Ключ --mode unattended ставит без вопросов, --enable-components перечисляет нужные части. Для сервера достаточно server (сам сервер), ws (модуль веб-сервера, если базы опубликованы через Apache), ru (русский интерфейс). Компонент server_admin добавляет утилиты администрирования ras и rac. Для рабочего места бухгалтера нужен client_full или client_thin. Полный список покажет ./setup-full-... --help.

Новая версия встаёт в свой каталог /opt/1cv8/x86_64/8.3.xx.yyyy/, старая остаётся на месте. Это и есть главный плюс новой схемы: откат занимает минуту.

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

Если удобнее пакетами (например, для локального репозитория), ставьте их все из одного архива:

# Debian, Ubuntu, Astra
sudo apt install ./1c-enterprise-8.3.xx.yyyy-*.deb

# РЕД ОС, AlmaLinux
sudo dnf install ./1c-enterprise-8.3.xx.yyyy-*.rpm

Установка через apt install ./файл.deb, а не dpkg -i, сразу подтягивает недостающие зависимости. Если пакеты уже поставлены через dpkg и система ругается на зависимости, помогает sudo apt -f install.

Зависимости, которые ставят отдельно

ЧтоЗачемПакет (Debian/Ubuntu)
Шрифты MicrosoftПечатные формы без «поехавшей» вёрсткиttf-mscorefonts-installer
ImageMagickРабота с картинками в макетах и отчётахimagemagick
unixODBCВнешние источники данныхunixodbc
Шрифтовый кэшПрименить установленные шрифтыfontconfig (команда fc-cache -fv)

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

Если стоит старая версия до 8.3.20

Пакеты 8.3.19 и раньше назывались 1c-enterprise83-common, 1c-enterprise83-server и лежали в /opt/1C/v8.3/x86_64/. Такая схема позволяла держать только одну версию одновременно. Переход на новую схему такой: остановить старую службу, установить новую версию установщиком, перенести реестр кластера (он и так лежит в домашнем каталоге usr1cv8, поэтому обычно подхватывается сам) и только после проверки удалить старые пакеты через apt remove.

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

После установки файлов сервер ещё не обновлён: работает служба старой версии. Её нужно остановить и запустить новую.

Служба systemd новой версии

В каталоге каждой версии лежит шаблон службы srv1cv8-8.3.xx.yyyy@.service. Порядок команд:

OLD=8.3.23.1865
NEW=8.3.24.1467

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

Номера версий подставьте свои. Имя экземпляра default использует стандартные настройки: порт агента 1540, менеджера кластера 1541, диапазон рабочих процессов 1560–1591 и каталог кластера в домашней папке usr1cv8. Если у вас нестандартные порты или каталог, перенесите их в новую службу тем же способом, каким настраивали старую (через переопределение systemctl edit).

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

У версий до 8.3.20 служба управлялась скриптом /etc/init.d/srv1cv83, а параметры лежали в /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83. Перед переходом выпишите оттуда порты, каталог кластера и параметры отладки.

Сервер администрирования ras и проверка через rac

Консоль на Linux не ставится, поэтому кластер обычно смотрят через rac или подключаются к нему консолью с Windows-машины. Для этого на сервере должен работать ras той же версии, что и сервер:

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

Если rac cluster list вернул кластер с прежним именем и портом, реестр подхватился. Дальше проверьте, что базы на месте: rac infobase summary list --cluster=<uuid кластера>. При ошибке синтаксиса смотрите rac help, у разных версий набор параметров немного отличается.

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

Обновление конфигураций баз

Смена платформы не обновляет конфигурации. Если после перехода нужен новый релиз БП, ЗУП или УТ, его ставят так же, как на Windows: через Конфигуратор (полный клиент 1С для Linux его включает) или из пользовательского режима. Делайте это отдельным шагом, после того как сервер на новой версии отработал хотя бы день.

Клиенты на Linux и Windows после смены версии

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

На рабочих местах с Linux:

  1. Поставьте новый клиент тем же установщиком с компонентом client_full или client_thin.
  2. Запускайте через общий стартер /opt/1cv8/common/1cestart. Он выбирает подходящую версию по настройкам списка баз.
  3. Старый клиент можно оставить до конца перехода: версии не конфликтуют.

На рабочих местах с Windows стартер 1cestart.exe умеет сам скачивать нужную версию клиента из общего каталога с дистрибутивом. Если такой каталог настроен, достаточно положить туда новую версию.

Если пользователей много, сначала обновите ярлыки или список баз, указав нужную версию в его свойствах. Так переход пройдёт без звонков «у меня не открывается».

Логи и диагностика проблем после обновления

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

journalctl -u srv1cv8-$NEW@default -n 100 --no-pager
ss -tlnp | grep -E '154[01]|15[6-9][0-9]'

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

Для глубокого разбора включают технологический журнал. Файл настроек logcfg.xml кладут в /opt/1cv8/conf/, каталог для журнала создают заранее и выдают права пользователю usr1cv8:

<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>

Этот пример пишет исключения (EXCP) за последние 24 часа. После диагностики удалите logcfg.xml: журнал быстро растёт и забивает диск.

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

Очистка сеансовых данных

Иногда после смены версии сервер работает медленно или выдаёт странные ошибки при входе. Помогает очистка сеансовых данных кластера: при остановленной службе удалите в reg_1541 папки snccntx*. Реестр 1CV8Clst.lst и папки с данными баз не трогайте.

Удалять сеансовые данные можно только при остановленной службе. На работающем сервере это приводит к сбоям у всех пользователей.

Обновление 1С в Docker и других контейнерах

В контейнере платформу не обновляют «внутри». Обновление — это сборка нового образа с новой версией и замена контейнера.

Что нужно учесть:

  • 🗂 Реестр кластера — на томе. Каталог /home/usr1cv8/.1cv8 монтируйте как volume. Иначе при замене контейнера кластер создастся заново и список баз пропадёт.
  • 🏷 Постоянное имя хоста. Реестр кластера хранит имя сервера. Задайте в docker run или compose параметр hostname и не меняйте его между версиями.
  • 🔢 Версия в теге образа. Тег вида 1c-server:8.3.24.1467 позволяет откатиться на прошлый образ одной командой.
  • 🔑 Лицензии. Программная лицензия привязывается к параметрам оборудования и окружения. Смена контейнера может сделать её недействительной, поэтому храните файлы лицензий на томе и проверяйте после первого старта. Для USB-ключей нужен проброс устройства и драйвер в образе или на хосте.

Пример Dockerfile со сменной версией:

FROM debian:12
ARG V1C=8.3.24.1467
COPY setup-full-${V1C}-x86_64.run /tmp/
RUN apt-get update && apt-get install -y ttf-mscorefonts-installer imagemagick unixodbc \
 && /tmp/setup-full-${V1C}-x86_64.run --mode unattended --enable-components server,ru \
 && rm /tmp/setup-full-${V1C}-x86_64.run

Шрифты Microsoft в Debian лежат в разделе contrib, его нужно включить в источниках пакетов образа. Пользователь usr1cv8 создаётся установщиком; запускайте ragent от его имени.

Откат и типичные ошибки при обновлении платформы на Linux

Если новая версия ведёт себя плохо, откат простой, пока старая версия не удалена: остановите и отключите новую службу, включите старую командой systemctl enable --now srv1cv8-<старая>@default, верните старые клиенты. Базы при смене платформы не конвертируются, поэтому возврат на прошлую версию обычно проходит без последствий.

Чего стоит избегать:

  • ❌ Удалять старую версию в тот же день. Подождите неделю. Удаление — штатным uninstaller-full из каталога версии или apt remove для пакетов.
  • ❌ Обновлять сервер без клиентов. Утром ни один пользователь не войдёт в базу.
  • ❌ Запускать службу от root. Каталоги кластера получат владельца root, и служба от usr1cv8 потом не стартует.
  • ❌ Смешивать платформу и конфигурацию в одно окно. Если что-то сломается, не поймёте, что именно.
Можно ли держать на одном сервере две версии платформы 1С?
Да, с 8.3.20 версии ставятся в разные каталоги. Работать одновременно на стандартных портах может только одна служба. Вторую запускают на других портах, если нужен тестовый сервер.
Нужно ли заново регистрировать базы в кластере после обновления?
Нет. Новая служба читает тот же реестр кластера в домашнем каталоге usr1cv8, базы остаются в списке.
Слетит ли лицензия при обновлении платформы на Linux?
Обычно нет: лицензия привязана к оборудованию и системе, а не к версии платформы. Риск появляется при смене железа, виртуальной машины или контейнера.
Обязательно ли обновлять PostgreSQL вместе с платформой?
Нет, это отдельная задача. Проверьте только, что ваша сборка PostgreSQL поддерживается новой версией платформы.
Как обновить 1С на Linux без доступа к интернету?
Скачайте дистрибутив на другой машине, перенесите архив и зависимости (deb или rpm) на сервер и ставьте локально. Для нескольких серверов удобен локальный репозиторий.