Переход сервера 1С:Предприятия 8.3 на новую версию в Linux без остановки на день
Содержание
Чтобы обновить платформу
1С на Linux, новую версию ставят рядом со старой в /opt/1cv8/x86_64/<номер версии>/, затем останавливают службу старого сервера, подключают systemd-юнит новой версии и запускают его. Базы, реестр кластера и программные лицензии остаются на месте. Старую версию удаляют только после того, как пользователи день-два поработали на новой.
Способ установки зависит от того, что лежит в архиве с дистрибутивом. В актуальных версиях (8.3.20 и новее) сервер для Linux поставляется единым установщиком setup-full-…-x86_64.run. В старых сборках внутри были пакеты deb или rpm. Порядок перехода в обоих случаях одинаковый, отличается только команда установки.
1. Подготовка: какая версия стоит сейчас и что сохранить
Сначала выясните, что именно работает на сервере. Часто там оказывается две-три версии платформы, а служба запущена совсем не от той, которую все считают «текущей».
# какие версии установлены
ls /opt/1cv8/x86_64/
# от какой версии запущен агент сервера
ps -ef | grep -E 'ragent|rmngr|rphost' | grep -v grep
# какие службы 1С есть в systemd
systemctl list-units --all | grep -i 1cv8
В выводе ps путь к ragent содержит номер версии — это и есть рабочая платформа. Если служб нет в systemd, а агент запускается через /etc/init.d/srv1cv83, у вас старая схема установки. Её тоже можно перевести на новую версию, но сначала разберитесь, где лежат параметры запуска (обычно /etc/sysconfig/srv1cv83 или /etc/default/srv1cv83).
Что сохранить до обновления:
- 📁 каталог кластера — по умолчанию
/home/usr1cv8/.1cv8/1C/1cv8/, внутри1cv8wsrv.lstи папкаreg_1541со списком баз и настройками кластера; - 🔑 программные лицензии из
/var/1C/licenses/; - ⚙️ файлы
conf.cfg,logcfg.xml,nethasp.iniиз/opt/1cv8/conf/и из каталогаconfтекущей версии, если вы их правили; - 🗄️ сами базы: для PostgreSQL —
pg_dumpпо каждой базе, плюс выгрузка.dtдля самых важных; - 🌐 конфигурацию веб-сервера, если базы опубликованы через Apache.
sudo systemctl stop srv1cv8-8.3.22.2208@default # остановка нужна для согласованной копии реестра
sudo tar czf /root/1c-backup-$(date +%F).tar.gz \
/home/usr1cv8/.1cv8 /var/1C/licenses /opt/1cv8/conf
Остановка службы обрывает все сеансы пользователей и фоновые задания. Делайте это в согласованное окно — вечером или в выходной, предупредив пользователей заранее.
Номер 8.3.22.2208 здесь и дальше — пример. Подставляйте свою версию из вывода ls.
Ещё один пункт подготовки, о котором вспоминают поздно, — совместимость конфигураций. Сама платформа конфигурации не меняет, но у каждого релиза типовой конфигурации есть минимальная и рекомендуемая версия платформы. Сверьте это в описании релиза ваших конфигураций до того, как выбрать номер платформы.
2. Где взять дистрибутив новой версии
Дистрибутивы платформы распространяются только легально: с портала обновлений 1С по действующей подписке ИТС или через обслуживающего партнёра. Для Linux нужен архив «Технологическая платформа 1С:Предприятия (64-bit) для Linux». Внутри — установщик для сервера и отдельно для клиента.
| Что нужно | Какой дистрибутив |
|---|---|
| Сервер 1С на Linux | серверный архив 64-bit для Linux (server64_…tar.gz) |
| Толстый и тонкий клиент на Linux | клиентский архив 64-bit для Linux |
| Клиенты на рабочих местах Windows | дистрибутив для Windows той же версии |
| Сервер на ARM или российских ОС | отдельные сборки, если они выпущены для вашей версии |
Скачанный архив переносите на сервер любым удобным способом, например scp. Сразу проверьте, что он не повреждён при загрузке:
tar tzf server64_8_3_24_1586.tar.gz > /dev/null && echo OK
Публичного репозитория APT или YUM у фирмы 1С нет. Поэтому apt upgrade и dnf upgrade платформу не обновят — её всегда ставят из скачанного дистрибутива.
3. Установка через пакетный менеджер: APT и YUM/DNF
Этот путь актуален для старых версий, в архивах которых лежат пакеты .deb или .rpm. Пакетный менеджер здесь нужен не для скачивания 1С, а чтобы корректно поставить пакеты и подтянуть системные зависимости.
Debian, Ubuntu, Astra Linux:
mkdir ~/1c-new && tar xzf deb64_8_3_18_1208.tar.gz -C ~/1c-new
cd ~/1c-new
sudo apt install ./*common*.deb ./*server*.deb ./*ws*.deb
Команда apt install ./файл.deb удобнее, чем dpkg -i: она сама доставит недостающие библиотеки из системных репозиториев. Если всё же ставили через dpkg -i и получили ошибки зависимостей, добейте их командой sudo apt -f install.
RHEL, CentOS, РЕД ОС, AlmaLinux:
mkdir ~/1c-new && tar xzf rpm64_8_3_18_1208.tar.gz -C ~/1c-new
cd ~/1c-new
sudo dnf install ./*common*.rpm ./*server*.rpm ./*ws*.rpm
На старых системах без dnf используйте yum localinstall с теми же файлами.
💡 Пакеты с суффиксом ws — это модуль веб-расширения для Apache. Если базы не публикуются, их можно не ставить. Пакеты client на сервер без графической оболочки ставить незачем.
В разных поколениях платформы имена пакетов устроены по-разному. В более ранних сборках пакеты назывались без номера версии, и установка новой версии заменяла старую. В поздних deb/rpm номер версии входит в имя, и две версии живут рядом. Посмотрите, что уже стоит, до установки:
dpkg -l | grep 1c-enterprise # Debian/Ubuntu
rpm -qa | grep 1c-enterprise # RHEL-семейство
Если имена без версии — замена будет «на месте», и откатиться можно только переустановкой старых пакетов. Держите старый архив под рукой.
4. Ручная установка из архива TAR.GZ установщиком .run
Для версий 8.3.20 и новее основной способ — единый установщик. Он кладёт каждую версию в свой каталог и ничего не перезаписывает.
mkdir ~/1c-new && tar xzf server64_8_3_24_1586.tar.gz -C ~/1c-new
cd ~/1c-new
chmod +x setup-full-8.3.24.1586-x86_64.run
sudo ./setup-full-8.3.24.1586-x86_64.run --mode unattended --enable-components server,ws
Ключ --mode unattended ставит без вопросов, --enable-components перечисляет компоненты. Полный список компонентов для вашей версии выводит --help того же установщика — сверьтесь с ним, если нужен ещё сервер хранилища или консоль администрирования.
Без ключей установщик запустит интерактивный режим. На сервере без графики он работает в текстовом виде прямо в терминале.
Результат проверяется одной командой:
ls /opt/1cv8/x86_64/
# 8.3.22.2208 8.3.24.1586
Ничего не удаляйте сразу после установки. Старая версия — ваш план отката: если новая поведёт себя плохо, вы просто вернёте службу на прежний каталог.
5. Ключи защиты и лицензии после обновления платформы
Платформа и лицензия — разные вещи. Обновление версии само по себе лицензию не отзывает, но при неаккуратном переходе её легко «потерять».
Программные лицензии. Хранятся в /var/1C/licenses/ в файлах .lic. Новая версия сервера ищет их там же, поэтому переносить ничего не нужно. Лицензия привязана к параметрам оборудования, а не к номеру платформы. Проблемы появляются, если одновременно с обновлением меняли железо, переустанавливали ОС или переносили сервер на другую виртуальную машину — тогда лицензию придётся восстанавливать по пин-коду.
Проверьте права: каталог лицензий должен быть доступен пользователю, от которого работает сервер (обычно usr1cv8).
ls -l /var/1C/licenses/
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses
Аппаратные ключи HASP. Для USB-ключа на самом сервере нужен драйвер Sentinel (служба aksusbd). Он не входит в дистрибутив платформы и при её обновлении не меняется, но после переустановки ОС его ставят заново. Для сетевого ключа сервер читает адрес менеджера лицензий из nethasp.ini. Если файл лежал в каталоге conf старой версии, скопируйте его в общий /opt/1cv8/conf/, иначе новая версия ключ не увидит.
Если лицензии выдаёт сервер 1С (клиентские лицензии на сервере), после смены версии проверьте, что их видит именно новый агент. Самый быстрый способ — зайти в любую базу и посмотреть, получен ли сеанс без ошибки лицензии.
6. Перевод службы на новую версию и проверка после запуска
Это главный шаг. В новых версиях юнит systemd поставляется внутри каталога версии, его не создают руками, а подключают командой systemctl link.
Порядок переключения:
- Остановите и отключите службу старой версии:
sudo systemctl stop srv1cv8-8.3.22.2208@default sudo systemctl disable srv1cv8-8.3.22.2208@default - Подключите юнит новой версии:
sudo systemctl link /opt/1cv8/x86_64/8.3.24.1586/srv1cv8-8.3.24.1586@.service - Включите автозапуск и запустите:
sudo systemctl enable srv1cv8-8.3.24.1586@default sudo systemctl start srv1cv8-8.3.24.1586@default - Проверьте статус и порты:
systemctl status srv1cv8-8.3.24.1586@default ss -tlnp | grep -E '1540|1541'
Если вы меняли параметры запуска старой службы (другой каталог кластера, порты, режим отладки), перенесите их. Корректный способ — sudo systemctl edit srv1cv8-8.3.24.1586@default и переопределение нужных строк, а не правка файла внутри /opt: при следующем обновлении этот файл заменится вместе с каталогом версии.
Консоль и rac
Для администрирования через rac или графическую консоль нужен сервер администрирования ras той же версии, что и кластер:
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1586/ras cluster --daemon
/opt/1cv8/x86_64/8.3.24.1586/rac cluster list
Если rac cluster list возвращает кластер со списком баз — реестр подхватился, базы на месте.
Веб-публикации
Модуль Apache лежит в каталоге версии, поэтому после переключения в конфиге Apache остаётся путь к старому wsap24.so. Это самая частая причина «сервер обновили, а веб-клиент не открывается». Поправьте путь в директиве LoadModule вручную или переопубликуйте базу утилитой webinst из каталога новой версии, затем перезапустите Apache.
grep -rn wsap24 /etc/apache2/ /etc/httpd/ 2>/dev/null
sudo systemctl restart apache2 # или httpd на RHEL-семействе
Клиенты
Клиент-серверный режим требует, чтобы версия клиента совпадала с версией сервера до последней цифры. Поставьте клиент новой версии на рабочие места до того, как пользователи придут утром. Старый клиент при попытке подключиться выдаст ошибку несоответствия версий.
После того как неделя прошла спокойно, старую версию можно удалить её же деинсталлятором из каталога версии (uninstaller-full в каталоге /opt/1cv8/x86_64/8.3.22.2208/) или пакетным менеджером, если она ставилась из deb/rpm.
7. Ошибки при обновлении сервера 1С на Linux и что с ними делать
Ниже — симптомы, которые встречаются после переключения на новую версию чаще всего. Выберите свой.
ss -tlnp | grep 1540, остановите старую службу и выключите её автозапуск. Две версии на одних портах работать не могут.journalctl -u srv1cv8-8.3.24.1586@default -n 50. Частая причина — у пользователя usr1cv8 нет прав на каталог кластера после копирования из резервной копии. Верните владельца: chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8./var/1C/licenses/ и наличие nethasp.ini в общем каталоге /opt/1cv8/conf/ для сетевого ключа. Если менялось оборудование — лицензию нужно восстановить.LoadModule на каталог новой версии или переопубликуйте базу через webinst.Как откатиться
Если новая версия ведёт себя нестабильно, откат занимает пару минут. Остановите и отключите службу новой версии, включите и запустите старую — она по-прежнему в своём каталоге. Клиентов вернуть на старую версию тоже придётся.
Реестр кластера новые версии обычно читают без изменений, но гарантии обратной совместимости нет. Поэтому при откате, если старый агент не поднимается с текущим reg_1541, восстановите каталог кластера из архива, сделанного в первом шаге. Изменения в списке баз, внесённые после обновления, тогда придётся повторить вручную.