Веб-доступ к базе на сервере 1С: IIS, Apache и строка соединения

· 9 мин

Содержание

Серверную базу 1С публикуют так же, как файловую: в Конфигураторе через Администрирование → Публикация на веб-сервере или утилитой webinst. Разница в одном поле — в строке соединения указывают не каталог, а сервер и имя базы в кластере: Srvr="srv1c";Ref="buh";. Конфигуратор для публикации нужно запускать от имени администратора Windows, иначе он не сможет записать настройки IIS или файл httpd.conf Apache.

Частое заблуждение — что веб-сервер должен стоять на той же машине, что и сервер 1С. Это не так. Веб-сервер — обычный клиент кластера: он может работать на отдельном компьютере, если на нём установлена платформа той же версии с компонентом модулей расширения веб-сервера, а до сервера 1С открыты нужные порты. Порядок действий одинаков для любой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 публикуются одной и той же командой платформы.

Что подготовить перед публикацией серверной базы

Публикация ломается чаще всего не на самом мастере, а на подготовке. Проверьте пять вещей до старта.

1. Версия платформы. На веб-сервере должна стоять ровно та же версия платформы, что и у кластера, например 8.3.24.1467 и там, и там. Если версии разойдутся, при входе появится ошибка о несоответствии версий клиента и сервера.

2. Компонент «Модули расширения веб-сервера». Его выбирают при установке платформы. Если пропустили — запустите установщик повторно, выберите Изменить и добавьте компонент. Без него в папке bin не будет библиотек wsisapi.dll (для IIS) и wsap24.dll (для Apache 2.4).

3. Разрядность. Модуль расширения должен совпадать по разрядности с веб-сервером:

Веб-серверКакая платформа нужна
IIS, пул приложений 64-бит (по умолчанию)64-разрядная
IIS, в пуле включено «Разрешены 32-разрядные приложения»32-разрядная
Apache 2.4 x6464-разрядная
Apache 2.4 x8632-разрядная

4. Роль веб-сервера. Для IIS в Windows Server 2016 и новее добавьте через Диспетчер серверов → Добавить роли и компоненты роль «Веб-сервер (IIS)» и в разделе «Разработка приложений» отметьте:

  • ✅ Расширения ISAPI;
  • ✅ Фильтры ISAPI;
  • ✅ Стандартные функции HTTP: статическое содержимое, документ по умолчанию;
  • ✅ Консоль управления IIS.

Для Apache достаточно установленного и запущенного Apache 2.4 как службы.

5. Сетевой доступ к кластеру. С веб-сервера должны быть открыты порты агента (1540), менеджера кластера (1541) и диапазон рабочих процессов (по умолчанию 1560:1591; задаётся в свойствах рабочего сервера). Проверить можно командой из PowerShell:

Test-NetConnection srv1c -Port 1541
Готовность к публикации
Выполнено: 0 / 6

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

Имя базы в кластере — это не то, что видно в списке баз на компьютере пользователя. Это значение поля «Информационная база в кластере» из свойств подключения или имя в консоли кластера. Опечатка здесь — самая частая причина ошибки «база не найдена».

Шаги в Конфигураторе

  1. Щёлкните ярлык 1С правой кнопкой и выберите «Запуск от имени администратора».
  2. Откройте нужную серверную базу в режиме Конфигуратор.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Заполните поля окна:
    • Имя — часть адреса после имени сервера. Латиница без пробелов: buh, zup. Получится адрес http://web01/buh.
    • Веб-сервер — IIS или нужная версия Apache; программа покажет только те, что нашла на машине.
    • Каталог — где будет лежать файл default.vrd. Для IIS по умолчанию C:\inetpub\wwwroot\buh.
  5. На вкладке «Основные» отметьте, что публиковать: тонкий и веб-клиент, а при необходимости — веб-сервисы и HTTP-сервисы конфигурации.
  6. Нажмите «Опубликовать». Для Apache мастер предложит перезапустить службу — согласитесь.

Строку соединения мастер берёт из базы, которую вы открыли. Поэтому публиковать удобнее, подключившись к базе именно с веб-сервера: тогда в default.vrd попадёт правильный адрес кластера.

Публикация из командной строки

Если на веб-сервере нет графической оболочки или баз много, используйте утилиту webinst.exe из папки bin нужной версии платформы.

Для IIS:

cd "C:\Program Files\1cv8\8.3.24.1467\bin"
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"

Для Apache 2.4:

webinst.exe -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

Отменить публикацию — тот же вызов с ключом -delete вместо -publish. Полный список ключей выводит webinst.exe -help.

Номер платформы в пути bin подставьте свой. Утилита из одной версии публикует модуль именно этой версии.

Расширение веб-сервера и файл default.vrd

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

Что лежит в default.vrd

Это XML-описание публикации. Для серверной базы он выглядит примерно так:

<?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="/buh"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
</point>

Кавычки внутри атрибута ib записаны как &quot; — так и должно быть. Если правите файл вручную, сохраняйте его в UTF-8 и не заменяйте сущности на обычные кавычки.

Как выглядит публикация в IIS

В IIS мастер создаёт приложение buh внутри сайта Default Web Site и сопоставление обработчика: все запросы к нему идут в модуль wsisapi.dll. Проверить можно в Диспетчер IIS → Сайты → Default Web Site → buh → Сопоставления обработчиков. Там должна быть строка с путём к wsisapi.dll из папки bin текущей версии платформы.

Как выглядит публикация в Apache

В конец httpd.conf мастер дописывает блок:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1467/bin/wsap24.dll"

# 1c publication
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>

Строка LoadModule должна быть в файле одна, даже если опубликовано десять баз.

Главная ловушка — обновление платформы

