Публикация информационной базы 1С через IIS и Apache: от установки модулей до HTTPS

· 9 мин

Содержание

Чтобы добавить базу 1С на веб-сервер, нужны три вещи: установленные «Модули расширения веб-сервера» той же разрядности, что и сам веб-сервер, запущенный от имени администратора Конфигуратор и команда Администрирование → Публикация на веб-сервере. После публикации база открывается в браузере по адресу вида http://server/base и подключается в тонком клиенте как база «На веб-сервере».

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

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

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

Компоненты платформы

При установке платформы 1С на машину с веб-сервером отметьте компоненты:

  • 🧩 Модули расширения веб-сервера — обязательно, без них публиковать нечего;
  • 🖥️ 1С:Предприятие (тонкий клиент или полный) — нужен, чтобы открыть Конфигуратор и опубликовать базу из него;
  • 🔌 Сервер 1С:Предприятия на эту машину ставить не обязательно: для клиент-серверной базы модуль сам ходит на сервер 1С по сети.

Если платформа уже стоит без модулей, запустите установщик той же версии повторно, выберите изменение установленных компонентов и добавьте модули.

Разрядность модуля должна совпадать с разрядностью веб-сервера. 64-битный Apache или IIS загружает только 64-битный модуль из 64-битной платформы. Это самая частая причина того, что после публикации ничего не работает.

Роли IIS (Windows Server 2016 и новее)

В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)» и отметьте службы ролей:

  1. Стандартные функции HTTP: статическое содержимое, документ по умолчанию, ошибки HTTP.
  2. Разработка приложений: Расширения ISAPI и Фильтры ISAPI.
  3. Средства управления: консоль управления IIS.
  4. Совместимость управления IIS 6 (метабаза) — без неё публикация из Конфигуратора в IIS часто не проходит.

Apache

Подойдёт Apache 2.4 (на Windows — сборка той же разрядности, что и платформа; на Linux — пакет из репозитория дистрибутива). Запомните путь к httpd.conf: Конфигуратор будет дописывать в него строки. Версия 2.2 устарела, новые установки делайте на 2.4.

Публикация на веб-сервере из Конфигуратора: пошагово

Главный приём, который экономит полчаса поиска причин: запускайте Конфигуратор от имени администратора (правая кнопка по ярлыку → «Запуск от имени администратора»). Иначе он не сможет записать httpd.conf или настройки IIS, а сообщение об ошибке будет невнятным.

  1. Откройте базу в режиме Конфигуратор на машине с веб-сервером.
  2. Выберите Администрирование → Публикация на веб-сервере.
  3. Заполните поле Имя — латиницей, без пробелов, например buh. Это часть адреса: http://server/buh.
  4. В поле Веб-сервер выберите Internet Information Services или Apache 2.4.
  5. Каталог — папка публикации, куда ляжет default.vrd. Для IIS обычно C:\inetpub\wwwroot\buh, для Apache — любая папка, например C:\Apache24\htdocs\buh.
  6. Отметьте флажок публикации тонкого и веб-клиента.
  7. Веб-сервисы, HTTP-сервисы и стандартный интерфейс OData включайте только если ими реально пользуются (обмены, мобильное приложение, интеграции).
  8. Нажмите Опубликовать. Для Apache Конфигуратор предложит перезапустить веб-сервер — соглашайтесь, если в этот момент через него никто не работает .

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

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

Для повторяемой настройки, скриптов и Linux без графики есть утилита webinst в каталоге bin платформы. Пример для Apache 2.4 и клиент-серверной базы:

cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

Для IIS ключ -apache24 меняется на -iis, а -confpath не нужен. Для файловой базы строка соединения выглядит так: -connstr "File=""D:\Bases\buh"";". Номер версии в пути подставьте свой. Полный список ключей выводит сама утилита, если запустить её без параметров.

Как подключиться к опубликованной базе

  • 🌐 Веб-клиент: откройте в браузере http://server/buh.
  • 🖥️ Тонкий клиент: в окне запуска нажмите «Добавить», выберите «Добавление в список существующей информационной базы», тип расположения — «На веб-сервере», адрес http://server/buh.
  • 📱 Мобильный клиент и интеграции используют тот же адрес публикации.

Модуль веб-расширения и права доступа

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

Что появляется в httpd.conf

В конец файла Конфигуратор дописывает примерно такой блок:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/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>

На Linux модуль называется wsap24.so и лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/.

В пути LoadModule зашит номер версии платформы. После обновления платформы и удаления старой версии Apache не стартует или отдаёт ошибку. Исправьте путь на новую версию или переопубликуйте базу. Строка LoadModule должна быть в файле одна, даже если опубликовано десять баз.

Что настраивается в IIS

В IIS публикация создаёт приложение в «Default Web Site» и сопоставление обработчика на модуль wsisapi.dll. Если платформа 32-битная, а IIS 64-битный, в дополнительных параметрах пула приложений включите «Разрешить 32-разрядные приложения». Лучше же поставить 64-битную платформу и не смешивать.

Права на каталоги

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

