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

· 9 мин

Содержание

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

Ниже порядок для сервера и клиента на Ubuntu/Debian и RHEL-подобных системах (Astra, РЕД ОС, ALT устроены так же). Команды даны для платформы 8.3.20 и новее, где 1С поставляется единым установщиком setup-full-….run. Для более старых сборок с пакетами .deb/.rpm отличия отмечены отдельно.

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

Начните с инвентаризации. Пять минут здесь спасают от ночного отката.

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

Посмотрите, какие версии уже установлены:

ls /opt/1cv8/x86_64/

Для сборок до 8.3.20, поставленных пакетами, каталог другой — /opt/1C/v8.3/x86_64/. Там версия одна, и номер видно по пакетам:

dpkg -l | grep 1c-enterprise     # Debian, Ubuntu, Astra
rpm -qa | grep 1C_Enterprise     # RHEL-подобные

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

ps aux | grep ragent
systemctl list-units --type=service | grep -i 1c

В строке процесса виден полный путь к ragent — в нём номер версии. Также видны параметры запуска: порт агента (по умолчанию 1540), каталог данных кластера и параметр -debug, если он включён. Запишите их — новая служба должна стартовать с теми же значениями.

Что сохранить

  • 💾 Резервные копии баз. Для PostgreSQL — pg_dump каждой базы. Для файловых баз — копия каталога с 1Cv8.1CD. Выгрузка .dt через Конфигуратор тоже подойдёт.
  • 📁 Каталог реестра кластера. По умолчанию это /home/usr1cv8/.1cv8/1C/1cv8/. Там лежат 1cv8wsrv.lst (список кластеров) и папка reg_1541 со списком информационных баз.
  • 🔑 Лицензии. Программные лицензии хранятся в /var/1C/licenses/. Скопируйте каталог целиком.
  • 📝 Параметры службы. Для старой init-службы — файл /etc/default/srv1cv83 (Debian) или /etc/sysconfig/srv1cv83 (RHEL). Для systemd — свои override-файлы, если вы их создавали.

Копию реестра кластера и лицензий снимайте при остановленной службе — так файлы гарантированно целые.

Совместима ли конфигурация с новой платформой

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

Дистрибутив и пакеты, которые нужны системе

Какой файл скачивать

Дистрибутив берут на портале обновлений 1С по договору ИТС или из комплекта поставки. Для Linux есть несколько вариантов архива:

АрхивЧто внутриКогда брать
Сервер 1С:Предприятия (64-bit) для DEB/RPMУстановщик setup-full-…-x86_64.run с серверными компонентамиОбновление сервера
Технологическая платформа для Linux (64-bit)Тот же установщик, включая клиентыСервер и клиент на одной машине
Тонкий клиент для LinuxТолько тонкий клиентРабочие места пользователей

Распакуйте архив и сделайте установщик исполняемым:

tar xzf server64_8_3_24_1548.tar.gz
chmod +x setup-full-8.3.24.1548-x86_64.run

Номер 8.3.24.1548 здесь и далее — пример. Подставляйте свою версию.

Зависимости

Серверу 1С нужны шрифты, библиотека работы с изображениями и несколько системных пакетов. Без них сервер запустится, но упадут печатные формы, диаграммы и выгрузка в PDF.

Для Ubuntu и Debian:

sudo apt update
sudo apt install -y fontconfig imagemagick libgsf-1-114 unixodbc
sudo apt install -y ttf-mscorefonts-installer
sudo fc-cache -fv

Для RHEL-подобных систем пакеты называются похоже, ставятся через dnf. Шрифты Microsoft там приходится устанавливать вручную из rpm-сборки сообщества.

Если сервер без выхода в интернет, соберите пакеты на соседней машине командой apt download и перенесите их вместе с дистрибутивом.

Установка новой версии из консоли

Сборки 8.3.20 и новее

Установщик ставит новую версию в отдельный каталог и не трогает старую. Список компонентов и параметров покажет справка:

./setup-full-8.3.24.1548-x86_64.run --help

Тихая установка сервера с модулем расширения веб-сервера и утилитами администрирования:

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

Если на этой же машине нужен клиент, добавьте client_full или client_thin. Имена компонентов сверяйте с выводом --help именно вашей сборки: набор от версии к версии понемногу меняется.

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

ls /opt/1cv8/x86_64/8.3.24.1548/

Там должны быть ragent, rmngr, rphost, rac, ras и файл юнита systemd вида srv1cv8-8.3.24.1548@.service.

Сборки до 8.3.20 (пакеты .deb и .rpm)

Старые версии ставились набором пакетов: common, server, ws, client и языковые. Пакетная установка заменяет файлы в единственном каталоге /opt/1C/v8.3/x86_64/, поэтому две такие версии рядом не живут.

sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb

Порядок важен: сначала common, потом server, потом остальные. При переходе со старой пакетной сборки на 8.3.20+ старую службу srv1cv83 нужно отключить вручную, иначе две версии будут бороться за порт 1540.

Права на каталоги и владелец файлов

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

Верните владельца:

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

Если каталог данных кластера у вас нестандартный, например /srv/1c, примените ту же команду к нему.

Что ещё проверить:

  • 🔐 У usr1cv8 должны быть права на запись в каталог временных файлов и в свой домашний каталог.
  • 📂 Для файловых баз, которые открывает сервер (например, через веб-публикацию), владельцем каталога базы тоже должен быть пользователь, от которого работает процесс.
  • 🛡️ На Astra Linux с включённым мандатным контролем пользователю службы нужно назначить метки доступа. Без этого служба стартует, но не видит свои файлы.

