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

· 10 мин

Содержание

Чтобы обновить платформу 1С на Linux, новую версию ставят рядом со старой в /opt/1cv8/x86_64/<номер версии>/, затем останавливают службу старого сервера, подключают systemd-юнит новой версии и запускают его. Базы, реестр кластера и программные лицензии остаются на месте. Старую версию удаляют только после того, как пользователи день-два поработали на новой.

Способ установки зависит от того, что лежит в архиве с дистрибутивом. В актуальных версиях (8.3.20 и новее) сервер для Linux поставляется единым установщиком setup-full-…-x86_64.run. В старых сборках внутри были пакеты deb или rpm. Порядок перехода в обоих случаях одинаковый, отличается только команда установки.

1. Подготовка: какая версия стоит сейчас и что сохранить

Сначала выясните, что именно работает на сервере. Часто там оказывается две-три версии платформы, а служба запущена совсем не от той, которую все считают «текущей».

# какие версии установлены
ls /opt/1cv8/x86_64/

# от какой версии запущен агент сервера
ps -ef | grep -E 'ragent|rmngr|rphost' | grep -v grep

# какие службы 1С есть в systemd
systemctl list-units --all | grep -i 1cv8

В выводе ps путь к ragent содержит номер версии — это и есть рабочая платформа. Если служб нет в systemd, а агент запускается через /etc/init.d/srv1cv83, у вас старая схема установки. Её тоже можно перевести на новую версию, но сначала разберитесь, где лежат параметры запуска (обычно /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83).

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

  • 📁 каталог кластера — по умолчанию /home/usr1cv8/.1cv8/1C/1cv8/, внутри 1cv8wsrv.lst и папка reg_1541 со списком баз и настройками кластера;
  • 🔑 программные лицензии из /var/1C/licenses/;
  • ⚙️ файлы conf.cfg, logcfg.xml, nethasp.ini из /opt/1cv8/conf/ и из каталога conf текущей версии, если вы их правили;
  • 🗄️ сами базы: для PostgreSQL — pg_dump по каждой базе, плюс выгрузка .dt для самых важных;
  • 🌐 конфигурацию веб-сервера, если базы опубликованы через Apache.
sudo systemctl stop srv1cv8-8.3.22.2208@default   # остановка нужна для согласованной копии реестра
sudo tar czf /root/1c-backup-$(date +%F).tar.gz \
  /home/usr1cv8/.1cv8 /var/1C/licenses /opt/1cv8/conf

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

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

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

Перед обновлением сервера 1С
Выполнено: 0 / 6

2. Где взять дистрибутив новой версии

Дистрибутивы платформы распространяются только легально: с портала обновлений 1С по действующей подписке ИТС или через обслуживающего партнёра. Для Linux нужен архив «Технологическая платформа 1С:Предприятия (64-bit) для Linux». Внутри — установщик для сервера и отдельно для клиента.

Что нужноКакой дистрибутив
Сервер 1С на Linuxсерверный архив 64-bit для Linux (server64_…tar.gz)
Толстый и тонкий клиент на Linuxклиентский архив 64-bit для Linux
Клиенты на рабочих местах Windowsдистрибутив для Windows той же версии
Сервер на ARM или российских ОСотдельные сборки, если они выпущены для вашей версии

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

tar tzf server64_8_3_24_1586.tar.gz > /dev/null && echo OK

Публичного репозитория APT или YUM у фирмы 1С нет. Поэтому apt upgrade и dnf upgrade платформу не обновят — её всегда ставят из скачанного дистрибутива.

3. Установка через пакетный менеджер: APT и YUM/DNF

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

Debian, Ubuntu, Astra Linux:

