Обновление сервера 1С:Предприятие 8.3 под Ubuntu Linux с минимальным простоем

· 10 мин

Содержание

Чтобы обновить 1С на сервере Ubuntu, ставят новую версию платформы рядом со старой (в отдельный каталог /opt/1cv8/x86_64/<версия>), останавливают службу старого сервера, регистрируют и запускают службу новой версии, а затем обновляют платформу на всех клиентах до того же номера. Конфигурацию базы обновляют отдельно, через Конфигуратор. PostgreSQL трогают только тогда, когда новая платформа требует более свежую сборку СУБД.

Речь о платформе 8.3 последних версий (8.3.2x) на Ubuntu 22.04 и 24.04 в варианте «сервер 1С + PostgreSQL на Linux». Команды подходят и для Debian, пути — те, что создаёт штатный установщик.

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

Начните с инвентаризации. Нужно знать, какая версия работает сейчас, как она запущена и кто к ней подключён.

Какие версии стоят на сервере:

ls /opt/1cv8/x86_64/
systemctl list-units --type=service | grep -i srv1cv8
ps aux | grep -v grep | grep ragent

В выводе ps у процесса ragent виден полный путь к исполняемому файлу — по нему понятно, какая версия реально обслуживает базы. Если каталога /opt/1cv8 нет, а есть /opt/1C/v8.3/x86_64, у вас старая схема установки (платформа до 8.3.20). Тогда служба обычно называется srv1cv83 и управляется скриптом из /etc/init.d.

Что подготовить:

  • 🧾 номер новой версии и список версий PostgreSQL, с которыми она совместима (смотрите в описании релиза платформы);
  • 💾 свободное место: каждая версия платформы занимает порядка нескольких сотен мегабайт, а резервные копии баз — сколько весят сами базы;
  • 🔑 логин и пароль администратора кластера, если он задан, и администратора каждой базы;
  • 🕒 окно для работ: время, когда пользователей можно отключить на 20–40 минут.

Резервная копия до любых действий. Сделайте дамп каждой базы средствами СУБД:

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

И сохраните каталог данных кластера — там список баз, настройки и реестр кластера:

sudo tar czf /backup/srvinfo_$(date +%F).tgz /home/usr1cv8/.1cv8/1C/1cv8

Каталог данных может лежать в другом месте, если его меняли при установке. Точный путь виден в параметре -d строки запуска ragent из вывода ps.

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

Где взять дистрибутив и в каком он формате

Дистрибутивы платформы скачивают с портала обновлений 1С по договору ИТС. Для Linux там лежит несколько вариантов, и выбрать нужно правильный.

ФайлЧто внутриКогда брать
setup-full-8.3.xx.xxxx-x86_64.runединый установщик: сервер, клиент, веб-расширения, хранилищеосновной вариант для платформы 8.3.20 и новее
архив с deb-пакетами (deb64_...tar.gz)отдельные пакеты common, server, ws и др.если у вас установка через пакетный менеджер и так исторически сложилось
клиентский установщиктолько тонкий и толстый клиентдля рабочих мест на Linux

Официального apt-репозитория у платформы 1С нет. Строки вида deb http://... для платформы в sources.list добавлять не нужно: пакеты кладут на сервер вручную, по scp или через общий каталог.

scp setup-full-8.3.xx.xxxx-x86_64.run admin@srv1c:/tmp/
ssh admin@srv1c
chmod +x /tmp/setup-full-8.3.xx.xxxx-x86_64.run

Из репозиториев Ubuntu ставятся только зависимости. Для сервера чаще всего нужны шрифты и библиотеки для формирования печатных форм и картинок:

sudo apt update
sudo apt install fontconfig ttf-mscorefonts-installer

Не смешивайте схемы. Если платформа стояла deb-пакетами, а новую ставите через setup-full, старые пакеты лучше удалить после успешного перехода — иначе через год никто не вспомнит, какая служба откуда взялась.

Как обновить платформу 1С на Ubuntu пошагово