Не меняйте владельца всего /opt/1cv8 на usr1cv8. Исполняемые файлы должны принадлежать root — иначе любой, кто получит доступ под сервисной учётной записью, сможет подменить бинарник.

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

Остановка старой версии

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

/opt/1cv8/x86_64/8.3.24.1548/rac cluster list
/opt/1cv8/x86_64/8.3.24.1548/rac session list --cluster=<uuid>

Для работы rac нужен запущенный сервер администрирования ras. Если он не запущен — смотрите rac help.

Остановите и отключите старую службу. Для systemd:

sudo systemctl stop srv1cv8-8.3.22.1709@default
sudo systemctl disable srv1cv8-8.3.22.1709@default

Для старой init-службы:

sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83

Запуск новой версии

Подключите юнит из каталога новой версии и запустите экземпляр default:

sudo systemctl link /opt/1cv8/x86_64/8.3.24.1548/srv1cv8-8.3.24.1548@.service
sudo systemctl enable --now srv1cv8-8.3.24.1548@default

Если старая служба запускалась с нестандартным портом или каталогом данных, перенесите эти значения. Откройте файл юнита, посмотрите, какие переменные окружения он читает, и задайте их через sudo systemctl edit srv1cv8-8.3.24.1548@default.

Сервер администрирования запускается аналогично — его юнит лежит в том же каталоге (ras-8.3.24.1548.service).

Проверка и диагностика

systemctl status srv1cv8-8.3.24.1548@default
journalctl -u srv1cv8-8.3.24.1548@default -n 50
ss -tlnp | grep -E '154[01]'

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

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

PostgreSQL и файловые базы при смене платформы

Клиент-серверные базы на PostgreSQL

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

Что учесть:

  • 🐘 Используйте сборку PostgreSQL с патчами для 1С (от 1С или Postgres Professional). Ванильный PostgreSQL для баз 1С не подходит.
  • 📋 Каждая версия платформы поддерживает определённый диапазон версий PostgreSQL. Если вы заодно обновляете СУБД, проверьте это по описанию версии платформы.
  • ⏱️ Первый вход в базу после смены платформы может длиться дольше обычного: платформа перестраивает служебные данные и кэши.

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

Резервная копия базы PostgreSQL перед работами:

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

Файловые базы

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

  • 👥 Все пользователи файловой базы должны перейти на новую версию клиента одновременно. Разные версии на одной базе — путь к ошибкам блокировок.
  • 🗂️ Проверьте права на каталог базы: все пользователи Linux, которые работают с ней, должны иметь доступ на чтение и запись к файлу 1Cv8.1CD и каталогу, где он лежит.
  • 🌐 Если файловая база опубликована через Apache, после обновления перепубликуйте её модулем wsap24.so из каталога новой версии и перезапустите Apache.

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

Для клиент-серверного режима номер клиента должен совпадать с номером сервера целиком: 8.3.24.1548 к серверу 8.3.24.1548. Совпадения первых трёх частей мало.

На рабочих местах Linux клиент ставится тем же установщиком:

sudo ./setup-full-8.3.24.1548-x86_64.run --mode unattended \
  --enable-components client_full

Если пользователи запускают 1С через ярлык, ведущий на конкретную версию, ярлык придётся поправить. Удобнее запускать через 1cestart — он сам выбирает подходящую установленную версию.

На рабочих местах Windows клиент обновляют обычным установщиком платформы. При большом парке настройте автоматическое распространение дистрибутива — так новое рабочее место сразу получит нужную сборку.

Откат и уборка старых версий

Если после переключения что-то пошло не так, откат занимает минуту:

  1. Остановите и отключите службу новой версии.
  2. Включите и запустите службу старой версии.
  3. Проверьте, что пользователи входят.

Работает это только для сборок 8.3.20+, где версии лежат в разных каталогах. Пакетную сборку до 8.3.20 откатывают переустановкой старых пакетов — держите их под рукой.

Старые версии удаляйте не сразу, а через неделю-две стабильной работы. В каталоге каждой версии лежит деинсталлятор (uninstaller-full в сборках 8.3.20+). Перед удалением убедитесь, что служба этой версии отключена и нигде не используется.

Перед тем как удалять старую версию
Выполнено: 0 / 5

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

Нужно ли заново активировать программную лицензию после обновления платформы?
Нет. Лицензия привязана к параметрам компьютера, а не к номеру платформы. Достаточно, чтобы каталог /var/1C/licenses сохранился и был доступен службе.
Можно ли держать на одном сервере две версии платформы одновременно?
Можно для сборок 8.3.20 и новее: каждая лежит в своём каталоге. Запускать их одновременно с одним портом нельзя — нужны разные порты и разные каталоги данных кластера.
Обязательно ли обновлять конфигурацию вместе с платформой?
Нет, это отдельные процедуры. Но перед сменой платформы проверьте, что текущий релиз конфигурации с ней совместим.
Работает ли аппаратный ключ HASP после обновления?
Да, если запущен драйвер ключа (служба aksusbd). Обновление платформы его не трогает, но после переустановки ОС драйвер нужно поставить заново.
Сколько времени занимает обновление сервера?
Сама установка и переключение службы — 10–20 минут. Основное время уходит на резервные копии и проверку баз после запуска.