Как поставить новую платформу 1С:Предприятие на Linux-сервер и перевести на неё кластер

· 10 мин

Содержание

Чтобы обновить 1С на Linux-сервере, скачайте дистрибутив новой версии платформы, установите его рядом со старой (/opt/1cv8/x86_64/<версия>), остановите службу старой версии и запустите службу новой. Реестр кластера и базы при этом не трогаются: новая служба подхватывает их сама. Начиная с 8.3.20 платформа для Linux ставится единым установщиком setup-full-<версия>-x86_64.run, в более ранних версиях — набором пакетов DEB или RPM.

Типичный случай из практики: вышел новый релиз Бухгалтерии, а он требует платформу не ниже определённого номера. Администратор открывает сервер на Ubuntu или CentOS и видит, что «обновить платформу» здесь — это не кнопка в программе, а работа в терминале. Порядок одинаков для Debian-подобных и RPM-систем, различаются лишь команды пакетного менеджера.

1. Подготовка Linux-сервера: какая версия 1С стоит сейчас

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

Какие версии установлены:

ls /opt/1cv8/x86_64/

Каждая версия лежит в своём каталоге, например 8.3.22.1709. В очень старых установках (до 8.3.12 примерно) платформа жила в /opt/1C/v8.3/x86_64 — одна версия на сервер, без подкаталогов.

Какая версия работает прямо сейчас:

ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep

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

Как платформа поставлена — пакетами или установщиком:

# Debian, Ubuntu, Astra
dpkg -l | grep 1c-enterprise
# CentOS, RED OS, ALT, Rocky
rpm -qa | grep 1c-enterprise

Как запускается служба:

systemctl list-units --all | grep -i srv1cv8
ls /etc/init.d/ | grep srv1cv8

Если найден юнит вида srv1cv8-8.3.22.1709@default.service — служба версионная, systemd. Если только скрипт /etc/init.d/srv1cv83 — это старая схема с одной службой на сервер.

Перед обновлением соберите ещё:

  • 📦 выгрузки .dt или резервные копии СУБД всех баз кластера;
  • 📁 копию каталога /home/usr1cv8/.1cv8/1C/1cv8/ — там реестр кластера (1cv8wsrv.lst) и каталог reg_1541 с описанием баз;
  • 🔑 копию каталога с программными лицензиями (обычно /var/1C/licenses);
  • 🧾 список доработок: веб-публикации в Apache, сервер администрирования ras, свои скрипты запуска.

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

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

2. Есть ли у 1С репозиторий APT и YUM

Короткий ответ: публичного репозитория платформы, который можно подключить строкой в sources.list или .repo, у фирмы 1С нет. Дистрибутивы скачиваются с портала обновлений по логину пользователя с действующей подпиской. Поэтому команда apt upgrade сама платформу 1С не обновит.

Менеджер пакетов всё равно нужен — для зависимостей:

# Ubuntu, Debian
sudo apt update
sudo apt install -y fontconfig libfreetype6 libgsf-1-114 unixodbc
# CentOS, Rocky, RED OS
sudo dnf install -y fontconfig freetype libgsf unixODBC

Набор пакетов зависит от дистрибутива и состава компонентов. Установщик сообщает о недостающих библиотеках, и их ставят тем же apt или dnf.

Для парка из нескольких серверов удобно сделать свой локальный репозиторий. Скачанные пакеты кладут на внутренний сервер, собирают индекс (dpkg-scanpackages для APT, createrepo для YUM/DNF) и подключают его на серверах 1С. Тогда обновление выглядит привычно: apt install или dnf install с нужной версией. Для установщика .run такой схемы нет — его копируют на сервер и запускают.

Отечественные дистрибутивы (Astra Linux, RED OS, ALT) входят в список систем, на которых платформа проверяется. На них порядок тот же, отличаются только имена пакетов зависимостей.

3. Установка новой платформы 1С: файл .run, пакеты DEB и RPM

Платформа 8.3.20 и новее: установщик .run

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

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

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

КомпонентЧто ставитКогда нужен
serverсервер 1С:Предприятия (ragent, rmngr, rphost)всегда на сервере
wsмодули веб-сервераесли базы опубликованы через Apache
server_adminсервер администрирования rasдля консоли и утилиты rac
ruрусский интерфейс сообщенийпочти всегда
client_full, client_thinклиентыесли на сервере работают пользователи

Без --mode unattended запустится графический или текстовый мастер. На сервере без графики удобнее тихий режим.

Новая версия встанет в /opt/1cv8/x86_64/8.3.24.1467/, старая останется на месте. Это и есть главный плюс схемы: откат делается переключением службы.

Платформа до 8.3.20: пакеты DEB и RPM

Для старых версий архив содержит набор пакетов. На Debian и Ubuntu:

tar -xzf deb64_8_3_18_1483.tar.gz
sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb
sudo dpkg -i 1c-enterprise83-ws_*.deb
sudo apt -f install

Сначала ставится common, затем server, затем ws; пакеты с суффиксом nls дают локализацию. Последняя команда доставляет зависимости, если dpkg на них пожаловался.

На CentOS и RPM-системах то же самое:

sudo rpm -Uvh 1C_Enterprise83-common-*.rpm 1C_Enterprise83-server-*.rpm
# или с подтягиванием зависимостей
sudo dnf install ./1C_Enterprise83-*.rpm

Ключ -U обновляет пакеты, если они уже стоят. Учтите: у старых пакетов разные версии в одном каталоге не уживаются, установка новой заменяет старую. Откат тогда — повторная установка пакетов прежней версии.

