Переход сервера и клиентов 1С:Предприятия 8.3 на новую версию в Linux
Содержание
Чтобы обновить 1С на Linux, скачайте с портала поддержки дистрибутив новой версии платформы, поставьте его рядом со старой (с 8.3.20 версии живут в отдельных каталогах /opt/1cv8/x86_64/8.3.xx.yyyy), остановите службу старого сервера, включите службу новой версии и обновите клиенты до того же номера. Конфигурации баз при этом не трогаются: смена платформы и обновление конфигурации
— две разные операции.
Ниже порядок для сервера 1С:Предприятия 8.3 и клиентских мест на Debian, Ubuntu, Astra Linux, РЕД ОС и других дистрибутивах. Команды даны для платформы 8.3.20 и новее; где у старых версий другое поведение, это сказано отдельно.
Подготовка сервера и рабочих мест к обновлению
Обновление платформы ломается не на установке, а на мелочах: забытый клиент старой версии, несохранённый реестр кластера, нехватка места. Перед работой пройдите короткий список.
- Узнайте текущую версию. На сервере:
ls /opt/1cv8/x86_64/(новая схема) илиls /opt/1C/v8.3/x86_64/(пакеты до 8.3.20). Запущенную службу покажетsystemctl list-units | grep srv1cv8. - Проверьте совместимость. Новая версия платформы должна поддерживать релизы конфигураций, которые у вас стоят. Требования к минимальной версии платформы указаны в описании каждого релиза конфигурации.
- Сохраните реестр кластера. Это каталог служебного пользователя, по умолчанию
/home/usr1cv8/.1cv8/1C/1cv8/. В нём файл1cv8wsrv.lstи папкаreg_1541с файлом1CV8Clst.lst— список баз, настроек и администраторов кластера. - Сделайте копии баз. Для клиент-серверных баз — средствами СУБД (
pg_dumpдля PostgreSQL), для файловых — копию каталога с1Cv8.1CD. - Проверьте место. Одна версия платформы занимает около 1 ГБ, плюс понадобится место под дистрибутив и временные файлы.
- Предупредите пользователей. При перезапуске службы все сеансы оборвутся, несохранённые документы пропадут.
Перезапуск службы сервера 1С обрывает работу всех пользователей. Делайте это в окно обслуживания, вечером или в выходной.
Сохраните реестр кластера одной командой до любых действий: sudo tar czf /root/srvinfo-$(date +%F).tgz /home/usr1cv8/.1cv8/1C/1cv8. Если что-то пойдёт не так, его можно вернуть на место при остановленной службе.
Есть ли у 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:
- Поставьте новый клиент тем же установщиком с компонентом
client_fullилиclient_thin. - Запускайте через общий стартер
/opt/1cv8/common/1cestart. Он выбирает подходящую версию по настройкам списка баз. - Старый клиент можно оставить до конца перехода: версии не конфликтуют.
На рабочих местах с 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потом не стартует. - ❌ Смешивать платформу и конфигурацию в одно окно. Если что-то сломается, не поймёте, что именно.