mkdir ~/1c-new && tar xzf deb64_8_3_18_1208.tar.gz -C ~/1c-new
cd ~/1c-new
sudo apt install ./*common*.deb ./*server*.deb ./*ws*.deb

Команда apt install ./файл.deb удобнее, чем dpkg -i: она сама доставит недостающие библиотеки из системных репозиториев. Если всё же ставили через dpkg -i и получили ошибки зависимостей, добейте их командой sudo apt -f install.

RHEL, CentOS, РЕД ОС, AlmaLinux:

mkdir ~/1c-new && tar xzf rpm64_8_3_18_1208.tar.gz -C ~/1c-new
cd ~/1c-new
sudo dnf install ./*common*.rpm ./*server*.rpm ./*ws*.rpm

На старых системах без dnf используйте yum localinstall с теми же файлами.

💡 Пакеты с суффиксом ws — это модуль веб-расширения для Apache. Если базы не публикуются, их можно не ставить. Пакеты client на сервер без графической оболочки ставить незачем.

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

dpkg -l | grep 1c-enterprise      # Debian/Ubuntu
rpm -qa | grep 1c-enterprise      # RHEL-семейство

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

4. Ручная установка из архива TAR.GZ установщиком .run

Для версий 8.3.20 и новее основной способ — единый установщик. Он кладёт каждую версию в свой каталог и ничего не перезаписывает.

mkdir ~/1c-new && tar xzf server64_8_3_24_1586.tar.gz -C ~/1c-new
cd ~/1c-new
chmod +x setup-full-8.3.24.1586-x86_64.run
sudo ./setup-full-8.3.24.1586-x86_64.run --mode unattended --enable-components server,ws

Ключ --mode unattended ставит без вопросов, --enable-components перечисляет компоненты. Полный список компонентов для вашей версии выводит --help того же установщика — сверьтесь с ним, если нужен ещё сервер хранилища или консоль администрирования.

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

Результат проверяется одной командой:

ls /opt/1cv8/x86_64/
# 8.3.22.2208  8.3.24.1586

Ничего не удаляйте сразу после установки. Старая версия — ваш план отката: если новая поведёт себя плохо, вы просто вернёте службу на прежний каталог.

5. Ключи защиты и лицензии после обновления платформы

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

Программные лицензии. Хранятся в /var/1C/licenses/ в файлах .lic. Новая версия сервера ищет их там же, поэтому переносить ничего не нужно. Лицензия привязана к параметрам оборудования, а не к номеру платформы. Проблемы появляются, если одновременно с обновлением меняли железо, переустанавливали ОС или переносили сервер на другую виртуальную машину — тогда лицензию придётся восстанавливать по пин-коду.

Проверьте права: каталог лицензий должен быть доступен пользователю, от которого работает сервер (обычно usr1cv8).

ls -l /var/1C/licenses/
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses

Аппаратные ключи HASP. Для USB-ключа на самом сервере нужен драйвер Sentinel (служба aksusbd). Он не входит в дистрибутив платформы и при её обновлении не меняется, но после переустановки ОС его ставят заново. Для сетевого ключа сервер читает адрес менеджера лицензий из nethasp.ini. Если файл лежал в каталоге conf старой версии, скопируйте его в общий /opt/1cv8/conf/, иначе новая версия ключ не увидит.

Если лицензии выдаёт сервер 1С (клиентские лицензии на сервере), после смены версии проверьте, что их видит именно новый агент. Самый быстрый способ — зайти в любую базу и посмотреть, получен ли сеанс без ошибки лицензии.

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

Это главный шаг. В новых версиях юнит systemd поставляется внутри каталога версии, его не создают руками, а подключают командой systemctl link.

Порядок переключения:

  1. Остановите и отключите службу старой версии:
    sudo systemctl stop srv1cv8-8.3.22.2208@default
    sudo systemctl disable srv1cv8-8.3.22.2208@default
    
  2. Подключите юнит новой версии:
    sudo systemctl link /opt/1cv8/x86_64/8.3.24.1586/srv1cv8-8.3.24.1586@.service
    
  3. Включите автозапуск и запустите:
    sudo systemctl enable srv1cv8-8.3.24.1586@default
    sudo systemctl start srv1cv8-8.3.24.1586@default
    
  4. Проверьте статус и порты:
    systemctl status srv1cv8-8.3.24.1586@default
    ss -tlnp | grep -E '1540|1541'
    

Если вы меняли параметры запуска старой службы (другой каталог кластера, порты, режим отладки), перенесите их. Корректный способ — sudo systemctl edit srv1cv8-8.3.24.1586@default и переопределение нужных строк, а не правка файла внутри /opt: при следующем обновлении этот файл заменится вместе с каталогом версии.

Консоль и rac

Для администрирования через rac или графическую консоль нужен сервер администрирования ras той же версии, что и кластер:

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

Если rac cluster list возвращает кластер со списком баз — реестр подхватился, базы на месте.

Веб-публикации

Модуль Apache лежит в каталоге версии, поэтому после переключения в конфиге Apache остаётся путь к старому wsap24.so. Это самая частая причина «сервер обновили, а веб-клиент не открывается». Поправьте путь в директиве LoadModule вручную или переопубликуйте базу утилитой webinst из каталога новой версии, затем перезапустите Apache.

grep -rn wsap24 /etc/apache2/ /etc/httpd/ 2>/dev/null
sudo systemctl restart apache2     # или httpd на RHEL-семействе

Клиенты

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

После того как неделя прошла спокойно, старую версию можно удалить её же деинсталлятором из каталога версии (uninstaller-full в каталоге /opt/1cv8/x86_64/8.3.22.2208/) или пакетным менеджером, если она ставилась из deb/rpm.

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

Ниже — симптомы, которые встречаются после переключения на новую версию чаще всего. Выберите свой.

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

Как откатиться

Если новая версия ведёт себя нестабильно, откат занимает пару минут. Остановите и отключите службу новой версии, включите и запустите старую — она по-прежнему в своём каталоге. Клиентов вернуть на старую версию тоже придётся.

Реестр кластера новые версии обычно читают без изменений, но гарантии обратной совместимости нет. Поэтому при откате, если старый агент не поднимается с текущим reg_1541, восстановите каталог кластера из архива, сделанного в первом шаге. Изменения в списке баз, внесённые после обновления, тогда придётся повторить вручную.

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