Решение задач 1С:Предприятие 8 на примерах

Сервер 1С:Предприятия и кластер: состав, порты, консоль, rac и веб-сервер

Базы данных и СУБДОпубликовано

Клиент-серверная 1С держится на нескольких процессах: агенте сервера, менеджере кластера и рабочих процессах. Знание их ролей и портов нужно, когда вы открываете доступ через брандмауэр, ищете «зависший» сеанс или публикуете базу на веб-сервере. В статье — состав кластера, установка сервера на Windows и Linux, работа в консоли администрирования и из командной строки через ras и rac, очистка кэша сервера и публикация через webinst.

Из чего состоит сервер 1С

Сервер 1С:Предприятия — это не один процесс, а группа, которая в совокупности называется кластером серверов:

  • ragent — агент сервера. Главный процесс-служба на каждом рабочем сервере. Запускает остальные, принимает запросы на подключение.
  • rmngr — менеджер кластера. Хранит настройки кластера, распределяет клиентов по рабочим процессам, управляет блокировками и лицензиями. На главном сервере кластера он один.
  • rphost — рабочий процесс. Выполняет серверный код, запросы, фоновые задания и обращается к СУБД. Их может быть несколько на сервере; при нехватке памяти платформа перезапускает процессы по настройкам кластера.

Клиент сначала обращается к агенту, затем получает адрес рабочего процесса и дальше общается с ним напрямую. Поэтому в сетях с брандмауэром открывать надо не только порт агента. Порты по умолчанию сведены в таблицу.

КомпонентПорт по умолчаниюНазначение
ragent1540Подключение клиентов и консоли к агенту
rmngr1541Главный менеджер кластера
rphost1560–1591Диапазон для рабочих процессов
ras1545Сервер администрирования для утилиты rac

Значения можно изменить параметрами запуска агента; в настройках кластера допускается задавать диапазоны портов под несколько рабочих серверов. Если базу и клиентов связывает только веб-доступ, порты 1540–1591 наружу открывать не нужно, достаточно порта веб-сервера.

Установка сервера на Windows

При установке платформы отметьте компонент «Сервер 1С:Предприятия» (и «Администрирование серверов 1С:Предприятия», если консоль нужна на этой же машине). Установщик предлагает создать службу «Агент сервера 1С:Предприятия 8.3» и пользователя, от имени которого она работает; обычно это USR1CV8. Этому пользователю нужны права на запись в каталог данных кластера (по умолчанию srvinfo внутри каталога установки) — лучше вынести его на отдельный диск.

Служба запускает агент примерно такой командой. Ключи показывают, где лежит каталог кластера и какие порты используются:

"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\srvinfo"

Ключ -d задаёт каталог данных кластера, -port — порт агента, -regport — порт главного менеджера, -range — диапазон для рабочих процессов. Ключ -debug включает режим отладки сервера. Перед изменением параметров остановите службу.

Установка сервера на Linux

Для Linux платформа поставляется в виде пакетов (deb и rpm) или архива. Обычно ставятся общий пакет платформы и пакет сервера, а в составе имён присутствует номер релиза; на русскоязычных системах нужна установленная локаль. После установки появляются каталог с файлами платформы в /opt/1cv8 и пользователь, от имени которого рекомендуется запускать сервер. Службу можно оформить в виде юнита systemd, запускающего ragent с теми же ключами, что и в Windows. Ниже — шаблон, который нужно адаптировать под свой релиз и пути.

[Unit]
Description=1C:Enterprise Server
After=network.target

[Service]
User=usr1cv8
Group=grp1cv8
Environment=LANG=ru_RU.UTF-8
ExecStart=/opt/1cv8/x86_64/8.3.24.1548/ragent -d /var/1c/srvinfo -port 1540 -regport 1541 -range 1560:1591
Restart=on-failure

[Install]
WantedBy=multi-user.target

Каталог кластера (/var/1c/srvinfo в примере) должен существовать и принадлежать пользователю, под которым работает служба. Для администрирования на Linux используется утилита rac — оснастки MMC там нет. Поддерживаемые версии дистрибутивов указаны в документации платформы.

Консоль администрирования серверов 1С

