Переход сервера 1С на новую версию платформы в Ubuntu, Debian и CentOS без простоя и потери кластера
Содержание
Чтобы обновить 1С:Предприятие на сервере Linux, нужно поставить новую версию платформы рядом со старой, остановить старую службу srv1cv8, включить службу новой версии и проверить, что кластер и базы на месте. С версии 8.3.20 каждая платформа ставится в свой каталог /opt/1cv8/x86_64/<версия>/, поэтому старая версия остаётся на диске и служит готовым путём отката.
Простой для пользователей — это только время переключения службы: обычно несколько минут. Всё остальное — скачивание, установку пакетов, проверку зависимостей — делают заранее, днём, без остановки работы.
Что сделать до обновления платформы
Обновление платформы не трогает данные в базах, но меняет программу, которая с ними работает. Поэтому готовьте не только копию баз, но и копию настроек кластера.
Три копии, без которых не начинайте
- 🗄️ Копия баз данных. Для PostgreSQL —
pg_dumpкаждой базы, для MS SQL на отдельном сервере — штатный бэкап СУБД. Выгрузка в.dtтоже подойдёт, но на больших базах она идёт часами. - 📁 Копия каталога кластера. По умолчанию это
/home/usr1cv8/.1cv8/1C/1cv8/. Там лежит реестр кластера1CV8Clst.lst, список баз, настройки рабочих серверов и сеансовые данные. - 🔑 Копия файлов программных лицензий. Обычно они в
/var/1C/licenses/. Платформа их не удаляет, но при неудачных экспериментах с правами каталог иногда портят.
sudo systemctl stop srv1cv8-8.3.23.1865@default # имя службы вашей текущей версии
sudo tar czf /root/srvinfo-$(date +%F).tar.gz /home/usr1cv8/.1cv8
sudo tar czf /root/licenses-$(date +%F).tar.gz /var/1C/licenses
Остановка службы обрывает все сеансы: пользователи потеряют несохранённые документы, фоновые задания прервутся. Копию srvinfo снимайте в согласованное окно или копируйте каталог без остановки, понимая, что сеансовые файлы в ней будут неконсистентны. Для отката важен реестр кластера, а он меняется редко.
Что проверить заранее
- Совместимость конфигураций. У каждой типовой конфигурации в описании релиза указана минимальная версия платформы. Новая платформа должна быть не ниже этого номера — и при этом поддерживаться конфигурацией.
- Версию СУБД. Новые выпуски платформы иногда требуют более свежую сборку PostgreSQL. Сверьте номер своей сборки со списком поддерживаемых в описании выпуска платформы.
- Клиентов. Версия клиента должна совпадать с версией сервера до последней цифры. Подумайте, как обновятся рабочие места: вручную, через автообновление или через общий каталог дистрибутивов.
- Свободное место. Одна версия сервера занимает несколько сотен мегабайт в
/opt, плюс архив дистрибутива во временном каталоге.
Не обновляйте платформу на сервере в разгар закрытия месяца или сдачи отчётности. Даже удачный переход меняет поведение отдельных форм и отчётов.
Какой дистрибутив скачать и каким способом ставить
Дистрибутивы сервера берут на портале обновлений 1С в разделе «Технологическая платформа 8.3», выбрав нужную версию. Для Linux там лежат отдельные архивы для DEB-систем (Debian, Ubuntu, Astra) и для RPM-систем (CentOS, RHEL, РЕД ОС, Alma, Rocky).
Способ установки зависит от версии платформы:
| Версия платформы | Что внутри архива | Куда ставится | Как обновлять |
|---|---|---|---|
| До 8.3.20 | Набор пакетов 1c-enterprise83-*.deb или 1C_Enterprise83-*.rpm | /opt/1C/v8.3/x86_64/ | Новая версия замещает старую в том же каталоге |
| 8.3.20 и новее | Единый установщик setup-full-<версия>-x86_64.run | /opt/1cv8/x86_64/<версия>/ | Версии ставятся рядом, переключается служба |
Если сейчас у вас платформа до 8.3.20, а ставите вы новую — это переход между двумя схемами. Старые пакеты и старый скрипт службы srv1cv83 придётся убрать вручную после проверки новой версии.
Скачивайте только архив сервера своей разрядности. Клиентский дистрибутив на сервере нужен лишь тогда, когда на нём же работают пользователи или запускается Конфигуратор.
Обновление сервера 1С на Ubuntu и Debian
Пример ниже — переход с 8.3.23.1865 на 8.3.24.1691. Номера подставьте свои: они нужны в путях и в имени службы.
Шаг 1. Установить новую версию рядом со старой
Эту часть можно сделать днём, служба продолжает работать.
NEW=8.3.24.1691
tar xzf server64_8_3_24_1691.tar.gz
chmod +x setup-full-$NEW-x86_64.run
sudo ./setup-full-$NEW-x86_64.run --mode unattended --enable-components server,ws
Компонент server — сам сервер 1С, ws — модуль веб-сервера для публикаций. Список остальных компонентов (консоль администрирования, сервер хранилища) покажет запуск установщика с ключом --help.
После установки проверьте, что каталог появился:
ls /opt/1cv8/x86_64/
Шаг 2. Проверить зависимости до переключения
Скрытый приём, который экономит окно обновления: прогоните ldd по главным бинарникам новой версии. Отсутствующая библиотека всплывёт сейчас, а не в момент, когда пользователи уже отключены.
ldd /opt/1cv8/x86_64/$NEW/ragent | grep "not found"
ldd /opt/1cv8/x86_64/$NEW/rphost | grep "not found"
Пустой вывод — всё на месте. Если что-то не найдено, доставьте пакет через apt. Для корректной печати форм на сервере обычно ставят ещё шрифты Microsoft (ttf-mscorefonts-installer) и fontconfig.
Шаг 3. Переключить службу
С этого момента пользователи отключаются. Предупредите их заранее.
OLD=8.3.23.1865
NEW=8.3.24.1691
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
Если старая версия ниже 8.3.20 и запускалась скриптом srv1cv83, остановите и отключите именно его:
sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83
Шаг 4. Убедиться, что сервер ожил
systemctl status srv1cv8-$NEW@default
ss -tlnp | grep -E ':154[01]'
Агент сервера слушает порт 1540, менеджер кластера — 1541, рабочие процессы — диапазон, заданный в свойствах рабочего сервера (по умолчанию 1560–1591). Затем откройте консоль администрирования новой версии: кластер, список баз и рабочие серверы должны быть прежними.
Старые пакеты до 8.3.20
Если вы обновляетесь в пределах старой схемы, пакеты ставят поверх:
sudo systemctl stop srv1cv83
sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb 1c-enterprise83-ws_*.deb
sudo systemctl start srv1cv83
Ставьте common раньше server: серверный пакет зависит от него. Пакеты с суффиксом -nls нужны для языков интерфейса, кроме русского и английского.
Обновление на CentOS, RHEL и их наследниках
Для RPM-систем логика та же: установка рядом, переключение службы, проверка. Отличия — в менеджере пакетов, файрволе и SELinux.
- Установите новую версию тем же установщиком
setup-full-<версия>-x86_64.runиз архива для RPM-систем, с теми же ключами. - Зависимости ставьте через
dnf(на старых системах —yum). Проверка черезlddиз раздела про Ubuntu работает без изменений. - Переключите службу командами
systemctl, как описано выше. - Убедитесь, что порты открыты в
firewalld. После переустановки они не закрываются, но на новом сервере их часто забывают:
sudo firewall-cmd --permanent --add-port=1540-1541/tcp --add-port=1560-1591/tcp
sudo firewall-cmd --reload
- Если служба стартует и сразу падает без внятной ошибки в журнале — проверьте SELinux командой
getenforceи поищите отказы в/var/log/audit/audit.log. Правильный путь — разрешить нужные действия политикой, а не отключать SELinux на весь сервер.
Для платформ до 8.3.20 обновление пакетами выглядит так:
sudo systemctl stop srv1cv83
sudo rpm -Uvh 1C_Enterprise83-common-*.rpm 1C_Enterprise83-server-*.rpm 1C_Enterprise83-ws-*.rpm
sudo systemctl start srv1cv83
CentOS 7 и CentOS 8 больше не получают обновлений безопасности. Если сервер 1С всё ещё на них, плановое обновление платформы — хороший повод спланировать и переезд ОС на поддерживаемый дистрибутив.
Права пользователя usr1cv8, служба и веб-публикации
Сервер 1С работает от пользователя usr1cv8 из группы grp1cv8. Установщик создаёт их сам, если их нет. Проблемы начинаются, когда каталог кластера копировали или восстанавливали из архива от имени root.
Верните владельца каталогам, с которыми работает сервер:
sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses
Не забудьте про Apache
Это главный шаг, который пропускают. В конфигурации Apache путь к модулю веб-сервиса содержит номер версии:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.23.1865/wsap24.so"
После переключения сервера веб-клиент и HTTP-сервисы продолжат ходить через модуль старой версии. Результат — ошибка несовпадения версий у всех, кто работает через браузер или мобильное приложение.
Найдите строку и замените номер:
grep -rn "wsap24.so" /etc/apache2/ /etc/httpd/ 2>/dev/null
sudo apachectl configtest && sudo systemctl restart apache2 # на RPM-системах: httpd
Перезапуск Apache обрывает текущие сеансы веб-клиента, так что делайте его в то же окно, что и переключение сервера.
Клиенты на рабочих местах
Тонкий клиент другой версии при подключении сообщит, что версии клиента и сервера различаются. Варианты решения:
- 💻 поставить нужную версию клиента на каждое рабочее место вручную или через групповые политики;
- 🔄 настроить автоматическое обновление клиентов из общего сетевого каталога с дистрибутивами;
- 🌐 для терминального сервера — обновить платформу там в то же окно, что и сервер 1С.
Как откатиться, если новая версия не взлетела
Раздельные каталоги версий делают откат быстрым. Порядок такой:
- Остановите и отключите службу новой версии:
systemctl disable --now srv1cv8-<новая>@default. - Если новая версия успела поработать с кластером, восстановите каталог
/home/usr1cv8/.1cv8из архива, снятого перед обновлением. Новая версия могла изменить формат служебных файлов, и старая на них споткнётся. - Включите службу старой версии:
systemctl enable --now srv1cv8-<старая>@default. - Верните в Apache путь к модулю старой версии и перезапустите веб-сервер.
Базы в СУБД при этом восстанавливать не нужно, если вы не обновляли конфигурацию. Смена платформы сама по себе структуру базы не переписывает.
Если после смены платформы вы успели обновить и конфигурацию базы на релиз, требующий новой платформы, откат платформы уже не поможет: эту базу старая версия не откроет. Тогда откатывают и базу — из копии СУБД.
Старую версию удаляйте не сразу, а через неделю-две спокойной работы. Для версий 8.3.20 и новее в её каталоге есть деинсталлятор; для старых пакетов — apt remove или dnf remove по списку из dpkg -l | grep 1c-enterprise или rpm -qa | grep 1C_Enterprise.
Ошибки запуска и где искать причину
Первое место для поиска — журнал службы:
journalctl -u srv1cv8-8.3.24.1691@default -n 100 --no-pager
Если журнал пуст или неинформативен, включите технологический журнал. Файл logcfg.xml кладут в каталог conf: для версий 8.3.20+ это обычно /opt/1cv8/conf/, для старых — /opt/1C/v8.3/x86_64/conf/. Каталог для логов должен быть доступен на запись пользователю usr1cv8, иначе журнал молча не пишется.
Ещё одна частая причина пустого кластера — каталог srvinfo восстановили из архива, но не в тот путь. Распакуйте архив и сравните пути до файла 1CV8Clst.lst с тем, что ждёт служба.