Как сделать несколько публикаций одной базы 1С на одном веб-сервере Apache

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

При настройке интеграции 1С с внешними системами, например, с телефонией или мобильными приложениями, часто возникает задача разделить потоки доступа. Для обычных пользователей требуется стандартная авторизация с выбором имени и вводом пароля, а для сервисов телефонии или чат-ботов необходим автоматический вход под конкретной учетной записью. Если пытаться совместить эти настройки в одной публикации, возникает конфликт: либо пользователям приходится каждый раз перевыбирать логин, либо внешняя система не может авторизоваться. В данной статье мы рассмотрим, как создать две и более независимые публикации для одной информационной базы на одном веб-сервере Apache.

Разбор архитектуры веб-публикации 1С

Для начала проанализируем ситуацию: почему Конфигуратор 1С в меню «Публикация на веб-сервере» отображает только одну запись? Это происходит потому, что стандартный графический интерфейс предназначен для быстрого развертывания одной точки доступа. Однако работа веб-сервера Apache строится на конфигурационных файлах. Когда мы нажимаем кнопку «Опубликовать», 1С выполняет два действия:

  1. Создает или обновляет файл default.vrd в указанном каталоге (в нем хранятся параметры подключения к базе).
  2. Вносит изменения в файл конфигурации Apache (httpd.conf), добавляя туда ссылку (алиас) на этот каталог.

Важно понимать: веб-серверу все равно, что показывает Конфигуратор. Он обращается к физическим папкам на диске. Поэтому мы можем создать неограниченное количество публикаций, которые будут ссылаться на одну и ту же базу (серверную или файловую), но иметь разные настройки доступа.

Способ 1. Использование Конфигуратора для создания нескольких публикаций

Разберем по шагам, как можно использовать штатные средства для создания второй точки входа. Предположим, у нас уже есть основная публикация с именем UNF.

  1. Запускаем Конфигуратор от имени администратора.
  2. Открываем меню «Администрирование» — «Публикация на веб-сервере».
  3. В поле Имя указываем новое уникальное имя, например, TEL (для телефонии).
  4. В поле Каталог выбираем новую пустую папку, отличную от первой публикации (например, C:\inetpub\wwwroot\tel).
  5. Нажимаем кнопку «Опубликовать».

После этого 1С создаст новую запись в настройках Apache. Несмотря на то, что при следующем открытии окна публикации Конфигуратор может «забыть» про одну из них или выдать предупреждение «Выполненная ранее публикация не обнаружена», фактически обе точки доступа будут работать. Каждая будет иметь свой файл default.vrd, что позволяет нам настроить их индивидуально.

Способ 2. Ручная правка файлов конфигурации (Самый надежный метод)

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

Сначала найдем файл httpd.conf вашего сервера Apache. Обычно он находится в папке conf внутри каталога установки Apache. В конце этого файла 1С добавляет блоки настроек. Для создания второй публикации нам нужно убедиться, что там присутствуют записи для обоих алиасов. Пример структуры в httpd.conf:


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

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

После добавления таких блоков необходимо перезапустить службу Apache. Теперь у вас есть две точки входа по адресам: http://server/UNF и http://server/TEL.

Настройка файла default.vrd для автоматического входа

Теперь рассмотрим подробнее содержимое файла default.vrd для нашей второй публикации (TEL). Чтобы телефония могла заходить в базу без диалогового окна выбора пользователя, нам нужно отредактировать этот файл вручную в текстовом редакторе.

Найдите строку, начинающуюся с <point..., и внутри параметра ib (строка соединения) добавьте имя пользователя и пароль. Посмотрим на пример:


<?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="/TEL"
       ib="Srvr=&quot;Server1C&quot;;Ref=&quot;Base1C&quot;;Usr=&quot;TelephonyRobot&quot;;Pwd=&quot;StrongPassword123&quot;;">
    <httpServices>
        <service name="Telephony" rootUrl="tel" enable="true" reuseSessions="autouse"/>
    </httpServices>
</point>

Важный момент: использование параметра reuseSessions="autouse" крайне рекомендуется для HTTP-сервисов. Это позволяет системе переиспользовать существующие сеансы 1С для входящих запросов, что значительно экономит лицензии и ускоряет отклик системы, так как не тратится время на создание нового сеанса при каждом звонке.

Вопросы безопасности и производительности

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

Для серверных баз данных создание нескольких публикаций практически не влияет на производительность, так как управление блокировками берет на себя кластер серверов 1С. Однако помните, что каждый экземпляр публикации на Apache может создавать свой пул соединений. Вы можете ограничить его, добавив в default.vrd параметры poolSize.

Таким образом, мы выяснили, что создание нескольких публикаций одной базы — это стандартная и корректная процедура. Главное — разделять физические каталоги для хранения файлов default.vrd и корректно прописывать алиасы в настройках веб-сервера Apache.

← На главную