На Windows кластер администрируют через оснастку MMC «Администрирование серверов 1С:Предприятия». Добавьте центральный сервер, указав его адрес и порт агента (например, srv01:1540), и раскройте дерево. Основные разделы кластера:

  • Информационные базы — создание и свойства баз, включение блокировки начала сеансов и регламентных заданий, сообщение пользователям и код разрешения для входа.
  • Рабочие серверы и рабочие процессы — состояние, потребление памяти, число соединений.
  • Сеансы и соединения — кто работает, с какого компьютера и каким приложением; здесь же сеанс завершают командой «Удалить».
  • Блокировки — текущие управляемые блокировки; полезно при разборе «зависаний».
  • Администраторы кластера — учётные записи, под которыми разрешено управление.

Если у пользователя висит сеанс после аварии, его нужно найти по имени пользователя и времени последней активности и удалить. Перед работами с базой включите блокировку начала сеансов: новые подключения не пройдут, а существующие можно спокойно завершить.

Командная строка: ras и rac

Консоль MMC удобна, но не подходит для скриптов и Linux. Для этого есть пара утилит: сервер администрирования ras и клиент rac. Сначала запустите ras, указав адрес агента:

ras cluster --port=1545 localhost:1540

Затем из другой консоли обращайтесь к нему утилитой rac. Первая команда выводит кластеры и их идентификаторы, остальные принимают идентификатор как параметр:

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<идентификатор_кластера>
rac localhost:1545 session list --cluster=<идентификатор_кластера> --infobase=<идентификатор_базы>
rac localhost:1545 session terminate --cluster=<идентификатор_кластера> --session=<идентификатор_сеанса>

Если для кластера заданы администраторы, добавьте параметры авторизации: --cluster-user и --cluster-pwd. Вывод команд — набор строк «поле : значение», который легко разобрать скриптом. Так, одной командой можно получить сеансы нужной базы, а второй — завершить зависшие. Полный список режимов и команд показывает rac help, а справку по режиму — rac session help.

Кэш сервера 1С и каталог srvinfo

Каталог данных кластера (srvinfo) содержит реестр кластера в подкаталоге вида reg_1541 (число совпадает с портом главного менеджера) и каталоги информационных баз: журнал регистрации, индексы полнотекстового поиска. Кроме того, там создаются каталоги сеансовых данных с именами, начинающимися на snccntx. Это временные данные сеансов и кэш, которые платформа может создать заново.

Иногда после аварийного завершения сервера или длительных зависаний администратор очищает сеансовые данные. Порядок:

  1. Предупредите пользователей, включите блокировку начала сеансов и завершите сеансы.
  2. Остановите службу «Агент сервера 1С:Предприятия» и убедитесь, что процессы ragent, rmngr и rphost завершились.
  3. Переименуйте или удалите каталоги snccntx* внутри каталога кластера (на практике лучше сначала переименовать).
  4. Запустите службу и проверьте подключение.

Не удаляйте служебные файлы реестра кластера и каталоги баз — в них хранятся настройки кластера и журналы. Эта операция — разовая административная мера, а не регулярная гигиена. Если ошибка проявляется только у одного пользователя, сначала очистите клиентский кэш, как описано в статье про ошибку формата потока. Для управления потреблением памяти используйте настройки кластера: допустимый объём памяти рабочих процессов и интервал их перезапуска.

Веб-сервер для 1С

Веб-клиент, тонкий клиент по HTTP, HTTP-сервисы и веб-сервисы работают через опубликованную базу. Публикация — это каталог на веб-сервере с файлом default.vrd (дескриптор публикации) и подключённым расширением платформы для вашего сервера: Apache или IIS. Опубликовать базу можно из Конфигуратора («Администрирование → Публикация на веб-сервере») или утилитой webinst из каталога bin:

webinst.exe -publish -apache24 -wsdir trade -dir "C:\inetpub\wwwroot\trade" -connstr "Srvr=srv01;Ref=trade;" -confpath "C:\Apache24\conf\httpd.conf"
webinst.exe -publish -iis -wsdir trade -dir "C:\inetpub\wwwroot\trade" -connstr "Srvr=srv01;Ref=trade;"