После обновления платформы на сервере 1С публикация перестаёт открываться. Причина: в IIS и в httpd.conf остался путь к модулю старой версии, а старая версия уже не совпадает с кластером. Решения два:

  • 🔁 переопубликовать базу из Конфигуратора новой версии;
  • ✏️ вручную заменить номер версии в строке LoadModule (Apache) или в сопоставлении обработчика (IIS) и перезапустить веб-сервер .

Перезапуск IIS или Apache обрывает все веб-сеансы пользователей — делайте это вне рабочего времени или предупредите людей заранее.

Права и безопасность веб-публикации

Права на папки

Веб-сервер работает от служебной учётной записи, и ей нужен доступ:

КомуК чемуПрава
IIS_IUSRS (или учётная запись пула)Папка публикации, например C:\inetpub\wwwroot\buhЧтение и выполнение
IIS_IUSRSПапка bin платформыЧтение и выполнение
Учётная запись службы ApacheПапка публикации и bin платформыЧтение и выполнение

Если пользователь видит ошибку доступа к wsisapi.dll, в первую очередь проверьте права на bin.

Как пользователи входят

  • 🔑 Аутентификация 1С — пользователь вводит логин и пароль 1С в окне входа. Вариант по умолчанию.
  • 🪟 Аутентификация ОС — вход под доменной учётной записью. Для неё в IIS включают «Проверку подлинности Windows», а пользователю 1С назначают соответствующую учётную запись домена.
  • ⚠️ Логин и пароль в default.vrd — атрибуты usr и pwd в элементе point. Тогда любой, кто откроет адрес, войдёт под этим пользователем. Годится только для закрытого сервиса без доступа извне.

Защищённое соединение

Если база доступна из интернета, работайте только по HTTPS:

  1. Получите сертификат на доменное имя (купленный или Let’s Encrypt).
  2. В IIS: Сайты → Default Web Site → Привязки → Добавить, тип https, порт 443, выбрать сертификат.
  3. В Apache: подключите mod_ssl и опишите виртуальный хост на порту 443, либо поставьте перед Apache обратный прокси с TLS.
  4. Закройте снаружи порт 80 или настройте с него перенаправление на HTTPS.

Не пробрасывайте в интернет порты кластера 1540, 1541 и диапазон рабочих процессов. Наружу смотрит только веб-сервер, а он ходит к кластеру по внутренней сети.

Проверка работы и разбор ошибок публикации

Сначала проверьте публикацию с самого веб-сервера: откройте в браузере http://localhost/buh. Если тут работает, а у пользователей нет — дело в сети, DNS или брандмауэре. Если не работает даже локально — в настройках веб-сервера или в связи с кластером.

Второй тест — тонкий клиент. Добавьте базу в список: Добавить → Добавление в список существующей информационной базы → На веб-сервере и укажите адрес http://web01/buh. Тонкий клиент выдаёт более подробный текст ошибки, чем браузер.

Диагностика: выберите симптом

Если ошибка не из списка, смотрите журнал событий Windows (раздел «Приложение») для IIS или файл logs\error.log в папке Apache — там обычно видна точная причина отказа модуля.

Как раздать адрес пользователям

Когда проверка пройдена, у пользователей есть два способа работы:

  • 🌐 Браузер — адрес вида https://1c.example.ru/buh. Ничего ставить не нужно, удобно для удалённых сотрудников и редких пользователей.
  • 💻 Тонкий клиент — база добавляется в список как «На веб-сервере» с тем же адресом. Работает быстрее браузера, нормально печатает и работает с файлами. Тонкий клиент на компьютере пользователя ставят той же версии, что и кластер.

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

Публикация при нескольких серверах и балансировка

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

Для резервирования можно перечислить в строке соединения несколько адресов через запятую, например Srvr="srv1:1541,srv2:1541". Клиент подключится к первому доступному. Это имеет смысл, только когда настроен резервный кластер, — без него второй адрес бесполезен.

Когда нагрузка на сам веб-сервер большая (сотни пользователей веб-клиента), ставят несколько веб-серверов за балансировщиком:

  • 🖥️ на каждом — одна и та же версия платформы и одинаковая публикация;
  • 🔗 на балансировщике включают привязку сеанса к узлу (sticky session), чтобы запросы одного пользователя шли на один веб-сервер;
  • 📄 содержимое default.vrd и имя публикации держат одинаковыми на всех узлах — проще копировать файл, чем публиковать вручную на каждом.

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

Частые вопросы о веб-публикации серверной базы

Нужна ли отдельная лицензия для веб-клиента?
Нет. Пользователи веб-клиента занимают клиентские лицензии так же, как пользователи тонкого клиента. Отдельной лицензии на веб-сервер не требуется.
Можно ли опубликовать на одном IIS несколько баз?
Да. Каждой базе даётся своё имя публикации и своя папка: buh, zup, ut. Все они работают через один модуль расширения одной версии платформы.
Можно ли опубликовать базу на Linux?
Да, на Apache 2.4. Утилита webinst в Linux-версии платформы работает с ключом -apache24, а модуль называется wsap24.so. Порядок тот же: каталог, default.vrd, блок в конфигурации Apache.
Как опубликовать HTTP-сервис или веб-сервис конфигурации?
Тем же мастером: на вкладках веб-сервисов и HTTP-сервисов отметьте нужные. Адрес будет вида http://web01/buh/hs/<корневой URL сервиса> или .../ws/<имя>.
Почему в браузере открывается пустая страница или бесконечная загрузка?
Обычно браузер блокирует всплывающие окна, которые использует веб-клиент, или устарел сам браузер. Разрешите всплывающие окна для адреса публикации и обновите браузер.