Возможен ли доступ по веб-клиенту без публикации базы 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При администрировании инфраструктуры 1С часто возникает парадоксальная ситуация: пользователи успешно подключаются к информационной базе через браузер или тонкий клиент по HTTP-адресу, но при попытке открыть в Конфигураторе меню «Администрирование» — «Публикация на веб-сервере» система выдает сообщение «Веб-серверы не обнаружены!». Разберем архитектуру взаимодействия компонентов, выясним причину такого поведения и рассмотрим, как правильно публиковать базы на выделенных веб-серверах.

Архитектура веб-клиента: возможна ли работа без публикации?

Ответим сразу на главный теоретический вопрос: нет, работа веб-клиента без публикации информационной базы невозможна в принципе. Проанализируем, почему это так с технической точки зрения.

Веб-клиент или браузер умеет взаимодействовать исключительно по стандартным протоколам HTTP или HTTPS. В то же время серверный кластер «1С:Предприятия» обменивается данными по собственному закрытому бинарному TCP-протоколу. Браузер не может напрямую отправить запрос к процессам кластера ragent, rmngr или rphost. Необходим промежуточный шлюз — специализированный веб-сервер (Apache или IIS) с установленным модулем расширения платформы 1С (wsap24.so для Linux или wsisapi.dll для Windows).

Веб-сервер выполняет роль транслятора: он принимает входящие HTTP-пакеты от браузера или тонкого клиента, преобразует их в вызовы кластера серверов 1С и возвращает сформированный ответ обратно клиенту. Таким образом, если пользователи работают через веб-браузер, база гарантированно опубликована на каком-то веб-сервере.

Почему Конфигуратор пишет «Веб-серверы не обнаружены!»?

Выясним причину ошибки внутри Конфигуратора. Пункт меню «Администрирование» — «Публикация на веб-сервере» рассчитан исключительно на работу с локальной машиной:

  1. Конфигуратор ищет установленные службы веб-серверов только на том локальном компьютере, где он физически запущен.
  2. Поиск выполняется строго по стандартным путям реестра и конфигурационным файлам операционной системы по умолчанию.
  3. Если кластер 1С или конфигуратор запущен на рабочей станции администратора под Windows, а веб-сервер Apache вынесен на отдельную виртуальную машину (например, под управлением Debian Linux), локальный Конфигуратор ничего не знает об удаленном окружении и сообщает об отсутствии серверов.

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

Как выполняется публикация базы вне графического интерфейса Конфигуратора

Если веб-сервер расположен на выделенном сервере (в частности, под управлением Linux), публикация осуществляется штатной консольной утилитой webinst либо ручным созданием дескриптора публикации.

Рассмотрим использование консольной утилиты webinst, входящей в комплект поставки платформы 1С. Для публикации базы на сервере Apache выполним команду следующего формата:


/opt/1cv8/x86_64/8.3.XX.XXXX/webinst -apache24 -wsdir BaseName -dir '/var/www/BaseName' -connstr "Srvr=app-server;Ref=ib_name;" -confpath /etc/apache2/apache2.conf

Разберем параметры этой команды подробно:

  1. -apache24 — указывает тип и версию целевого веб-сервера.
  2. -wsdir — задает виртуальный каталог (URL-алиас), по которому база будет доступна в браузере.
  3. -dir — физическая директория на сервере, где утилита создаст файл дескриптора публикации default.vrd.
  4. -connstr — строка подключения к кластеру «1С:Предприятия» (для клиент-серверной базы) или путь к каталогу (для файловой базы).
  5. -confpath — точный путь к основному файлу конфигурации веб-сервера.

В результате работы утилиты в директории /var/www/BaseName создается XML-файл default.vrd. Посмотрим на его типовое содержимое для клиент-серверного варианта:


<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/BaseName"
       ib="Srvr=app-server;Ref=ib_name;">
    <ws/>
    <httpServices/>
</point>

А в конфигурационный файл Apache добавляются директивы подключения модуля платформы LoadModule _1cws_module, обработчик SetHandler 1c-application и путь к дескриптору через ManagedApplicationDescriptor.

Правила обновления платформы и частые проблемы

Разберем важные системные правила, которые необходимо соблюдать при обслуживании опубликованных баз:

  1. Строгое совпадение версий: Версия установленного на веб-сервере модуля 1С (библиотеки wsap24.so или wsisapi.dll) должна строго до последней цифры совпадать с версией кластера серверов 1С. Если вы обновили платформу кластера, обязательно установите ту же версию платформы на веб-сервер и переопубликуйте базу либо скорректируйте путь к библиотеке в конфигурации веб-сервера.
  2. Использование символических ссылок в Linux: Чтобы каждый раз не переписывать пути к модулю в конфигурационных файлах Apache при обновлении сборки, создадим символическую ссылку (симлинк) на текущий актуальный каталог платформы, например /opt/1cv8/current, и укажем ее в настройках веб-сервера. При обновлении достаточно будет переключить симлинк на новую папку релиза.
  3. Права доступа: Пользователь операционной системы, от имени которого работает веб-сервер (например, www-data в Debian/Ubuntu), обязан иметь права на чтение файлов платформы 1С, а также полные права на чтение и запись в каталог с файлом default.vrd.
  4. Несколько веб-серверов: К одной клиент-серверной базе 1С можно подключить сразу несколько независимых веб-серверов (например, для отказоустойчивости, балансировки нагрузки или разделения внешнего и внутреннего контуров). Веб-сервер лишь транслирует трафик, поэтому такое разделение полностью поддерживается архитектурой 1С.

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

← На главную