Запускайте утилиту от имени администратора. Для Apache в конфигурации появляется подключение модуля платформы и блок для каталога публикации; он выглядит примерно так:

Alias "/trade" "C:/inetpub/wwwroot/trade/"
<Directory "C:/inetpub/wwwroot/trade/">
    AllowOverride None
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/wwwroot/trade/default.vrd"
</Directory>

Для IIS потребуются установленные компоненты веб-сервера (в том числе CGI/ISAPI, в зависимости от режима) и права на каталог публикации у пула приложений. Разрядность расширения должна соответствовать разрядности веб-сервера и платформы. После публикации база открывается по адресу вида http://сервер/trade; при внешнем доступе включайте HTTPS. Вызов опубликованных сервисов из внешней системы показан в статье про HTTP-запросы к REST API.

Типичные ошибки

  • Открыть наружу только порт 1540 и удивляться, почему клиент не подключается: нужны порты менеджера кластера и рабочих процессов.
  • Запускать службу от пользователя без прав на каталог кластера.
  • Клиенты другой версии, чем сервер, и попытки подключиться «как-нибудь».
  • Удалять каталоги реестра кластера вместо сеансовых данных.
  • Публиковать базу по HTTP без шифрования в интернете.
  • Не включать блокировку начала сеансов перед обслуживанием.

Актуальность для новых версий

Архитектура сервера (агент, менеджер кластера, рабочие процессы) и порты по умолчанию неизменны на протяжении всей ветки 8.3. Утилиты ras и rac входят в дистрибутив сервера и работают на Windows и Linux, а оснастка консоли администрирования есть только в Windows. Состав и имена пакетов для Linux, а также ключи запуска зависят от релиза, поэтому сверяйтесь с документацией «Руководство администратора» для своей версии. Веб-расширения подключаются модулем, соответствующим вашему веб-серверу и разрядности.

Частые вопросы

Какие порты использует сервер 1С по умолчанию?

Агент сервера слушает порт 1540, менеджер главного кластера — 1541, рабочие процессы получают порты из диапазона 1560–1591. Сервер RAS по умолчанию использует порт 1545. Клиенты подключаются и к рабочим процессам, поэтому открывать нужно весь диапазон.

Как завершить зависший сеанс пользователя?

В консоли администрирования откройте кластер, раздел «Сеансы», выберите сеанс и удалите его. Из командной строки то же делает rac session terminate с указанием идентификаторов кластера и сеанса.

Можно ли удалить каталог snccntx на сервере?

Только как плановую меру администратора: остановите службу сервера, убедитесь, что рабочих процессов нет, и очистите сеансовые данные. Не удаляйте служебные файлы реестра кластера, иначе потеряете настройки кластера.

Как установить сервер 1С на Linux?

Установите пакеты платформы для вашего дистрибутива (общие файлы и сервер), создайте службу, запускающую ragent под отдельным пользователем, и откройте порты 1540, 1541 и диапазон рабочих процессов. Названия пакетов зависят от релиза.

Файл базы данных поврежден в 1С 8.3: как исправить ошибку СУБД

Базы данных и СУБД

Пошаговое восстановление файловой базы 1С при ошибке «Файл базы данных поврежден»: резервная копия, chdbfl.exe, тестирование и исправление и запасные варианты.

Ошибка формата потока в 1С 8.3: причины и как исправить

Базы данных и СУБД

Разбираем, откуда берётся «Ошибка формата потока» в 1С 8.3 и в каком порядке её устранять: от очистки кэша до chdbfl и восстановления конфигурации из файла.

Ошибка «Нарушена целостность структуры конфигурации»: восстановление через MS SQL

Базы данных и СУБД

После неудачного динамического обновления база 1С не открывается с ошибкой о нарушенной целостности конфигурации. Разбираем по шагам восстановление через таблицы Config и Params в MS SQL.

СКД в 1С: система компоновки данных и программное формирование отчёта

Отчёты и СКД

Объяснение системы компоновки данных 1С: из чего состоит схема компоновки, как работают наборы данных, ресурсы, параметры и настройки, и как сформировать отчёт из кода — в табличный документ или в таблицу значений.