Новая версия ставится в собственный каталог и не затирает старую. Это главное удобство: если что-то пойдёт не так, вы просто запускаете прежнюю службу.

Шаг 1. Установка новой версии

Интерактивный режим откроет мастер в терминале. Для сервера удобнее тихая установка с выбором компонентов:

sudo /tmp/setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,server_admin
  • server — сам сервер 1С (ragent, rmngr, rphost);
  • ws — модули веб-сервера, если базы опубликованы через Apache;
  • server_admin — сервер администрирования ras и утилита rac.

Список доступных компонентов и ключей выводит сам установщик по --help. Если ставите deb-пакетами, установка выглядит так:

cd /tmp/deb && sudo dpkg -i 1c-enterprise-*-common_*.deb 1c-enterprise-*-server_*.deb
sudo apt -f install

Шаг 2. Остановка старой службы

Обе версии сервера по умолчанию слушают одни и те же порты 1540 и 1541. Запустить их одновременно нельзя, поэтому старую службу останавливают.

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

Для схемы с systemd (8.3.21 и новее):

sudo systemctl disable --now srv1cv83-8.3.22.1709@default

Для старой схемы:

sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83

Номер 8.3.22.1709 здесь условный — подставьте свой из вывода systemctl list-units.

Шаг 3. Регистрация и запуск новой службы

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

V=8.3.xx.xxxx
sudo systemctl link /opt/1cv8/x86_64/$V/srv1cv83-$V@.service
sudo systemctl enable --now srv1cv83-$V@default
systemctl status srv1cv83-$V@default

Экземпляр default использует стандартные порты и каталог данных пользователя usr1cv8. Поэтому новый сервер сразу видит прежний список баз — регистрировать их заново не нужно.

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

Шаг 4. Обновление клиентов и веб-публикации

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

Если базы опубликованы на Apache, в конфигурации публикации указан путь к модулю wsap24.so конкретной версии. Замените в нём номер версии и перезапустите Apache:

grep -rn "wsap24" /etc/apache2/
sudo systemctl restart apache2

Шаг 5. Удаление старой версии

Старую версию держат неделю-две как точку отката. Потом её удаляют деинсталлятором из её же каталога (у единого установщика он лежит рядом с исполняемыми файлами версии) или через apt remove, если ставили пакетами.

PostgreSQL при обновлении: когда трогать СУБД

Обновление платформы 1С само по себе не требует обновлять PostgreSQL. СУБД трогают в двух случаях: новая платформа не поддерживает вашу версию PostgreSQL или вы планово переходите на новую мажорную версию.

Для 1С нужна не «ванильная» PostgreSQL из репозитория Ubuntu, а сборка с доработками под 1С: сборка от фирмы 1С или Postgres Pro для 1С. С обычной СУБД база создастся с ошибками или не создастся вовсе.

СитуацияЧто делатьРиск
Новая минорная версия той же ветки (например, 15.x → 15.y)установить пакеты поверх, перезапустить службу PostgreSQLминимальный, данные не конвертируются
Смена мажорной версии, базы небольшиеpg_dump из старой, pg_restore в новуюдолго на больших базах, зато просто
Смена мажорной версии, большие базыpg_upgrade между кластерамибыстро, но требует обе версии на сервере и аккуратности
Нужно «почистить» базу заодновыгрузка в .dt из Конфигуратора и загрузка в новую базумедленно, зато проверяет данные целиком

Минимальный порядок при смене мажорной версии через дамп:

  1. Остановите сервер 1С, чтобы в базу никто не писал.
  2. Снимите дамп: pg_dump -Fc.
  3. Установите новую сборку PostgreSQL для 1С, инициализируйте кластер.
  4. Создайте пустую базу с той же кодировкой и восстановите: pg_restore -d имя_базы файл.dump.
  5. Перенесите настройки из postgresql.conf (память, max_connections) — новая установка придёт со своими значениями по умолчанию.
  6. Если порт новой СУБД отличается, поправьте адрес сервера баз данных в свойствах информационной базы в консоли кластера.

