Как опубликовать базу 1С через IIS или Apache и открыть её по ссылке

· 9 мин

Содержание

Чтобы опубликовать базу 1С на веб-сервере, нужны три вещи: установленный IIS или Apache, компонент платформы «Модули расширения веб-сервера» той же разрядности и запуск Конфигуратора от имени администратора. Дальше — Администрирование → Публикация на веб-сервере, имя публикации, флажки клиентов и кнопка «Опубликовать». База открывается по адресу вида http://сервер/имя_публикации.

Типичная ситуация: директор уезжает в командировку и хочет смотреть остатки с ноутбука, а склад в соседнем городе — работать в той же базе без RDP. Публикация веб-сервера 1С решает обе задачи: веб-клиент работает в браузере, тонкий клиент подключается по HTTP. Ниже — порядок действий для Windows и Linux и то, на чём обычно спотыкаются.

Что подготовить до публикации веб-сервера 1С

Начните с выбора веб-сервера. Платформа 8.3 работает с IIS и Apache 2.2/2.4. Для новых установок берите IIS или Apache 2.4: ветка 2.2 давно не поддерживается самим Apache.

Веб-серверГде уместенНа что смотреть
IISWindows Server, домен, вход по учётной записи WindowsРоли ISAPI, права группы IIS_IUSRS, разрядность пула
Apache 2.4 (Windows)Небольшие офисы, быстрый старт без ролей WindowsРазрядность сборки Apache, служба запускается под нужной учёткой
Apache 2.4 (Linux)Сервер 1С на Linux, публикация в интернет за nginxПакет модулей веб-сервера, владелец каталога www-data

Что проверить заранее:

  • 🖥️ Разрядность. 64-битный Apache или пул IIS требует 64-битных модулей платформы. Смешение — частая причина отказа запуска.
  • 🔢 Версия платформы. Для клиент-серверной базы модули на веб-сервере должны быть той же версии, что и кластер 1С.
  • 🌐 Сеть. Если веб-сервер и сервер 1С на разных машинах, между ними должны быть открыты порты агента (1540), менеджера кластера (1541) и диапазон рабочих процессов, заданный в свойствах рабочего сервера (по умолчанию 1560–1591).
  • 🔐 Лицензии. Каждый пользователь веб-клиента занимает клиентскую лицензию так же, как пользователь обычного клиента.

Подготовка IIS

В Windows Server откройте Диспетчер серверов → Добавить роли и компоненты и включите роль «Веб-сервер (IIS)». В разделе «Разработка приложений» отметьте «Расширения ISAPI» и «Фильтры ISAPI». Если планируете вход по учётной записи Windows, в разделе «Безопасность» добавьте «Проверка подлинности Windows».

Подготовка Apache

Для Windows скачайте сборку Apache 2.4 нужной разрядности (например, с Apache Lounge), распакуйте в C:\Apache24 и установите службой командой httpd.exe -k install. На Debian и Ubuntu достаточно sudo apt install apache2.

Установка модулей расширения веб-сервера 1С

Публикация невозможна без компонента «Модули расширения веб-сервера». Именно он даёт файлы wsisapi.dll (для IIS), wsap24.dll (Apache 2.4 на Windows) и wsap24.so (Apache на Linux).

  1. Запустите установщик платформы той же версии, что стоит на сервере 1С.
  2. В списке компонентов отметьте «Модули расширения веб-сервера». Тонкий клиент и Конфигуратор тоже понадобятся, если публикуете с этой же машины.
  3. На 64-битном веб-сервере ставьте 64-битный дистрибутив платформы.
  4. На Linux поставьте пакет модулей веб-сервера из дистрибутива сервера (в имени пакета есть ws) или отметьте этот компонент в едином установщике.

Сам сервер 1С на машину с веб-сервером ставить не обязательно. Веб-сервер подключается к кластеру по сети, как обычный клиент.

Как опубликовать базу 1С на веб-сервере: три способа

Через Конфигуратор (Windows)

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

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

Через утилиту webinst (Windows и Linux)

На серверах без графического Конфигуратора используйте консольную утилиту webinst. Она лежит в каталоге платформы (bin на Windows, /opt/1cv8/x86_64/<версия>/ на Linux).

Пример для Linux и клиент-серверной базы:

sudo /opt/1cv8/x86_64/8.3.24.1467/webinst -publish -apache24 \
  -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" \
  -confpath /etc/apache2/apache2.conf
sudo chown -R www-data:www-data /var/www/buh
sudo systemctl restart apache2

Для IIS вместо -apache24 указывают -iis, а -confpath не нужен. Снять публикацию можно той же командой с ключом -delete вместо -publish. Номер версии в пути замените на свой.

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

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

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

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

После обновления платформы строка LoadModule продолжает указывать на старую версию. Если старую платформу удалили, Apache не стартует. Исправьте путь вручную или переопубликуйте базу из Конфигуратора новой версии. Строка LoadModule должна быть одна на весь файл, даже если публикаций несколько.