4. Переключение службы сервера 1С на новую версию

Это ключевой шаг. Платформа поставлена, но работает всё ещё старая служба.

Остановка службы обрывает все сеансы пользователей. Делайте это в согласованное окно — вечером или в выходной, — предупредив людей заранее.

Версионная служба systemd (8.3.21 и новее)

В каталоге версии лежит готовый файл юнита. Его подключают и включают с экземпляром default:

OLD=8.3.22.1709
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
sudo systemctl status srv1cv8-$NEW@default

Настройки экземпляра — порт, каталог кластера, параметры отладки — переносятся через файл переопределения юнита. Если вы меняли их у старой версии, повторите для новой: systemctl edit srv1cv8-$NEW@default.

Старая схема со скриптом init.d

Для установок со скриптом /etc/init.d/srv1cv83 порядок проще: пакеты новой версии заменяют файлы, служба перезапускается:

sudo systemctl stop srv1cv83
sudo systemctl start srv1cv83

Если в конфиге службы (/etc/sysconfig/srv1cv83 или /etc/default/srv1cv83) прописан путь к конкретной версии, исправьте его на новую.

Проверка, что кластер поднялся

ss -tlnp | grep -E '1540|1541'
ps aux | grep rphost | grep -v grep

Агент должен слушать порт 1540, менеджер кластера — 1541. Рабочие процессы rphost появятся в пути новой версии. Базы в кластере остаются прежними: реестр в /home/usr1cv8/.1cv8/1C/1cv8/ от версии платформы не зависит.

Если на сервере работает ras, перезапустите и его из каталога новой версии, иначе консоль и rac будут ходить через старый бинарник:

sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1467/ras cluster --daemon
Окно обновления сервера 1С
Выполнено: 0 / 8

5. Обновление 1С в Docker-контейнере

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

Правильная схема:

  1. Положите дистрибутив новой версии в контекст сборки.
  2. Поменяйте номер версии в Dockerfile или в аргументе сборки.
  3. Соберите новый образ с новым тегом: docker build -t 1c-server:8.3.24.1467 .
  4. Остановите старый контейнер в окно обслуживания.
  5. Запустите новый с теми же томами и теми же параметрами сети.

Что обязательно должно жить в томах, а не в образе:

  • 📁 /home/usr1cv8/.1cv8 — реестр кластера и список баз;
  • 🔑 /var/1C/licenses — программные лицензии;
  • 📝 каталоги журналов и технологического журнала, если вы их ведёте.

Программная лицензия привязана к параметрам компьютера. В контейнере это имя хоста и сетевые параметры. Задавайте --hostname и MAC-адрес явно и одинаково для старого и нового контейнера, иначе после обновления лицензия может «слететь».

Пример запуска с сохранением всего нужного:

docker run -d --name srv1c \
  --hostname srv1c \
  --mac-address 02:42:ac:11:00:10 \
  -p 1540-1541:1540-1541 -p 1560-1591:1560-1591 \
  -v srv1c-home:/home/usr1cv8/.1cv8 \
  -v srv1c-lic:/var/1C/licenses \
  1c-server:8.3.24.1467

Диапазон 1560–1591 — это порты рабочих процессов по умолчанию. Если в свойствах рабочего сервера задан другой диапазон, пробросьте его.

6. После обновления платформы на сервере

Служба запущена — работа не закончена. Пройдите по списку.

Клиенты. Версия клиента должна совпадать с версией сервера вплоть до четвёртой цифры. Иначе пользователь получит ошибку о несоответствии версий при входе. Обновите платформу на рабочих местах или настройте в списке баз параметр «Версия 1С:Предприятия» так, чтобы запускалась нужная версия.

Веб-публикации. В конфигурации Apache модуль загружается по полному пути, например:

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

Путь указывает на старую версию. Поменяйте номер на новый и перезапустите веб-сервер: sudo systemctl restart apache2 (на RPM-системах — httpd). Можно и заново опубликовать базу утилитой webinst из каталога новой версии.

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

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

Удаление старой версии. Не спешите: подождите неделю-две работы без сбоев. Потом удалите каталог версии деинсталлятором из её же папки (uninstaller-full) или пакетным менеджером, если версия ставилась пакетами. Отключённый юнит старой службы уберите командой systemctl disable.

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

7. Ошибки при обновлении 1С на Linux и что с ними делать

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

Если не помогло: как откатиться

Откат при версионной установке занимает пару минут:

sudo systemctl disable --now srv1cv8-8.3.24.1467@default
sudo systemctl enable --now srv1cv8-8.3.22.1709@default

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

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

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

Можно ли держать на одном Linux-сервере две версии 1С?
Да. С версии 8.3.12 каждая версия ставится в свой каталог. Одновременно работать на стандартных портах могут не обе: для второго кластера задайте другие порты агента и менеджера.
Нужно ли обновлять PostgreSQL вместе с платформой 1С?
Не обязательно. Сверьтесь с требованиями новой версии платформы к СУБД. Если ваша сборка PostgreSQL в них есть, её можно не трогать.
Обновится ли платформа автоматически при обновлении конфигурации?
Нет. На сервере платформу ставит администратор вручную. Программа лишь подскажет, что релиз конфигурации требует более новую версию.
Как обновить тонкий клиент на Linux-рабочих станциях?
Тем же установщиком .run с компонентом client_thin или client_full. Версия должна совпасть с серверной.
Можно ли пропустить несколько версий платформы?
Да. Платформа ставится сразу на нужную версию, промежуточные не требуются. Последовательность важна только при обновлении релизов конфигурации.