Обновление сервера 1С:Предприятие 8.3 под Ubuntu Linux с минимальным простоем
Содержание
Чтобы обновить 1С на сервере Ubuntu, ставят новую версию платформы рядом со старой (в отдельный каталог /opt/1cv8/x86_64/<версия>), останавливают службу старого сервера, регистрируют и запускают службу новой версии, а затем обновляют платформу на всех клиентах до того же номера. Конфигурацию базы обновляют отдельно, через Конфигуратор. PostgreSQL трогают только тогда, когда новая платформа требует более свежую сборку СУБД.
Речь о платформе 8.3 последних версий (8.3.2x) на Ubuntu 22.04 и 24.04 в варианте «сервер 1С + PostgreSQL на Linux». Команды подходят и для Debian, пути — те, что создаёт штатный установщик.
Что проверить на сервере до обновления
Начните с инвентаризации. Нужно знать, какая версия работает сейчас, как она запущена и кто к ней подключён.
Какие версии стоят на сервере:
ls /opt/1cv8/x86_64/
systemctl list-units --type=service | grep -i srv1cv8
ps aux | grep -v grep | grep ragent
В выводе ps у процесса ragent виден полный путь к исполняемому файлу — по нему понятно, какая версия реально обслуживает базы. Если каталога /opt/1cv8 нет, а есть /opt/1C/v8.3/x86_64, у вас старая схема установки (платформа до 8.3.20). Тогда служба обычно называется srv1cv83 и управляется скриптом из /etc/init.d.
Что подготовить:
- 🧾 номер новой версии и список версий PostgreSQL, с которыми она совместима (смотрите в описании релиза платформы);
- 💾 свободное место: каждая версия платформы занимает порядка нескольких сотен мегабайт, а резервные копии баз — сколько весят сами базы;
- 🔑 логин и пароль администратора кластера, если он задан, и администратора каждой базы;
- 🕒 окно для работ: время, когда пользователей можно отключить на 20–40 минут.
Резервная копия до любых действий. Сделайте дамп каждой базы средствами СУБД:
sudo -u postgres pg_dump -Fc -f /backup/buh_$(date +%F).dump buh
И сохраните каталог данных кластера — там список баз, настройки и реестр кластера:
sudo tar czf /backup/srvinfo_$(date +%F).tgz /home/usr1cv8/.1cv8/1C/1cv8
Каталог данных может лежать в другом месте, если его меняли при установке. Точный путь виден в параметре -d строки запуска ragent из вывода ps.
Без свежего дампа баз обновление не начинайте. Откат платформы — минутное дело, а вот испорченную при обновлении конфигурации базу без копии не вернуть.
Где взять дистрибутив и в каком он формате
Дистрибутивы платформы скачивают с портала обновлений 1С по договору ИТС. Для Linux там лежит несколько вариантов, и выбрать нужно правильный.
| Файл | Что внутри | Когда брать |
|---|---|---|
setup-full-8.3.xx.xxxx-x86_64.run | единый установщик: сервер, клиент, веб-расширения, хранилище | основной вариант для платформы 8.3.20 и новее |
архив с deb-пакетами (deb64_...tar.gz) | отдельные пакеты common, server, ws и др. | если у вас установка через пакетный менеджер и так исторически сложилось |
| клиентский установщик | только тонкий и толстый клиент | для рабочих мест на Linux |
Официального apt-репозитория у платформы 1С нет. Строки вида deb http://... для платформы в sources.list добавлять не нужно: пакеты кладут на сервер вручную, по scp или через общий каталог.
scp setup-full-8.3.xx.xxxx-x86_64.run admin@srv1c:/tmp/
ssh admin@srv1c
chmod +x /tmp/setup-full-8.3.xx.xxxx-x86_64.run
Из репозиториев Ubuntu ставятся только зависимости. Для сервера чаще всего нужны шрифты и библиотеки для формирования печатных форм и картинок:
sudo apt update
sudo apt install fontconfig ttf-mscorefonts-installer
Не смешивайте схемы. Если платформа стояла deb-пакетами, а новую ставите через setup-full, старые пакеты лучше удалить после успешного перехода — иначе через год никто не вспомнит, какая служба откуда взялась.
Как обновить платформу 1С на Ubuntu пошагово
Новая версия ставится в собственный каталог и не затирает старую. Это главное удобство: если что-то пойдёт не так, вы просто запускаете прежнюю службу.
Шаг 1. Установка новой версии
Интерактивный режим откроет мастер в терминале. Для сервера удобнее тихая установка с выбором компонентов:
sudo /tmp/setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,server_admin
server— сам сервер 1С (ragent,rmngr,rphost);ws— модули веб-сервера, если базы опубликованы через Apache;server_admin— сервер администрированияrasи утилитаrac.
Список доступных компонентов и ключей выводит сам установщик по --help. Если ставите deb-пакетами, установка выглядит так:
cd /tmp/deb && sudo dpkg -i 1c-enterprise-*-common_*.deb 1c-enterprise-*-server_*.deb
sudo apt -f install
Шаг 2. Остановка старой службы
Обе версии сервера по умолчанию слушают одни и те же порты 1540 и 1541. Запустить их одновременно нельзя, поэтому старую службу останавливают.
Остановка службы обрывает сеансы всех пользователей и фоновые задания. Делайте это в согласованное окно и предупредите людей заранее.
Для схемы с systemd (8.3.21 и новее):
sudo systemctl disable --now srv1cv83-8.3.22.1709@default
Для старой схемы:
sudo systemctl stop srv1cv83
sudo systemctl disable srv1cv83
Номер 8.3.22.1709 здесь условный — подставьте свой из вывода systemctl list-units.
Шаг 3. Регистрация и запуск новой службы
В каталоге новой версии лежит готовый файл юнита. Его подключают к systemd и включают экземпляр default:
V=8.3.xx.xxxx
sudo systemctl link /opt/1cv8/x86_64/$V/srv1cv83-$V@.service
sudo systemctl enable --now srv1cv83-$V@default
systemctl status srv1cv83-$V@default
Экземпляр default использует стандартные порты и каталог данных пользователя usr1cv8. Поэтому новый сервер сразу видит прежний список баз — регистрировать их заново не нужно.
Если на сервере используется ras, его служба тоже привязана к версии. Переключите её тем же способом: отключите старую, подключите юнит из каталога новой версии.
Шаг 4. Обновление клиентов и веб-публикации
Клиент подключится к серверу только той же версии, до последней цифры. Поэтому сразу после запуска сервера обновите платформу на рабочих местах или разрешите автоматическое обновление клиентов через общий каталог дистрибутивов.
Если базы опубликованы на Apache, в конфигурации публикации указан путь к модулю wsap24.so конкретной версии. Замените в нём номер версии и перезапустите Apache:
grep -rn "wsap24" /etc/apache2/
sudo systemctl restart apache2
Шаг 5. Удаление старой версии
Старую версию держат неделю-две как точку отката. Потом её удаляют деинсталлятором из её же каталога (у единого установщика он лежит рядом с исполняемыми файлами версии) или через apt remove, если ставили пакетами.
PostgreSQL при обновлении: когда трогать СУБД
Обновление платформы 1С само по себе не требует обновлять PostgreSQL. СУБД трогают в двух случаях: новая платформа не поддерживает вашу версию PostgreSQL или вы планово переходите на новую мажорную версию.
Для 1С нужна не «ванильная» PostgreSQL из репозитория Ubuntu, а сборка с доработками под 1С: сборка от фирмы 1С или Postgres Pro для 1С. С обычной СУБД база создастся с ошибками или не создастся вовсе.
| Ситуация | Что делать | Риск |
|---|---|---|
| Новая минорная версия той же ветки (например, 15.x → 15.y) | установить пакеты поверх, перезапустить службу PostgreSQL | минимальный, данные не конвертируются |
| Смена мажорной версии, базы небольшие | pg_dump из старой, pg_restore в новую | долго на больших базах, зато просто |
| Смена мажорной версии, большие базы | pg_upgrade между кластерами | быстро, но требует обе версии на сервере и аккуратности |
| Нужно «почистить» базу заодно | выгрузка в .dt из Конфигуратора и загрузка в новую базу | медленно, зато проверяет данные целиком |
Минимальный порядок при смене мажорной версии через дамп:
- Остановите сервер 1С, чтобы в базу никто не писал.
- Снимите дамп:
pg_dump -Fc. - Установите новую сборку PostgreSQL для 1С, инициализируйте кластер.
- Создайте пустую базу с той же кодировкой и восстановите:
pg_restore -d имя_базы файл.dump. - Перенесите настройки из
postgresql.conf(память,max_connections) — новая установка придёт со своими значениями по умолчанию. - Если порт новой СУБД отличается, поправьте адрес сервера баз данных в свойствах информационной базы в консоли кластера.
На Ubuntu со сборкой 1С обе мажорные версии можно держать рядом на разных портах (5432 и 5433). Это удобно для проверки: восстановили копию в новую версию, подключили тестовую базу, прогнали закрытие месяца — и только потом переключили рабочую.
Обновление конфигурации базы после смены платформы
Платформа и конфигурация — разные вещи. Новая версия сервера не обновляет «Бухгалтерию» или ЗУП. Конфигурацию обновляют отдельно, и для этого нужен монопольный режим базы на время обновления структуры.
Как отключить пользователей
. В консоли кластера в свойствах базы включите блокировку начала сеансов и блокировку регламентных заданий. С сервера Linux то же делают через rac (нужен запущенный ras):
rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac infobase update --cluster=<uuid_кластера> --infobase=<uuid_базы> \
--infobase-user=Админ --infobase-pwd=*** \
--sessions-deny=on --scheduled-jobs-deny=on --permission-code=upd2024
Точный набор параметров для вашей версии смотрите в rac help infobase.
Обновление через Конфигуратор . Удобнее всего с рабочего места администратора (Windows или Linux с толстым клиентом той же версии):
- Откройте базу в Конфигураторе, указав код разрешения в параметре
/UC, если включали блокировку. - Загрузите файл обновления
.cfuчерез меню обновления конфигурации поставщика. - Согласитесь на обновление конфигурации базы данных и примите изменения структуры.
- Запустите базу в режиме «1С:Предприятие» — откроется обработка обновления данных. Дождитесь её окончания.
Пакетный вариант — для типовых конфигураций без доработок, по одной базе за раз:
/opt/1cv8/x86_64/8.3.xx.xxxx/1cv8 DESIGNER /S "srv1c\buh" /N "Админ" /P "***" \
/UC upd2024 /UpdateCfg /backup/1Cv8.cfu /UpdateDBCfg /Out /tmp/upd_buh.log
После обновления выполните первый запуск в пользовательском режиме, иначе обработчики обновления данных не отработают. Затем снимите блокировку сеансов.
Если после обновления сервер 1С не работает
Большинство проблем после обновления видно в журнале службы и в списке открытых портов. Начинайте с них:
systemctl status srv1cv83-8.3.xx.xxxx@default
journalctl -u srv1cv83-8.3.xx.xxxx@default -n 100 --no-pager
ss -tlnp | grep -E '154[01]'
ss -tlnp | grep 1540, остановите старую службу, после чего запустите новую.Откат за пять минут. Если новая версия ведёт себя плохо, а конфигурацию баз ещё не обновляли:
sudo systemctl disable --now srv1cv83-<новая>@default
sudo systemctl enable --now srv1cv83-<старая>@default
Клиенты на старой версии подключатся как раньше. Если же конфигурацию уже обновили под требования новой платформы, откат возможен только восстановлением базы из дампа.
Сброс серверного кэша помогает при странных ошибках после обновления, которые повторяются у всех пользователей. Остановите службу (сеансы оборвутся, делайте вне рабочего времени), удалите каталоги snccntx* внутри reg_1541 в каталоге данных кластера и запустите службу снова. Файлы 1CV8Clst.lst и 1CV8Reg.lst не удаляйте — в них список баз и настройки кластера.
Частые вопросы
Можно ли держать на одном сервере Ubuntu две версии платформы 1С?
/opt/1cv8/x86_64/<версия>. Одновременно запустить их на стандартных портах нельзя, но можно поднять второй экземпляр на других портах с отдельным каталогом данных — например, для тестовой базы.