Перевод сервера 1С:Предприятия на новую версию платформы в Debian
Содержание
Чтобы обновить 1С на Debian, ставят новую версию платформы рядом со старой, останавливают службу старого сервера, регистрируют и запускают службу новой версии, а затем приводят клиентов к тому же номеру сборки. Начиная с 8.3.20 каждая версия живёт в своём каталоге /opt/1cv8/x86_64/<версия>/, поэтому старая сборка остаётся на диске и откат занимает пару минут.
Способов поставить дистрибутив два: единый установщик setup-full-…-x86_64.run и набор deb-пакетов. Установщик удобнее, когда нужен выбор компонентов одной командой. Пакеты выбирают, если сервер обслуживается через apt и хочется, чтобы пакетный менеджер видел платформу. Порядок обновления у обоих вариантов одинаковый — ниже он расписан для системного администратора от проверки среды до диагностики.
1. Подготовка сервера Debian перед обновлением 1С
Сначала зафиксируйте, что стоит сейчас. Эти данные понадобятся и для обновления, и для отката.
cat /etc/debian_version # версия Debian
ls /opt/1cv8/x86_64/ # установленные версии платформы
systemctl list-units --all 'srv1cv8*' 'ras*' # службы сервера и RAS
ps -ef | grep -E 'ragent|rmngr|rphost' | grep -v grep
df -h /opt /home /var # место на дисках
Что проверить до начала:
- 🗂️ Резервная копия. Выгрузка или бэкап СУБД каждой базы кластера. Для PostgreSQL —
pg_dumpпо каждой базе. Без копии баз к обновлению не переходите. - 💾 Каталог кластера. По умолчанию это
/home/usr1cv8/.1cv8/1C/1cv8/. Там лежит реестр кластера (1cv8wsrv.lst, папкиreg_1541). Скопируйте его целиком:sudo tar czf /root/srvinfo-backup.tgz /home/usr1cv8/.1cv8/1C/1cv8. - 💽 Место. Одна версия сервера с веб-расширением занимает несколько сотен мегабайт. Плюс сеансовые данные и журналы. Держите запас хотя бы 2–3 ГБ.
- 🌐 Локаль. Сервер 1С работает с
ru_RU.UTF-8. Проверьте:locale -a | grep -i ru_RU. Если пусто —sudo dpkg-reconfigure localesи отметьтеru_RU.UTF-8 UTF-8. - 🧩 Совместимость. Посмотрите в документации к новой сборке список поддерживаемых версий Debian и PostgreSQL. Особенно если переходите между крупными ветками платформы.
Остановка службы сервера 1С обрывает все сеансы пользователей и фоновые задания. Обновление планируйте на нерабочее время и заранее предупредите пользователей.
2. Откуда брать дистрибутив и какие репозитории Debian нужны
Публичного apt-репозитория у платформы нет. Дистрибутив скачивают с портала обновлений по подписке ИТС под нужную архитектуру:
| Вариант | Что внутри | Когда выбирать |
|---|---|---|
setup-full-8.3.xx.xxxx-x86_64.run | Все компоненты: сервер, веб-расширение, клиенты, RAS | Нужно выбрать компоненты одной командой |
| Архив deb-пакетов для 64-разрядного сервера | Отдельные пакеты 1c-enterprise-<версия>-common, -server, -ws и др. | Платформой управляют через apt/dpkg |
Скачанный файл перенесите на сервер, например в /opt/distr/8.3.xx.xxxx/. Сверьте контрольную сумму, если она опубликована.
Репозитории самого Debian нужны для зависимостей. Шрифты Microsoft лежат в компоненте contrib, поэтому проверьте, что он подключён:
grep -rh '^deb\|^Components' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
В строке deb … или в поле Components: (формат deb822 в /etc/apt/sources.list.d/debian.sources) должны быть main contrib. Если contrib нет — допишите его и выполните sudo apt update.
Если серверов 1С несколько, удобно поднять локальный репозиторий из deb-пакетов платформы (например, через reprepro или простой каталог с dpkg-scanpackages). Тогда новую версию раскатывают одной командой apt install на всех узлах.
3. Зависимости и библиотеки для платформы 1С
Сервер 1С на Debian обычно требует шрифты, библиотеки работы со шрифтами и ODBC-обвязку. Базовый набор:
sudo apt update
sudo apt install fontconfig libfreetype6 libgsf-1-114 libglib2.0-0 unixodbc
sudo apt install ttf-mscorefonts-installer
sudo fc-cache -fv
Без шрифтов Microsoft печатные формы и отчёты, сформированные на сервере, «плывут»: съезжают колонки, меняется ширина текста.
Если после установки служба не стартует, найдите недостающие библиотеки прямо по бинарнику агента:
ldd /opt/1cv8/x86_64/8.3.xx.xxxx/ragent | grep 'not found'
Каждая строка not found — имя библиотеки. Найти пакет поможет apt-file search <имя.so> (сначала sudo apt install apt-file && sudo apt-file update).
При установке deb-пакетов через apt install ./файл.deb зависимости подтянутся сами. Если ставили через dpkg -i и получили ошибку зависимостей, исправьте её командой sudo apt -f install.
4. Обновление сервера 1С на Debian пошагово
4.1. Установка новой версии рядом со старой
Вариант с установщиком .run:
cd /opt/distr/8.3.xx.xxxx
chmod +x setup-full-8.3.xx.xxxx-x86_64.run
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,ru
Компонент ws нужен, только если базы опубликованы на веб-сервере. Полный список компонентов выводит ./setup-full-…-x86_64.run --help.
Вариант с deb-пакетами — из каталога с распакованным архивом:
sudo apt install ./1c-enterprise-8.3.xx.xxxx-common_*.deb \
./1c-enterprise-8.3.xx.xxxx-server_*.deb \
./1c-enterprise-8.3.xx.xxxx-ws_*.deb
Пакеты с суффиксом -nls добавьте, если нужны дополнительные языки интерфейса.
Проверьте, что появился новый каталог: ls /opt/1cv8/x86_64/. Старая версия при этом не удаляется.
4.2. Переключение службы systemd
В современных сборках в каталоге версии лежит шаблон службы srv1cv8-<версия>@.service. Экземпляр default использует стандартный каталог кластера и порты 1540/1541.
OLD=8.3.22.1709 # подставьте свои номера
NEW=8.3.24.1586
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
Новая служба подхватит тот же реестр кластера: базы, рабочие серверы и администраторы кластера сохранятся.
Если на старой версии служба запускалась init-скриптом srv1cv83 (параметры в /etc/default/srv1cv83), остановите её через sudo systemctl stop srv1cv83 и отключите автозапуск. Параметры из /etc/default/srv1cv83 (порты, каталог данных, отладка) перенесите в новую службу через sudo systemctl edit srv1cv8-$NEW@default.
Служба сервера администрирования RAS тоже привязана к версии. Если вы управляете кластером через rac или удалённую консоль, переключите и её — шаблон лежит в том же каталоге версии. Затем проверьте: /opt/1cv8/x86_64/$NEW/rac cluster list.
4.3. Веб-сервер Apache
Этот шаг чаще всего забывают. Модуль веб-расширения подключён в конфигурации Apache по полному пути с номером версии:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.22.1709/wsap24.so"
Найдите все такие строки и замените номер версии:
grep -rn '_1cws_module' /etc/apache2/
sudo sed -i "s#/x86_64/$OLD/wsap24.so#/x86_64/$NEW/wsap24.so#" /etc/apache2/conf-available/1c.conf # путь к вашему файлу
sudo apachectl configtest && sudo systemctl restart apache2
Пока модуль указывает на старую версию, веб-клиент и HTTP-сервисы получат ошибку несоответствия версий.
4.4. Клиенты
Версия клиента должна совпадать с версией сервера до последней цифры. Варианты:
- 🖥️ Клиенты на Linux — тот же установщик с компонентами
client_fullилиclient_thin. - 🪟 Клиенты на Windows — установка нужной версии платформы вручную или через групповые политики. Лаунчер
1cestartсам выберет установленную версию под сервер. - 🌍 Веб-клиент — обновляется вместе с модулем Apache, на рабочих местах ничего ставить не нужно.
Обновлять клиентов лучше в то же окно работ. Иначе утром пользователи увидят ошибку о несовпадении версий.
4.5. Кластер из нескольких серверов
Все рабочие серверы одного кластера должны работать на одной версии платформы. Порядок такой:
- Остановите службы на всех узлах: сначала на дополнительных рабочих серверах, затем на центральном.
- Установите новую версию на каждый узел.
- Запустите службу на центральном сервере и убедитесь, что кластер виден через
rac cluster list. - Запустите службы на остальных узлах и проверьте в консоли, что все рабочие серверы в строю.
Если один узел остался на старой версии, он не сможет работать с кластером, а сеансы на нём будут завершаться ошибками.
4.6. Проверка после переключения
Перед тем как открыть доступ пользователям, пройдите короткий контроль:
Регламентные задания удобно проверить по журналу регистрации любой базы: через полчаса после запуска в нём должны появиться записи о выполненных заданиях.
5. Права, пользователь usr1cv8 и лицензии после обновления
Служба работает от пользователя usr1cv8 (группа grp1cv8). Установщик создаёт его при первой установке, при обновлении — использует существующего.
Права чаще всего ломаются, когда сервер хоть раз запускали вручную из-под root: в каталоге кластера появляются файлы, принадлежащие root, и служба падает при старте. Проверка и исправление:
sudo find /home/usr1cv8/.1cv8 ! -user usr1cv8 -ls
sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8
То же касается каталогов технологического журнала и дампов: пользователь usr1cv8 должен иметь право записи в них.
Что происходит с лицензиями:
- 🔑 Программная лицензия хранится в файлах в
/var/1C/licenses. Обновление платформы её не затрагивает. Перевыпуск нужен, только если поменялось «железо» или параметры системы, к которым лицензия привязана. Проверьте, чтоusr1cv8может читать этот каталог. - 🔌 Аппаратный ключ HASP работает через драйвер ключа для Linux. Обновление платформы драйвер не трогает, но после перезагрузки сервера убедитесь, что его служба запущена.
Не активируйте лицензию повторно «на всякий случай» — число повторных активаций ограничено, а старые файлы лицензий удалять при обновлении не нужно.
6. Диагностика: журналы, типичные сбои и откат
Первое место для поиска причины — журнал systemd:
journalctl -u srv1cv8-$NEW@default -n 200 --no-pager
ss -tlnp | grep -E ':(1540|1541|15[6-9][0-9])\b'
Вторая команда показывает, кто занял порты. Если на 1540 висит процесс старой версии, значит, старая служба не остановилась.
Для подробной картины включают технологический журнал: файл logcfg.xml кладут в каталог conf платформы (в новых сборках — /opt/1cv8/conf/). Пример минимальной настройки, которая пишет исключения и сеансы с ошибками:
<?xml version="1.0" encoding="UTF-8"?>
<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>
Каталог /var/log/1c/techlog создайте заранее и отдайте его usr1cv8. После диагностики журнал отключите, иначе он займёт диск.
Если не помогло: откат на прежнюю версию
Старая версия осталась на диске, поэтому откат — это обратное переключение службы:
sudo systemctl disable --now srv1cv8-$NEW@default
sudo systemctl enable --now srv1cv8-$OLD@default
Верните прежний путь в LoadModule Apache и перезапустите веб-сервер. Если реестр кластера повреждён, остановите службу и восстановите каталог из архива srvinfo-backup.tgz.
После недели стабильной работы старую версию можно удалить: для пакетов — sudo apt remove по списку из dpkg -l | grep 1c-enterprise, для установки через .run — деинсталлятором в каталоге этой версии.