Файл 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 — строка соединения. Для файловой базы: File=&quot;D:\Bases\buh&quot;;. Кавычки внутри атрибута записываются как &quot;.
  • 📌 <ws> и <httpServices> — публикация веб-сервисов и HTTP-сервисов конфигурации.
  • 📌 usr и pwd в теге point — автоматический вход под заданным пользователем.

Пароль в usr/pwd хранится открытым текстом. Используйте автовход только для служебного пользователя с минимальными правами, например для HTTP-сервиса обмена, и никогда — для администратора.

Для HTTP-сервисов и OData в элементах <service> и <standardOdata> есть атрибут reuseSessions. Он позволяет не создавать новый сеанс 1С на каждый запрос, а брать его из пула. Об этом подробнее в разделе про производительность.

Права доступа и аутентификация пользователей

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

Учётная запись веб-сервера должна читать каталог публикации и запускать модуль платформы:

ЧтоКому (IIS)Права
Каталог публикации (C:\inetpub\wwwroot\buh)IIS_IUSRS, IUSRЧтение
Каталог bin платформыIIS_IUSRSЧтение и выполнение
Каталог файловой базыУдостоверение пула IISИзменение

Для Apache на Windows те же права нужны учётной записи, под которой запущена служба. На Linux — пользователю www-data.

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

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

  • 👤 Аутентификация 1С. Самый простой вариант: пользователь видит окно ввода логина и пароля 1С. Подходит для доступа извне.
  • 🪟 Аутентификация ОС. В карточке пользователя 1С указывают учётную запись Windows, в IIS для каталога публикации включают «Проверку подлинности Windows». Удобно в домене, но через интернет без VPN работает плохо.
  • 🤖 Автовход через default.vrd. Только для служебных интеграций.

HTTPS обязателен для интернета

Без шифрования логины и пароли 1С идут по сети открытым текстом. Публикуя базу наружу, подключите сертификат: в IIS — привязкой HTTPS к сайту, в Apache — модулем mod_ssl. На Linux удобная схема — nginx с сертификатом Let’s Encrypt перед Apache, который слушает только локальный интерфейс.

Не публикуйте базу в интернет на стандартном адресе вида /buh без ограничений. Ограничьте доступ по IP-адресам офисов или поставьте публикацию за VPN, если пользователей немного.

Ошибки при публикации и подключении к веб-серверу 1С

Выберите симптом — ниже причина и что делать.

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

Если причина не очевидна, смотрите журналы: у Apache — logs\error.log в каталоге установки (на Linux /var/log/apache2/error.log), у IIS — «Просмотр событий» Windows и журналы сайта. Текст ошибки из журнала обычно сразу указывает на модуль, путь или права.

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

Пока пользователей 5–10, настраивать почти нечего. Когда их десятки или к базе ходят интеграции, узкие места становятся заметны.

Сеансы HTTP-сервисов и OData. По умолчанию каждый запрос может открывать новый сеанс 1С, а это сотни миллисекунд на вход. Включите повторное использование сеансов атрибутом reuseSessions="autouse" и задайте размер пула (poolSize) и время жизни сеанса (sessionMaxAge) в default.vrd. Учтите: каждый сеанс из пула может занимать лицензию.

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

Потоки Apache на Windows. Модуль mpm_winnt обслуживает запросы фиксированным числом потоков (ThreadsPerChild). Если пользователей много и браузеры «висят» на загрузке, увеличьте это значение с запасом.

Сеть до кластера. Веб-сервер общается с сервером 1С постоянно. Держите их в одной локальной сети, без VPN-туннеля между ними.

Несколько веб-серверов. Для отказоустойчивости публикацию делают на двух машинах с одинаковым default.vrd и ставят перед ними балансировщик. Веб-клиент хранит состояние в сеансе, поэтому балансировщику нужна привязка клиента к одному серверу (sticky sessions).

Любая правка default.vrd или настроек пула вступает в силу после перезапуска веб-сервера или пула. Это обрывает текущие веб-сеансы — делайте это, когда пользователи не работают.

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

Нужен ли отдельный сервер под веб-публикацию?
Нет. Для небольшой организации IIS или Apache можно поставить на ту же машину, что и сервер 1С. Отдельная машина нужна, когда публикацию открывают в интернет и хотят изолировать её от кластера.
Можно ли опубликовать файловую базу?
Да, строка соединения будет вида File=путь. Но веб-серверу нужны права на изменение каталога базы, а при нескольких активных пользователях файловый вариант работает заметно медленнее клиент-серверного.
Чем подключение тонкого клиента через веб-сервер отличается от прямого?
При добавлении базы выбирается вариант подключения к веб-серверу и указывается адрес публикации. Клиенту не нужны порты кластера, только HTTP или HTTPS, поэтому так удобно подключать удалённые офисы.
Можно ли опубликовать несколько баз на одном веб-сервере?
Да. У каждой базы своё имя публикации и свой каталог с default.vrd. Модуль платформы в httpd.conf загружается один раз на все публикации.
Как снять публикацию?
В Конфигураторе в том же окне публикации есть кнопка «Отключить». На серверах без Конфигуратора используйте webinst с ключом -delete. Каталог публикации после этого можно удалить вручную.