На Ubuntu со сборкой 1С обе мажорные версии можно держать рядом на разных портах (5432 и 5433). Это удобно для проверки: восстановили копию в новую версию, подключили тестовую базу, прогнали закрытие месяца — и только потом переключили рабочую.

Обновление конфигурации базы после смены платформы

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

Как отключить пользователей . В консоли кластера в свойствах базы включите блокировку начала сеансов и блокировку регламентных заданий. С сервера Linux то же делают через rac (нужен запущенный ras):

rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac infobase update --cluster=<uuid_кластера> --infobase=<uuid_базы> \
  --infobase-user=Админ --infobase-pwd=*** \
  --sessions-deny=on --scheduled-jobs-deny=on --permission-code=upd2024

Точный набор параметров для вашей версии смотрите в rac help infobase.

Обновление через Конфигуратор . Удобнее всего с рабочего места администратора (Windows или Linux с толстым клиентом той же версии):

  1. Откройте базу в Конфигураторе, указав код разрешения в параметре /UC, если включали блокировку.
  2. Загрузите файл обновления .cfu через меню обновления конфигурации поставщика.
  3. Согласитесь на обновление конфигурации базы данных и примите изменения структуры.
  4. Запустите базу в режиме «1С:Предприятие» — откроется обработка обновления данных. Дождитесь её окончания.

Пакетный вариант — для типовых конфигураций без доработок, по одной базе за раз:

/opt/1cv8/x86_64/8.3.xx.xxxx/1cv8 DESIGNER /S "srv1c\buh" /N "Админ" /P "***" \
  /UC upd2024 /UpdateCfg /backup/1Cv8.cfu /UpdateDBCfg /Out /tmp/upd_buh.log

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

Перед тем как пустить пользователей
Выполнено: 0 / 7

Если после обновления сервер 1С не работает

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

systemctl status srv1cv83-8.3.xx.xxxx@default
journalctl -u srv1cv83-8.3.xx.xxxx@default -n 100 --no-pager
ss -tlnp | grep -E '154[01]'
Диагностика: выберите симптом

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

sudo systemctl disable --now srv1cv83-<новая>@default
sudo systemctl enable --now srv1cv83-<старая>@default

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

Сброс серверного кэша помогает при странных ошибках после обновления, которые повторяются у всех пользователей. Остановите службу (сеансы оборвутся, делайте вне рабочего времени), удалите каталоги snccntx* внутри reg_1541 в каталоге данных кластера и запустите службу снова. Файлы 1CV8Clst.lst и 1CV8Reg.lst не удаляйте — в них список баз и настройки кластера.

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

Можно ли держать на одном сервере Ubuntu две версии платформы 1С?
Да. Каждая версия ставится в свой каталог /opt/1cv8/x86_64/<версия>. Одновременно запустить их на стандартных портах нельзя, но можно поднять второй экземпляр на других портах с отдельным каталогом данных — например, для тестовой базы.
Нужна ли новая лицензия после обновления платформы?
Нет. Лицензия не привязана к номеру версии платформы. Переактивация нужна, только если изменилось оборудование или параметры системы, к которым привязана программная лицензия.
Почему не стоит ставить PostgreSQL из стандартного репозитория Ubuntu?
В нём нет доработок, которые нужны 1С: отдельных типов данных и оптимизаций. С такой СУБД сервер 1С работает некорректно. Берите сборку от 1С или Postgres Pro для 1С.
Сколько длится обновление платформы на сервере?
Сама установка и переключение службы — 10–15 минут. Основное время уходит на резервные копии и на обновление клиентов. Обновление конфигурации больших баз может занять несколько часов.
Обновлять платформу или конфигурацию первой?
Сначала платформу, если новый релиз конфигурации требует более свежую версию — минимальная версия указана в описании релиза. Обратный порядок приведёт к тому, что Конфигуратор откажется загружать обновление.