Публикация базы 1С на веб-сервере: от модуля расширения до HTTPS

· 10 мин

Содержание

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

IIS выбирают, когда инфраструктура уже на Windows Server и админ привык к его консоли. Apache берут для Linux-серверов и когда нужна одна схема на любой ОС. По возможностям для 1С они равны: веб-клиент, тонкий клиент через HTTP, веб-сервисы, HTTP-сервисы и OData работают на обоих.

Какой веб-сервер выбрать и что подготовить

Сравнение вариантов, которые поддерживает платформа 8.3:

Веб-серверОСМодуль 1СКогда выбирать
IIS 10Windows Server 2016 и новее, Windows 10/11wsisapi.dllWindows-инфраструктура, домен, нужен простой GUI
Apache 2.4Windowswsap24.dllНужна одинаковая конфигурация с Linux-серверами
Apache 2.4Linux (Debian, Ubuntu, РЕД ОС, Astra)wsap24.soСервер 1С на Linux, импортозамещение

Перед установкой проверьте четыре вещи:

  • 🧩 Разрядность. Модуль 1С должен совпадать по разрядности с веб-сервером. IIS на 64-битной Windows работает с 64-битной платформой. Apache для Windows бывает 32- и 64-битным — ставьте платформу той же разрядности.
  • 🔢 Версия платформы. На веб-сервере ставится та же версия платформы, что на сервере 1С (номер в номер, например 8.3.25.1445 на обоих). Иначе соединение с кластером не установится.
  • 🔌 Порты. Если база клиент-серверная, веб-сервер ходит к кластеру 1С как обычный клиент: агент на 1540, менеджер кластера на 1541 и диапазон рабочих процессов (по умолчанию 1560–1591). Эти порты должны быть открыты от веб-сервера к серверу 1С.
  • 🔑 Лицензии. Веб-клиент занимает клиентскую лицензию так же, как тонкий клиент. В клиент-серверном варианте её выдаёт кластер. В файловом — лицензия должна быть доступна модулю веб-сервера на этом компьютере.

Подготовка IIS

Откройте Диспетчер серверов → Управление → Добавить роли и компоненты и включите роль «Веб-сервер (IIS)». В составе роли отметьте:

  1. «Разработка приложений» → «Расширения ISAPI» и «Фильтры ISAPI».
  2. «Средства управления» → «Консоль управления IIS».
  3. Стандартные компоненты HTTP («Статическое содержимое», «Документ по умолчанию») обычно включены сами.

Без «Расширений ISAPI» публикация пройдёт, но браузер получит ошибку 404.

Подготовка Apache

На Linux Apache ставят из репозитория дистрибутива: apt install apache2 для Debian и Ubuntu. На Windows используют сборку Apache 2.4 под Windows, распаковывают её, например, в C:\Apache24 и регистрируют службой командой httpd.exe -k install из папки bin.

Старые сборки Apache 2.2 платформа 8.3 тоже поддерживает модулем wsap22, но новые серверы на 2.2 не поднимают: эта ветка давно не получает исправлений.

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

Модуль ставится вместе с платформой. В программе установки 1С:Предприятия выберите компонент «Модули расширения веб-сервера». Остальные компоненты на веб-сервере не обязательны, но удобно поставить и «1С:Предприятие» — без Конфигуратора публикацию придётся делать утилитой webinst.

После установки файлы модулей лежат в папке bin платформы, например:

C:\Program Files\1cv8\8.3.25.1445\bin\wsisapi.dll
C:\Program Files\1cv8\8.3.25.1445\bin\wsap24.dll
/opt/1cv8/x86_64/8.3.25.1445/wsap24.so

