Как перейти на новую версию платформы 1С:Предприятие на сервере Ubuntu и не уронить базы
Содержание
Платформу 1С 8.3 на Ubuntu обновляют так: скачивают дистрибутив сервера новой версии, ставят его рядом со старым (/opt/1cv8/x86_64/<новая версия>/), выключают службу старой версии и включают службу новой. Старая версия при этом остаётся на диске — откат занимает пару минут. После переключения правят путь к модулю веб-сервера в конфиге Apache и обновляют клиенты на рабочих местах до того же номера.
Речь именно о платформе — серверных компонентах ragent, rmngr, rphost, модуле веб-расширения и RAS. Обновление конфигурации
(БП, ЗУП, УТ) — отдельная операция через конфигуратор, она с переустановкой платформы не связана.
1. Подготовка сервера Ubuntu к обновлению 1С
Перед установкой новой версии соберите сведения о текущей. Минимальный набор команд:
# какие версии платформы уже стоят
ls /opt/1cv8/x86_64/ 2>/dev/null; ls /opt/1C/v8.3/x86_64/ 2>/dev/null
# какая версия реально запущена (путь к ragent содержит номер)
ps -o args= -C ragent
# службы 1С в systemd
systemctl list-units --all | grep -E 'srv1cv8|srv1cv83|ras'
Запишите номер текущей версии и имя службы — они понадобятся для отката.
Что проверить и сохранить:
- 📦 Резервные копии баз. Платформа на данные в СУБД не влияет, но если после перехода сразу понадобится обновлять конфигурацию, копия должна быть. Для PostgreSQL —
pg_dumpкаждой базы. - 🗂 Реестр кластера. Каталог
/home/usr1cv8/.1cv8/1C/1cv8/хранит список информационных баз, настройки рабочих серверов, администраторов кластера. Скопируйте его целиком. - 🔑 Лицензии. Программные лицензии лежат в
/var/1C/licenses/. Обновление платформы их не трогает, но копия на случай ошибки не помешает. Для аппаратных ключей проверьте, что драйвер HASP (aksusbd) работает. - 📋 Системные требования новой версии. Посмотрите, поддерживает ли выбранный релиз вашу версию Ubuntu и СУБД. Особенно это важно при связке с PostgreSQL: сборки для 1С выпускают под определённые версии платформы.
- 🕐 Окно работ. На время переключения службы все пользователи отключатся. Выбирайте вечер или выходной и предупредите людей заранее.
sudo tar czf /root/licenses-$(date +%F).tar.gz /var/1C/licenses
Архив реестра кластера делайте позже, на шаге остановки службы: при работающем сервере файлы реестра могут меняться во время копирования.
2. Два способа обновить платформу 1С на Ubuntu
Способ зависит от того, какая версия стоит сейчас и какую вы ставите. С версии 8.3.20 фирма поставляет для Linux универсальный установщик setup-full-…-x86_64.run, и новые версии ставятся каждая в свой каталог. До этого сервер ставили deb-пакетами 1c-enterprise83-*, и новая версия заменяла старую.
| Способ | Когда | Плюсы | Риски |
|---|---|---|---|
Установщик .run | Ставите 8.3.20 и новее | Версии живут параллельно, откат — переключение службы | Нужно вручную перевести службу и Apache на новый каталог |
| deb-пакеты | Старые версии до 8.3.20 | Привычный dpkg/apt | Новая версия вытесняет старую, откат — переустановкой |
| Смешанный переход | С 8.3.1x на 8.3.2x | Разовая операция | Остаётся старая служба srv1cv83, её надо отключить |
💡 Если сейчас стоит старая версия из deb-пакетов, а ставите современную — это и есть смешанный переход. Старые пакеты не удаляйте до проверки: просто отключите их службу.
Что скачать
На портале обновлений выберите «Технологическая платформа 8.3», нужную версию и дистрибутив «Сервер 1С:Предприятия (64-bit) для DEB-based Linux-систем». Внутри архива — файл установщика. Скопируйте его на сервер, например в /tmp/1c/.
3. Пошаговое обновление серверных компонентов ragent, rmngr и ws
Ниже — порядок для установщика .run. В примерах старая версия 8.3.22.1709, новая 8.3.24.1467: подставьте свои номера.
Шаг 1. Установите новую версию рядом со старой
cd /tmp/1c
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
Компонент server — это ragent, rmngr, rphost и ras. Компонент ws — модули веб-сервера. Полный список компонентов и ключей показывает ./setup-full-….run --help. Пока ничего не переключено, базы продолжают работать на старой версии.
Если установщик ругается на зависимости, доустановите типовой набор и запустите снова:
sudo apt update
sudo apt install -y fontconfig ttf-mscorefonts-installer libgsf-1-114
Шаг 2. Остановите и отключите службу старой версии
sudo systemctl stop srv1cv8-8.3.22.1709@default
sudo systemctl disable srv1cv8-8.3.22.1709@default
Остановка службы обрывает все сеансы пользователей, поэтому делайте её только в согласованное окно.
Сразу после остановки сохраните реестр кластера:
sudo tar czf /root/srvinfo-$(date +%F).tar.gz /home/usr1cv8/.1cv8/1C/1cv8
Для старой схемы из deb-пакетов служба называется иначе:
sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83
Убедитесь, что процессов старой версии не осталось: ps -o args= -C ragent,rmngr,rphost. Пустой вывод — порты 1540–1541 свободны.
Шаг 3. Подключите и запустите службу новой версии
В каталоге новой версии лежит шаблон юнита systemd. Его подключают ссылкой:
sudo systemctl link /opt/1cv8/x86_64/8.3.24.1467/srv1cv8-8.3.24.1467@.service
sudo systemctl enable srv1cv8-8.3.24.1467@default
sudo systemctl start srv1cv8-8.3.24.1467@default
Экземпляр @default работает от пользователя usr1cv8 с каталогом данных /home/usr1cv8/.1cv8/1C/1cv8/ и портом агента 1540. Реестр кластера — общий для всех версий, поэтому список баз и настройки рабочего сервера подхватятся без повторной регистрации.
Две службы разных версий с одинаковыми портами одновременно не запустятся: вторая упадёт с ошибкой занятого порта. Поэтому шаг 2 обязателен.
4. Веб-сервер и консоль RAS после смены версии
Это шаг, который чаще всего забывают. Публикации баз продолжают ссылаться на модуль старой версии, и веб-клиент с HTTP-сервисами начинают выдавать ошибку несоответствия версий.
Apache
Найдите все строки с модулем 1С:
grep -rn "wsap24" /etc/apache2/
Строка выглядит так:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.22.1709/wsap24.so"
Замените номер версии на новый во всех найденных файлах, проверьте синтаксис и перезапустите Apache:
sudo sed -i 's#/8.3.22.1709/wsap24.so#/8.3.24.1467/wsap24.so#' /etc/apache2/apache2.conf
sudo apachectl configtest
sudo systemctl restart apache2
Если строка с LoadModule у вас в отдельном файле из conf-available или sites-available — правьте его. Файлы default.vrd в каталогах публикаций менять не нужно: путь к платформе в них не записан.
Новые публикации удобнее делать утилитой webinst из каталога новой версии — она сама пропишет правильный путь к модулю.
RAS и консоль администрирования
Сервер администрирования ras тоже привязан к версии. Если вы запускали его своим юнитом или скриптом, поправьте в нём путь к исполняемому файлу. Ручной запуск выглядит так:
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1467/ras cluster --daemon
Консоль кластера на Windows-машине администратора должна быть той же версии, что и сервер. Иначе подключение к RAS по порту 1545 даст ошибку версии.
5. Как проверить, что платформа 1С на Ubuntu обновилась
Пять проверок за пять минут:
- Служба активна:
systemctl status srv1cv8-8.3.24.1467@default— статусactive (running). - Запущена нужная версия:
ps -o args= -C ragent— в пути должен быть новый номер. - Порты слушаются:
ss -tlnp | grep -E ':154[0-1]'— агент на 1540, менеджер кластера на 1541. Рабочие процессы займут порты из диапазона, заданного в свойствах рабочего сервера (по умолчанию 1560–1591). - Кластер виден через RAS:
/opt/1cv8/x86_64/8.3.24.1467/rac cluster list— выводит кластер и его параметры. Список сеансов:rac session list --cluster=<id кластера>. - Журнал без ошибок:
journalctl -u srv1cv8-8.3.24.1467@default --since "15 min ago".
Затем откройте базу тонким клиентом и веб-клиентом. Первый вход после смены версии может занять дольше обычного: сервер заново формирует кеш конфигурации.
Что настроить после перехода
- ⚙️ Клиенты на рабочих местах. Тонкий клиент должен совпадать с сервером по номеру версии до последней цифры. Удобнее всего опубликовать дистрибутив клиента в общей папке и указать его в настройках
1cestart— клиенты обновятся при входе. Без этого пользователь увидит ошибкуНесоответствие версий клиента и сервера. - 📊 Параметры рабочего сервера. Откройте свойства рабочего сервера в консоли и проверьте лимиты памяти и число рабочих процессов. Они хранятся в реестре кластера и должны сохраниться, но после крупного скачка версий нелишне сверить.
- 🧾 Технологический журнал. Если вы вели его, проверьте, что файл
logcfg.xmlлежит там, где его ищет новая версия, и каталог журнала доступен на запись пользователюusr1cv8. - 🧹 Старый кеш. Если после перехода формы открываются с ошибками или ведут себя странно, очистите сеансовые данные сервера (см. таблицу ошибок ниже).
6. Ошибки после обновления 1С на Ubuntu и что с ними делать
Очистка сеансового кеша, как и любая остановка службы, отключает всех пользователей. Каталог reg_1541 с файлами баз и 1CV8Clst.lst не удаляйте — только подкаталоги snccntx*.
Если ошибка не из этого списка, начните с журнала службы (journalctl -u …) и файлов дампов в каталоге данных кластера: в них обычно видно, какой модуль или библиотека не загрузились.
7. Как откатить обновление платформы на прежнюю версию
При установке через .run откат — это то же переключение, только в обратную сторону:
sudo systemctl stop srv1cv8-8.3.24.1467@default
sudo systemctl disable srv1cv8-8.3.24.1467@default
sudo systemctl enable srv1cv8-8.3.22.1709@default
sudo systemctl start srv1cv8-8.3.22.1709@default
Затем верните старый путь в LoadModule Apache и перезапустите веб-сервер. Клиентам, которые уже успели обновиться, менять ничего не нужно: на рабочем месте может стоять несколько версий, и 1cestart выберет подходящую.
Есть ограничение. Если после перехода на новую платформу вы успели обновить конфигурацию до релиза, которому нужна именно новая версия, откат платформы этой базе не поможет — она просто не откроется. Тогда вариант один: восстановить базу из копии, сделанной до обновления.
Не удаляйте каталог старой версии хотя бы неделю. Когда всё стабильно, удалить её можно через деинсталлятор в каталоге версии или пакетным менеджером, если ставили deb-пакетами. Для смешанного перехода старые пакеты убирают командой sudo apt remove "1c-enterprise83-*".
8. Автоматизация: скрипт обновления с отчётом в Telegram
Если серверов несколько или обновления идут каждый квартал, шаги 2–5 удобно собрать в один скрипт. Он останавливает старую службу, включает новую, правит Apache, проверяет результат и присылает отчёт.
#!/bin/bash
# upgrade-1c.sh OLD NEW, например: upgrade-1c.sh 8.3.22.1709 8.3.24.1467
set -u
OLD="$1"; NEW="$2"
BASE=/opt/1cv8/x86_64
TG_TOKEN="${TG_TOKEN:?нужен токен бота}"
TG_CHAT="${TG_CHAT:?нужен chat_id}"
APACHE_CONF=/etc/apache2/apache2.conf
report() {
curl -s "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
--data-urlencode chat_id="$TG_CHAT" \
--data-urlencode text="$(hostname): $1" > /dev/null
}
[ -x "$BASE/$NEW/ragent" ] || { report "версия $NEW не установлена"; exit 1; }
# 1. остановка старой службы
systemctl stop "srv1cv8-$OLD@default"
systemctl disable "srv1cv8-$OLD@default"
# 2. запуск новой
systemctl link "$BASE/$NEW/srv1cv8-$NEW@.service"
systemctl enable "srv1cv8-$NEW@default"
systemctl start "srv1cv8-$NEW@default"
# 3. Apache
sed -i "s#/$OLD/wsap24.so#/$NEW/wsap24.so#" "$APACHE_CONF"
apachectl configtest && systemctl restart apache2
# 4. проверка
sleep 10
RUNNING=$(ps -o args= -C ragent | grep -c "/$NEW/")
if systemctl is-active --quiet "srv1cv8-$NEW@default" && [ "$RUNNING" -gt 0 ]; then
report "1С обновлена: $OLD -> $NEW, служба активна"
else
report "ОШИБКА обновления 1С $OLD -> $NEW, смотрите journalctl"
exit 1
fi
Запуск: sudo TG_TOKEN=… TG_CHAT=… ./upgrade-1c.sh 8.3.22.1709 8.3.24.1467. Токен бота храните в отдельном файле с правами 600, а не в теле скрипта.
Сам дистрибутив скрипт не ставит намеренно: установку новой версии удобнее делать заранее, днём, без остановки баз. Переключение — уже в окно работ, одной командой. Если apache2.conf у вас не единственный файл с модулем, добавьте в скрипт остальные пути или замените sed по одному файлу на grep -rl wsap24 /etc/apache2 | xargs sed -i ….