Как поставить новую платформу 1С:Предприятие на Linux-сервер и перевести на неё кластер
Содержание
Чтобы обновить 1С на Linux-сервере, скачайте дистрибутив новой версии платформы, установите его рядом со старой (/opt/1cv8/x86_64/<версия>), остановите службу старой версии и запустите службу новой. Реестр кластера и базы при этом не трогаются: новая служба подхватывает их сама. Начиная с 8.3.20 платформа для Linux ставится единым установщиком setup-full-<версия>-x86_64.run, в более ранних версиях — набором пакетов DEB или RPM.
Типичный случай из практики: вышел новый релиз Бухгалтерии, а он требует платформу не ниже определённого номера. Администратор открывает сервер на Ubuntu или CentOS и видит, что «обновить платформу» здесь — это не кнопка в программе, а работа в терминале. Порядок одинаков для Debian-подобных и RPM-систем, различаются лишь команды пакетного менеджера.
1. Подготовка Linux-сервера: какая версия 1С стоит сейчас
Начните с инвентаризации. Нужно знать три вещи: какая версия платформы запущена, как она поставлена и как стартует служба.
Какие версии установлены:
ls /opt/1cv8/x86_64/
Каждая версия лежит в своём каталоге, например 8.3.22.1709. В очень старых установках (до 8.3.12 примерно) платформа жила в /opt/1C/v8.3/x86_64 — одна версия на сервер, без подкаталогов.
Какая версия работает прямо сейчас:
ps aux | grep -E 'ragent|rmngr|rphost' | grep -v grep
В строке процесса виден полный путь к исполняемому файлу, а значит, и номер версии.
Как платформа поставлена — пакетами или установщиком:
# Debian, Ubuntu, Astra
dpkg -l | grep 1c-enterprise
# CentOS, RED OS, ALT, Rocky
rpm -qa | grep 1c-enterprise
Как запускается служба:
systemctl list-units --all | grep -i srv1cv8
ls /etc/init.d/ | grep srv1cv8
Если найден юнит вида srv1cv8-8.3.22.1709@default.service — служба версионная, systemd. Если только скрипт /etc/init.d/srv1cv83 — это старая схема с одной службой на сервер.
Перед обновлением соберите ещё:
- 📦 выгрузки
.dtили резервные копии СУБД всех баз кластера; - 📁 копию каталога
/home/usr1cv8/.1cv8/1C/1cv8/— там реестр кластера (1cv8wsrv.lst) и каталогreg_1541с описанием баз; - 🔑 копию каталога с программными лицензиями (обычно
/var/1C/licenses); - 🧾 список доработок: веб-публикации в Apache, сервер администрирования
ras, свои скрипты запуска.
Перед любыми работами сделайте резервную копию баз. Смена платформы не меняет данные, но откатываться без копии некуда, если что-то пойдёт не так.
Проверьте и требования конфигурации. Номер нужной платформы указан в описании релиза конфигурации. Ставьте версию с номером не ниже требуемого, а лучше ту, что рекомендована для этого релиза.
2. Есть ли у 1С репозиторий APT и YUM
Короткий ответ: публичного репозитория платформы, который можно подключить строкой в sources.list или .repo, у фирмы 1С нет. Дистрибутивы скачиваются с портала обновлений по логину пользователя с действующей подпиской. Поэтому команда apt upgrade сама платформу 1С не обновит.
Менеджер пакетов всё равно нужен — для зависимостей:
# Ubuntu, Debian
sudo apt update
sudo apt install -y fontconfig libfreetype6 libgsf-1-114 unixodbc
# CentOS, Rocky, RED OS
sudo dnf install -y fontconfig freetype libgsf unixODBC
Набор пакетов зависит от дистрибутива и состава компонентов. Установщик сообщает о недостающих библиотеках, и их ставят тем же apt или dnf.
Для парка из нескольких серверов удобно сделать свой локальный репозиторий. Скачанные пакеты кладут на внутренний сервер, собирают индекс (dpkg-scanpackages для APT, createrepo для YUM/DNF) и подключают его на серверах 1С. Тогда обновление выглядит привычно: apt install или dnf install с нужной версией. Для установщика .run такой схемы нет — его копируют на сервер и запускают.
Отечественные дистрибутивы (Astra Linux, RED OS, ALT) входят в список систем, на которых платформа проверяется. На них порядок тот же, отличаются только имена пакетов зависимостей.
3. Установка новой платформы 1С: файл .run, пакеты DEB и RPM
Платформа 8.3.20 и новее: установщик .run
Архив дистрибутива для сервера распаковывают и запускают установщик в тихом режиме, указывая нужные компоненты:
tar -xzf server64_8_3_24_1467.tar.gz
chmod +x setup-full-8.3.24.1467-x86_64.run
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components server,ws,ru
Что означают компоненты:
| Компонент | Что ставит | Когда нужен |
|---|---|---|
server | сервер 1С:Предприятия (ragent, rmngr, rphost) | всегда на сервере |
ws | модули веб-сервера | если базы опубликованы через Apache |
server_admin | сервер администрирования ras | для консоли и утилиты rac |
ru | русский интерфейс сообщений | почти всегда |
client_full, client_thin | клиенты | если на сервере работают пользователи |
Без --mode unattended запустится графический или текстовый мастер. На сервере без графики удобнее тихий режим.
Новая версия встанет в /opt/1cv8/x86_64/8.3.24.1467/, старая останется на месте. Это и есть главный плюс схемы: откат делается переключением службы.
Платформа до 8.3.20: пакеты DEB и RPM
Для старых версий архив содержит набор пакетов. На Debian и Ubuntu:
tar -xzf deb64_8_3_18_1483.tar.gz
sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb
sudo dpkg -i 1c-enterprise83-ws_*.deb
sudo apt -f install
Сначала ставится common, затем server, затем ws; пакеты с суффиксом nls дают локализацию. Последняя команда доставляет зависимости, если dpkg на них пожаловался.
На CentOS и RPM-системах то же самое:
sudo rpm -Uvh 1C_Enterprise83-common-*.rpm 1C_Enterprise83-server-*.rpm
# или с подтягиванием зависимостей
sudo dnf install ./1C_Enterprise83-*.rpm
Ключ -U обновляет пакеты, если они уже стоят. Учтите: у старых пакетов разные версии в одном каталоге не уживаются, установка новой заменяет старую. Откат тогда — повторная установка пакетов прежней версии.
4. Переключение службы сервера 1С на новую версию
Это ключевой шаг. Платформа поставлена, но работает всё ещё старая служба.
Остановка службы обрывает все сеансы пользователей. Делайте это в согласованное окно — вечером или в выходной, — предупредив людей заранее.
Версионная служба systemd (8.3.21 и новее)
В каталоге версии лежит готовый файл юнита. Его подключают и включают с экземпляром default:
OLD=8.3.22.1709
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
sudo systemctl status srv1cv8-$NEW@default
Настройки экземпляра — порт, каталог кластера, параметры отладки — переносятся через файл переопределения юнита. Если вы меняли их у старой версии, повторите для новой: systemctl edit srv1cv8-$NEW@default.
Старая схема со скриптом init.d
Для установок со скриптом /etc/init.d/srv1cv83 порядок проще: пакеты новой версии заменяют файлы, служба перезапускается:
sudo systemctl stop srv1cv83
sudo systemctl start srv1cv83
Если в конфиге службы (/etc/sysconfig/srv1cv83 или /etc/default/srv1cv83) прописан путь к конкретной версии, исправьте его на новую.
Проверка, что кластер поднялся
ss -tlnp | grep -E '1540|1541'
ps aux | grep rphost | grep -v grep
Агент должен слушать порт 1540, менеджер кластера — 1541. Рабочие процессы rphost появятся в пути новой версии. Базы в кластере остаются прежними: реестр в /home/usr1cv8/.1cv8/1C/1cv8/ от версии платформы не зависит.
Если на сервере работает ras, перезапустите и его из каталога новой версии, иначе консоль и rac будут ходить через старый бинарник:
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1467/ras cluster --daemon
5. Обновление 1С в Docker-контейнере
Официального образа сервера 1С нет. Образы собирают сами или берут из сообщества, и в обоих случаях платформа лежит внутри образа. Поэтому обновлять 1С «внутри» работающего контейнера — неправильный путь: при пересоздании контейнера всё вернётся.
Правильная схема:
- Положите дистрибутив новой версии в контекст сборки.
- Поменяйте номер версии в
Dockerfileили в аргументе сборки. - Соберите новый образ с новым тегом:
docker build -t 1c-server:8.3.24.1467 . - Остановите старый контейнер в окно обслуживания.
- Запустите новый с теми же томами и теми же параметрами сети.
Что обязательно должно жить в томах, а не в образе:
- 📁
/home/usr1cv8/.1cv8— реестр кластера и список баз; - 🔑
/var/1C/licenses— программные лицензии; - 📝 каталоги журналов и технологического журнала, если вы их ведёте.
Программная лицензия привязана к параметрам компьютера. В контейнере это имя хоста и сетевые параметры. Задавайте --hostname и MAC-адрес явно и одинаково для старого и нового контейнера, иначе после обновления лицензия может «слететь».
Пример запуска с сохранением всего нужного:
docker run -d --name srv1c \
--hostname srv1c \
--mac-address 02:42:ac:11:00:10 \
-p 1540-1541:1540-1541 -p 1560-1591:1560-1591 \
-v srv1c-home:/home/usr1cv8/.1cv8 \
-v srv1c-lic:/var/1C/licenses \
1c-server:8.3.24.1467
Диапазон 1560–1591 — это порты рабочих процессов по умолчанию. Если в свойствах рабочего сервера задан другой диапазон, пробросьте его.
6. После обновления платформы на сервере
Служба запущена — работа не закончена. Пройдите по списку.
Клиенты. Версия клиента должна совпадать с версией сервера вплоть до четвёртой цифры. Иначе пользователь получит ошибку о несоответствии версий при входе. Обновите платформу на рабочих местах или настройте в списке баз параметр «Версия 1С:Предприятия» так, чтобы запускалась нужная версия.
Веб-публикации. В конфигурации Apache модуль загружается по полному пути, например:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.22.1709/wsap24.so"
Путь указывает на старую версию. Поменяйте номер на новый и перезапустите веб-сервер: sudo systemctl restart apache2 (на RPM-системах — httpd). Можно и заново опубликовать базу утилитой webinst из каталога новой версии.
Лицензии. Зайдите в базу и убедитесь, что лицензия получена. Сама смена версии платформы лицензию не затрагивает, но после переезда на новый контейнер или виртуальную машину проблема всплывает именно здесь.
Регламентные задания и обмены. Проверьте в консоли или через rac, что регламентные задания не блокированы, а обмены и выгрузки отрабатывают по расписанию.
Удаление старой версии. Не спешите: подождите неделю-две работы без сбоев. Потом удалите каталог версии деинсталлятором из её же папки (uninstaller-full) или пакетным менеджером, если версия ставилась пакетами. Отключённый юнит старой службы уберите командой systemctl disable.
Обновление платформы не обновляет конфигурацию. Новый релиз Бухгалтерии или ЗУП ставится отдельно, через Конфигуратор или механизм обновления в самой программе, уже после смены платформы.
7. Ошибки при обновлении 1С на Linux и что с ними делать
journalctl -u srv1cv8-<версия>@default -n 50. Частые причины — занят порт 1540 (старая служба не остановлена) или нет прав пользователя usr1cv8 на каталог кластера. Остановите старую службу и проверьте владельца каталога /home/usr1cv8/.1cv8.wsap24.so старой версии, а её уже удалили. Исправьте путь и перезапустите веб-сервер.reg_1541 из копии.Если не помогло: как откатиться
Откат при версионной установке занимает пару минут:
sudo systemctl disable --now srv1cv8-8.3.24.1467@default
sudo systemctl enable --now srv1cv8-8.3.22.1709@default
Старая версия всё это время лежала на диске, база и реестр кластера не менялись. Верните путь к модулю в конфиге Apache и попросите пользователей запустить прежнюю версию клиента.
Если откатываться приходится после обновления конфигурации, которое потребовало новую платформу, простое переключение службы не поможет. Тогда базу восстанавливают из копии, сделанной до работ.
Частые вопросы
Можно ли держать на одном Linux-сервере две версии 1С?
Нужно ли обновлять PostgreSQL вместе с платформой 1С?
Обновится ли платформа автоматически при обновлении конфигурации?
Как обновить тонкий клиент на Linux-рабочих станциях?
client_thin или client_full. Версия должна совпасть с серверной.