На Linux модули входят в пакет сервера (в новых версиях единый дистрибутив, компонент выбирается при установке). Проверить, что модуль на месте, просто: ls /opt/1cv8/x86_64/*/wsap24.so.

Путь к модулю содержит номер версии платформы. Это главный подводный камень, к нему вернёмся в разделе об ошибках.

Публикация базы на веб-сервере

Есть два способа: мастер в Конфигураторе и утилита командной строки webinst. Мастер удобен разово, утилита — для скриптов и серверов без графической оболочки.

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

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

В каталоге появится файл default.vrd. В нём записана строка соединения с базой и список опубликованных сервисов.

Через webinst

Утилита лежит в той же папке bin. Пример для IIS и клиент-серверной базы:

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

Пример для Apache на Linux:

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

Для файловой базы строка соединения выглядит так: File="D:\Bases\Buh";. Полный список ключей выводит webinst -help.

Что мастер записывает в конфигурацию Apache

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

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1445/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 пишется один раз на весь сервер. Блоки Alias и Directory — на каждую публикацию.

Подключение тонкого клиента

В окне запуска 1С нажмите «Добавить», выберите «Добавление в список существующей информационной базы» и тип расположения «На веб-сервере». Адрес — http://server/buh. Тонкий клиент будет ходить к базе по HTTP, без прямого доступа к серверу 1С.

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

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

Права на файлы

  • 📁 IIS. Учётная запись пула приложений (по умолчанию IIS AppPool\DefaultAppPool) и группа IIS_IUSRS должны читать каталог публикации и папку bin платформы.
  • 📁 Файловая база через IIS. Той же учётной записи нужны права на изменение каталога базы. Иначе база откроется с ошибкой доступа к файлу 1Cv8.1CD.
  • 📁 Apache на Windows. Права нужны пользователю, от которого запущена служба Apache. По умолчанию это «Локальная система»; для файловой базы на сетевом ресурсе запускайте службу от доменной учётной записи с доступом к папке.
  • 📁 Apache на Linux. Пользователь www-data (Debian, Ubuntu) или apache должен читать каталог публикации.

Аутентификация пользователей

Пользователи входят так же, как в обычном клиенте: по логину и паролю 1С:Предприятия или через аутентификацию операционной системы. Пользователей заводят в базе: Администрирование → Настройки пользователей и прав → Пользователи (БП 3.0, ЗУП 3.1, УТ 11).

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

В default.vrd можно зашить логин и пароль в строку соединения (Usr=...;Pwd=...;). Так делают только для служебной публикации веб-сервиса, к которой ходит другая программа. Для людей это дыра: любой посетитель войдёт под этим пользователем.

Профили безопасности кластера

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

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

Публикуйте только нужное

Чем меньше сервисов открыто, тем меньше поверхность атаки. Если OData и веб-сервисы никто не использует, снимите их флажки при публикации. Для внешних пользователей удобно сделать отдельную публикацию только с веб-клиентом, а служебную публикацию с HTTP-сервисами держать во внутренней сети.

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

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

Настройки пула приложений IIS

Откройте Диспетчер IIS → Пулы приложений → DefaultAppPool → Дополнительные параметры:

ПараметрЗначение по умолчаниюЧто поставить для 1С
Включить 32-разрядные приложенияFalseFalse для 64-битной платформы, True для 32-битной
Тайм-аут простоя (мин.)200 — пул не выгружается, первый вход без задержки
Регулярный интервал перезапуска (мин.)17400 и перезапуск по расписанию в ночное время

Перезапуск пула обрывает все сеансы веб-клиента. Пользователи увидят ошибку и потеряют несохранённые данные, поэтому дневной перезапуск каждые 29 часов лучше отключить и перенести на ночь.

Для каждой крупной базы удобно сделать отдельный пул. Тогда сбой или перезапуск одной публикации не задевает остальные.

Что ещё ускоряет работу

  • 🚀 Расстояние до сервера 1С. Веб-сервер ставят в той же сети, что и кластер. Задержка между ними умножается на каждый серверный вызов.
  • 🚀 Файловая база. Через веб она работает заметно лучше, чем по сетевой папке: файлы читает один процесс на веб-сервере. Но при 10–15 одновременных пользователях пора переходить на клиент-серверный вариант.
  • 🚀 Сжатие. Включите сжатие статического содержимого (в IIS — компонент «Сжатие статического содержимого», в Apache — mod_deflate). Это ускоряет первую загрузку веб-клиента на медленных каналах.

Масштабирование

При росте числа пользователей добавляют рабочие серверы в кластер 1С — веб-сервер при этом не меняется. Если узким местом стал сам веб-сервер или нужна отказоустойчивость, ставят два-три веб-сервера с одинаковыми публикациями и балансировщик перед ними. Балансировщик должен держать «липкие» сеансы: один пользователь всё время попадает на один веб-сервер.

HTTPS для веб-доступа к 1С

Если база открыта в интернет, HTTP недопустим: логин и пароль 1С уходят по сети в открытом виде. Нужен сертификат и защищённое соединение.

IIS

  1. Получите сертификат. Для публичного домена подходит бесплатный Let’s Encrypt через клиент win-acme, для внутренней сети — сертификат корпоративного центра сертификации.
  2. В Диспетчере IIS выберите сайт → «Привязки» → «Добавить», тип https, порт 443, выберите сертификат.
  3. Чтобы не пускать по HTTP, в разделе «Параметры SSL» сайта отметьте «Требовать SSL».

Apache

Включите модуль SSL и опишите виртуальный хост на 443 порту. На Debian и Ubuntu это a2enmod ssl, а сертификат Let’s Encrypt удобно получить через certbot --apache.

<VirtualHost *:443>
    ServerName 1c.example.ru
    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/1c.example.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/1c.example.ru/privkey.pem
</VirtualHost>

После этого в списке баз адрес меняют на https://1c.example.ru/buh.

Самоподписанный сертификат подходит только для проверки. Тонкий клиент и браузер будут ругаться на него, а пользователи привыкнут нажимать «Продолжить» — это хуже, чем отсутствие сертификата.

Дополнительно ограничьте доступ на уровне сети: открывайте наружу только 443 порт, а порты кластера 1540–1591 держите закрытыми для интернета.

Ошибки веб-доступа и как их устранить

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

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

Ошибку с обновлением платформы ловят чаще всего. Хорошая практика — после каждого обновления сервера 1С сразу ставить ту же сборку на веб-сервер и переопубликовывать базы командой webinst из скрипта. Старую версию платформы удаляйте только после этого.

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

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

Можно ли опубликовать на одном веб-сервере несколько баз?
Да. Каждая база получает свою публикацию с собственным именем: /buh, /zup, /ut. Строка LoadModule в Apache при этом одна на все публикации.
Нужен ли статический IP для доступа из интернета?
Удобнее со статическим адресом и доменным именем. Без него работают через сервис динамического DNS, но сертификат и адрес в списке баз придётся привязать к этому имени.
Как пустить к публикации только определённые IP-адреса?
В Apache замените в блоке Directory строку Require all granted на Require ip 192.168.1.0/24 с нужной подсетью. В IIS для этого есть компонент роли «Ограничения IP-адресов и доменов».
Чем веб-клиент отличается от тонкого клиента через веб-сервер?
Веб-клиент работает в браузере и ничего не требует на компьютере. Тонкий клиент ставится как программа, но подключается по тому же HTTP-адресу и обычно работает быстрее и стабильнее.
Можно ли вместо публикации пробросить порты 1С в интернет?
Технически можно, но это опаснее и сложнее: открываются порты кластера, а трафик идёт без шифрования. Публикация через HTTPS закрывает обе проблемы.