КаталогКомуПрава
Каталог публикации (...\buh)IIS: группа IIS_IUSRS; Apache: учётная запись службыЧтение
Каталог bin платформыта же учётная записьЧтение и выполнение
Каталог файловой базыта же учётная записьПолный доступ (изменение)

Для клиент-серверной базы права на каталог базы не нужны: данные лежат на сервере СУБД, модуль обращается к агенту кластера 1С по сети (порт 1540 по умолчанию). Этот порт должен быть открыт с веб-сервера до сервера 1С.

Файл 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;;">
  <ws pointEnableCommon="true"/>
  <httpServices publishByDefault="true"/>
</point>

Ключевые атрибуты:

  • base — виртуальный путь, должен совпадать с именем публикации в адресе;
  • ib — строка соединения с базой. Кавычки внутри экранированы как &quot;. Для файловой базы: ib="File=&quot;D:\Bases\buh&quot;;";
  • enable="false" в теге point временно закрывает публикацию, не удаляя её;
  • <ws> и <httpServices> управляют веб-сервисами и HTTP-сервисами;
  • <standardOdata enable="true"/> включает стандартный интерфейс OData.

Строку соединения можно дополнить параметрами Usr и Pwd, и тогда все будут входить в базу под одним пользователем без пароля.

Не прописывайте логин и пароль в ib для публикации, доступной из интернета. Любой, кто узнает адрес, попадёт в базу под этим пользователем. Если автоматический вход нужен для интеграции, создайте отдельного пользователя 1С с минимальными правами и закройте адрес по IP.

Перед ручной правкой сохраните копию файла: ошибка в XML ломает публикацию целиком.

Защита опубликованной базы и переход на HTTPS

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

  1. 🔒 Только HTTPS. Получите сертификат (купленный, корпоративного центра сертификации или Let’s Encrypt) и повесьте его на веб-сервер.
  2. 🔑 Пароли у всех пользователей 1С. Пользователь без пароля в опубликованной базе — открытая дверь.
  3. 🚪 Нестандартный адрес и ограничение по IP, если базой пользуются только из известных мест.
  4. 🧱 Не выставляйте наружу сервер 1С и СУБД. В интернет смотрит только порт 443 веб-сервера; порты 1540–1541 и диапазон рабочих процессов остаются во внутренней сети.

HTTPS в IIS

В консоли IIS импортируйте сертификат (раздел «Сертификаты сервера»), затем в «Привязках» сайта добавьте тип https, порт 443 и выберите сертификат. В параметрах SSL приложения публикации отметьте «Требовать SSL», чтобы HTTP-запросы не проходили.

HTTPS в Apache

Включите mod_ssl и виртуальный хост на порту 443:

LoadModule ssl_module modules/mod_ssl.so
Listen 443

<VirtualHost *:443>
    ServerName 1c.example.ru
    SSLEngine on
    SSLCertificateFile    "C:/Apache24/conf/ssl/cert.pem"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/key.pem"
</VirtualHost>

Блок публикации (Alias и <Directory>) можно оставить как есть: он сработает и для HTTPS. Адрес в клиентах поменяйте на https://1c.example.ru/buh.

Если сертификат самоподписанный, тонкий клиент выдаст ошибку проверки сертификата. Для рабочей базы используйте сертификат, которому доверяют компьютеры пользователей, а не отключайте проверку.

Лицензии при работе через веб-сервер

Веб-публикация не отменяет клиентских лицензий: каждый сеанс через браузер или тонкий клиент занимает лицензию так же, как обычный.

  • Для клиент-серверной базы лицензии выдаёт сервер 1С, ставить их на веб-сервер не нужно.
  • Для файловой базы лицензию получает модуль на машине с веб-сервером. Значит, клиентские лицензии должны быть доступны именно там, а не на компьютерах пользователей.

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

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

Большая часть сбоев сводится к пяти причинам: разрядность, права, старая версия в пути модуля, неверная строка соединения и закрытые порты. Выберите симптом:

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

Перед тем как перезапускать службу IIS или Apache в рабочее время, проверьте, кто работает через публикацию: перезапуск оборвёт их сеансы, и несохранённые документы пропадут.

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

Можно ли опубликовать несколько баз на одном веб-сервере?
Да. Каждая база публикуется под своим именем и в свой каталог: http://server/buh, http://server/zup. Модуль 1С при этом загружается один раз.
Нужен ли сервер 1С, чтобы опубликовать файловую базу?
Нет. Файловую базу публикуют напрямую: модуль на веб-сервере сам открывает файлы базы. Для 3–5 пользователей этого хватает, при большем числе удобнее перейти на клиент-серверный вариант.
Как снять базу с публикации?
В том же окне Администрирование → Публикация на веб-сервере нажмите «Отключить». Для командной строки у webinst есть ключ -delete. Сама база при этом не удаляется.
Работает ли публикация на Linux?
Да, через Apache 2.4 и модуль wsap24.so. Публиковать удобнее утилитой webinst с ключом -apache24, указав путь к конфигурации Apache.
Что делать с публикацией после обновления платформы?
Обновите версию в пути модуля в httpd.conf или переопубликуйте базу из Конфигуратора новой версии. Для IIS проверьте путь к wsisapi.dll в сопоставлении обработчиков.