Переход сервера 1С:Предприятия на Linux на новую версию платформы
Содержание
Обновить сервер
1С на Linux — значит поставить новую сборку платформы 8.3 рядом со старой, переключить на неё службу srv1cv83 и проверить, что кластер поднялся с теми же базами. Файлы старой версии при этом можно не трогать: это и есть ваш быстрый откат.
Всё делается под root или через sudo, по SSH. Окно работ нужно согласовать: пока служба остановлена, пользователи из клиент-серверных баз выброшены. Обычно хватает 15–30 минут, если пакеты скачаны заранее.
Что проверить и подготовить до остановки сервера
Начните с трёх вопросов: какая сборка стоит сейчас, какая нужна и что от неё зависит.
Текущую версию покажет каталог установки и список пакетов:
ls /opt/1cv8/x86_64/
dpkg -l | grep 1c-enterprise # Debian, Ubuntu
rpm -qa | grep 1c-enterprise # RedHat, Alt, РЕД ОС
Затем сверьте окружение:
- 🖥 Клиенты. Клиентское приложение и сервер должны быть одной сборки в пределах 8.3.x. Если обновляете сервер до 8.3.25, на рабочих местах тоже понадобится 8.3.25. Лучше раздать новую сборку клиентам заранее, до окна работ.
- 🧩 Конфигурации. Новая платформа может потребовать не ниже определённого релиза конфигурации. Требования указаны в описании релиза платформы и в документации к вашей конфигурации.
- 🔑 Лицензии. Для аппаратных ключей драйвер (
haspd,aksusbd) ставится отдельно и от платформы не зависит. Программные лицензии лежат в каталоге лицензий на сервере; их проверьте до обновления, а не после. - 💾 Место на диске. Новая сборка занимает несколько сотен мегабайт в
/opt/1cv8. Проверьтеdf -hдля этого раздела.
Дистрибутив берите с официального портала поддержки 1С под свою разрядность: пакеты deb или rpm, либо универсальный установщик .run. Понадобятся компоненты common и server (и ws, если на этой же машине стоят веб-сервисы и публикация).
Скачайте и распакуйте архив заранее, до окна работ. Простой службы тогда равен времени установки, а не времени закачки.
Резервная копия кластера и баз
Здесь два разных объекта, и копировать нужно оба.
Метаданные кластера лежат в домашнем каталоге пользователя, от имени которого работает служба. Чаще всего это /home/usr1cv8/.1cv8/1C/1cv8/: внутри каталог reg_1541 (реестр кластера: список баз, администраторы, серверы) и служебные данные сеансов. Потеряете реестр — придётся заново регистрировать все базы.
Сами базы — отдельно. Для клиент-серверных это дамп СУБД (pg_dump для PostgreSQL, бэкап средствами MS SQL), для файловых — копия каталога с файлом 1Cv8.1CD.
systemctl stop srv1cv83
tar -czf /backup/1cv8-cluster-$(date +%F).tar.gz /home/usr1cv8/.1cv8
Архивируйте реестр кластера только после остановки службы, иначе получите копию в момент записи. Имя службы и каталог данных на вашем сервере могут отличаться — посмотрите systemctl status srv1cv83 и параметры запуска в юните.
Делайте дамп баз до обновления, а не «заодно». Платформа сама структуру базы не меняет: перестроение происходит только при обновлении конфигурации. Но если после неудачной установки вы решите восстанавливать окружение, свежая копия окажется нужной.
Остановка службы и завершение процессов
Остановка выбросит всех пользователей, а незакрытые документы потеряют несохранённые правки. Поэтому порядок такой:
- Предупредите людей и закройте регламентные задания: выгрузки, обмены, фоновые обработки.
- В консоли администрирования или командой
racпроверьте, кто подключён. Список кластеров показываетrac cluster list, остальные подкоманды —rac help. - Остановите службу:
systemctl stop srv1cv83
- Убедитесь, что процессы ушли:
ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep
Если вывод пустой — можно ставить. Если остались rphost или rmngr, подождите минуту: рабочие процессы завершают сеансы не мгновенно.
Зависший процесс принудительно снимайте только после того, как убедились, что в нём нет активной записи в базу: kill без флагов даёт процессу шанс закрыться штатно, kill -9 — нет. Если в системе работает ещё и RAS (сервер администрирования), остановите и его, иначе он будет держать порт.
Файловые базы остановка службы не затрагивает: если с этого сервера открыты каталоги с 1Cv8.1CD, проверьте отдельно, что в них никто не работает.
Установка новой версии платформы
Новую сборку ставят в отдельный каталог вида /opt/1cv8/x86_64/8.3.x.y/, старая остаётся рядом. Выберите способ по своей системе.
| Способ | Когда | Команда и нюансы |
|---|---|---|
| Пакеты deb | Debian, Ubuntu | dpkg -i 1c-enterprise-8.3.x.y-common_*.deb 1c-enterprise-8.3.x.y-server_*.deb, зависимости добирает apt -f install |
| Пакеты rpm | РЕД ОС, Alt, RHEL | rpm -Uvh или менеджер пакетов; проверьте, что сборка не заменяет старую |
Установщик .run | универсально | запуск от root, компоненты задаются ключом --enable-components |
Пример для неинтерактивной установки универсальным установщиком:
chmod +x setup-full-8.3.x.y-x86_64.run
./setup-full-8.3.x.y-x86_64.run --mode unattended --enable-components server
Если нужен ещё и модуль расширения веб-сервера, добавьте компонент ws. Точные ключи и названия компонентов смотрите в --help самого установщика: они меняются от версии к версии.
После установки проверьте результат:
ls /opt/1cv8/x86_64/
Должны быть оба каталога: старый и новый. Старый не удаляйте до конца проверки — пока он на диске, откат занимает минуту.
Права на каталоги и владелец файлов
Служба 1С работает не от root, а от пользователя usr1cv8 (группа grp1cv8). Если запускать установку и ручные операции от root, часть файлов окажется чужой для службы — классический источник «служба стартует, но не видит кластер».
Что проверить:
- каталог данных кластера принадлежит
usr1cv8:grp1cv8; - каталог журналов регистрации и временные файлы доступны на запись этому пользователю;
- каталоги резервных копий и выгрузок, куда пишут регламентные задания, тоже открыты ему.
Если после распаковки бэкапа или копирования владельцы слетели, верните их:
chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8
Команду с -R запускайте с точным путём, а не от корня каталога; опечатка в пути обойдётся дорого.
Отдельный пункт — запуск службы из нового каталога. Юнит srv1cv83 обычно содержит путь к конкретной сборке в ExecStart (или ссылается на файл в /opt/1cv8/x86_64/8.3.x.y/). Откройте его и убедитесь, что путь указывает на новую версию:
systemctl cat srv1cv83
Если установщик не обновил юнит сам, поправьте путь вручную и выполните systemctl daemon-reload.
Запуск службы и проверка работы кластера
systemctl start srv1cv83
systemctl status srv1cv83
Убедитесь, что в статусе active (running). Затем проверьте, что слушаются порты: агент сервера по умолчанию на 1540, менеджер кластера на 1541, рабочие процессы берут адреса из диапазона, заданного в свойствах рабочего сервера.
ss -ltnp | grep -E '1540|1541'
ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep
В выводе ps путь к ragent должен вести в каталог новой сборки. Если там старая — служба стартует из прежнего места, и вы не обновились.
Теперь проверка со стороны пользователя:
- подключитесь консолью администрирования 1С или
rac cluster listи убедитесь, что кластер на месте; - откройте информационные базы в списке кластера — все должны быть видны;
- запустите клиент новой сборки, войдите в рабочую базу, проведите пробный документ и откройте тяжёлый отчёт;
- загляните в журнал регистрации и в системный журнал (
journalctl -u srv1cv83) на предмет ошибок при старте.
Ошибки при обновлении: диагностика и лицензии
Что ломается чаще всего и как это чинить.
usr1cv8. Проверьте ls -l на каталоге данных и верните владельца командой chown. Затем снова systemctl start srv1cv83.ss -ltnp и остановите его, затем запустите службу заново.haspd или aksusbd), виден ли ключ в системе, и лежит ли файл лицензии там, где его ожидает платформа.Откат на предыдущую версию
Если новая сборка ведёт себя плохо, а старый каталог на месте:
- Остановите службу.
- Верните в юните путь
ExecStartна прежний каталог. systemctl daemon-reload, затемsystemctl start srv1cv83.
Реестр кластера платформа новой версией может перезаписать формат, поэтому для надёжного отката держите архив, сделанный на втором шаге. Если после старта на старой сборке кластер не поднимается, распакуйте архив поверх повреждённого каталога, остановив службу, и восстановите владельца через chown.
Сервер администрирования, ключи и публикации
Кроме самой службы сервера, на машине могут жить ещё три компонента. Их легко забыть, и каждый ломает картину «вроде обновились».
RAS. Если вы пользуетесь утилитой rac или внешней консолью, у вас запущен сервер администрирования ras. Он стартует отдельно, часто своей службой или вручную. Путь к его исполняемому файлу тоже ведёт в каталог конкретной сборки, поэтому после перехода на новую версию запускайте его оттуда. Типичная команда запуска: ras cluster --port=1545, где порт — ваш выбор.
Драйвер ключа. Аппаратному ключу нужна работающая служба драйвера, и от версии платформы она не зависит. Но после обновления ядра ОС драйвер иногда приходится пересобрать. Если лицензия «пропала» сразу после перезагрузки сервера, смотрите на драйвер, а не на платформу.
Веб-публикации. Если на этой же машине стоит Apache или другой веб-сервер с модулем 1С, модуль берётся из каталога платформы. Публикации, сделанные для старой сборки, нужно обновить: перепубликовать базы из конфигуратора или утилитой webinst. Пока этого нет, веб-клиент идёт к старому модулю.
Порядок на практике такой: остановили службу и RAS, поставили платформу, поправили пути в юнитах, запустили сервер, потом RAS, и только затем перепубликовали веб-сервисы. Любая другая очерёдность создаёт путаницу в логах.
Отдельно подумайте, где лежат ваши скрипты: часто в cron или в планировщике завёрнуты вызовы 1cv8 с абсолютным путём к старой сборке. Найдите такие строки через grep -r "x86_64/8.3" /etc /opt /usr/local и обновите пути, иначе ночное задание продолжит запускать прежнюю версию либо упадёт после удаления каталога.
Что делать после: уборка и профилактика
Когда всё отработало хотя бы пару рабочих дней, удалите старую сборку, чтобы не копились версии. Для пакетов это apt remove или rpm -e по точному имени пакета старой версии, для .run — деинсталлятор из каталога старой сборки. Перед этим убедитесь по ps, что ни один процесс не запущен оттуда.
Чтобы следующее обновление прошло спокойнее:
- 📋 храните команды обновления в короткой памятке для администратора;
- 🗓 планируйте окна заранее и ставьте обновление не в пик закрытия периода;
- 🧪 сначала отрабатывайте обновление на тестовой копии сервера с копией базы;
- 📦 держите архив дистрибутива под рукой: старые сборки со временем бывает трудно найти.
Один нюанс, который часто упускают: после обновления платформы на сервере проверьте публикации. Если веб-серверу нужен свежий модуль расширения, публикацию баз нужно перепубликовать из конфигуратора или утилитой webinst. Иначе тонкий клиент работает, а веб-клиент обращается к старому модулю.
Частые вопросы
Нужно ли обновлять конфигурацию при обновлении платформы?
Можно ли держать на сервере две версии платформы одновременно?
Нужно ли переустанавливать кластер при смене версии?
usr1cv8, и новая сборка подхватывает его. Именно поэтому его бэкап обязателен, а пересоздание кластера не нужно.Какие клиенты придётся обновлять?
Сколько простаивает сервер при обновлении?
Что делать, если служба не стартует после установки?
journalctl -u srv1cv83, проверьте владельца каталога данных и путь в юните. Если причина не находится быстро, откатитесь на прежнюю сборку и разбирайтесь вне окна работ.