Как устроен веб-сервер для 1С:Предприятия и как опубликовать на нём базу
Содержание
Веб-сервер 1С — это обычный Apache или IIS, в который подключён модуль расширения из комплекта платформы 1С:Предприятие 8.3. Модуль принимает HTTP-запросы и передаёт их информационной базе. Чтобы его настроить, нужно установить компонент «Модули расширения веб-сервера», затем в конфигураторе открыть Администрирование → Публикация на веб-сервере и указать имя публикации и каталог.
Типичная ситуация: директор хочет открывать базу с ноутбука в командировке, а склад — работать через браузер без установки клиента. Или банк и сайт должны забирать данные через HTTP-сервисы. Во всех этих случаях без веб-сервера не обойтись: прямой доступ к серверу 1С из интернета не открывают, а браузер и внешние системы умеют говорить только по HTTP.
Где веб-сервер стоит в схеме работы 1С
Веб-сервер не хранит данные и не выполняет код конфигурации. Он — посредник между HTTP-клиентом и базой.
Цепочка выглядит так:
- 🌐 Браузер, тонкий клиент или внешняя программа отправляет HTTP-запрос по адресу вида
http://server/buh. - 🧩 Apache или IIS по имени публикации находит обработчик 1С и передаёт запрос модулю расширения.
- 📄 Модуль читает файл
default.vrdв каталоге публикации и узнаёт строку подключения к базе. - 🗄️ Дальше модуль работает как обычный клиент 1С: открывает файловую базу или подключается к кластеру серверов 1С.
Для клиент-серверного варианта последний шаг идёт по стандартным портам: агент сервера 1С (1540), менеджер кластера (1541) и рабочие процессы. Диапазон портов рабочих процессов задают в свойствах рабочего сервера, по умолчанию это 1560–1591. Если между веб-сервером и сервером 1С стоит межсетевой экран, открыть нужно все эти порты.
Что можно опубликовать
| Что публикуем | Кто пользуется | Зачем |
|---|---|---|
| Веб-клиент | Пользователь в браузере | Работа без установки платформы |
| Тонкий клиент по HTTP | Сотрудник вне офиса | Работа через интернет без VPN до сервера 1С |
| Веб-сервисы (SOAP) | Внешние системы | Обмен по WSDL-описанию |
| HTTP-сервисы | Сайт, мобильное приложение, банк | REST-подобный обмен |
| Стандартный интерфейс OData | BI-системы, интеграции | Чтение и запись объектов без доработки конфигурации |
Каждое подключение пользователя через веб-клиент или тонкий клиент по HTTP занимает клиентскую лицензию так же, как обычный запуск. Веб-сервер лицензий не добавляет.
Apache, IIS или автономный сервер: что выбрать для веб-сервера 1С
Платформа поддерживает несколько вариантов. Выбор зависит от ОС и от того, кто будет обслуживать сервер.
| Вариант | Модуль 1С | Когда подходит | Минусы |
|---|---|---|---|
| Apache 2.4 (Windows) | wsap24.dll | Самый частый выбор, простая настройка через httpd.conf | Нужно ставить отдельно, следить за обновлениями |
| Apache 2.4 (Linux) | wsap24.so | Сервер 1С на Linux, хочется всё в одной ОС | Права на каталоги и SELinux требуют внимания |
| IIS | wsisapi.dll | Windows Server, где IIS уже есть и администратор его знает | Больше ручных настроек: роли, пулы, обработчики |
Автономный сервер ibsrv | Встроен | Тест, разработка, одна небольшая база | Не замена полноценному веб-серверу в продакшене |
Модуль для Apache 2.2 (wsapch2.dll) остался в поставке, но сам Apache 2.2 давно не поддерживается. Ставить его на новый сервер нет смысла.
Разрядность модуля должна совпадать с разрядностью веб-сервера. 64-битный Apache работает только с модулем из 64-битной платформы. Для IIS с 32-битным модулем в пуле приложений включают параметр «Разрешить 32-разрядные приложения».
Что установить заранее
- ✅ Платформу 1С той же версии, что и сервер 1С, с компонентом «Модули расширения веб-сервера».
- ✅ Сам веб-сервер: Apache 2.4 как служба Windows или пакет в Linux; для IIS — роль «Веб-сервер» с компонентом «Расширения ISAPI».
- ✅ Права администратора ОС на машине, где будете публиковать: конфигуратор правит конфиг веб-сервера.
Публикация базы на веб-сервере: пошагово
Способ 1. Через конфигуратор
- Запустите конфигуратор от имени администратора Windows (правой кнопкой → «Запуск от имени администратора»). Без этого 1С не сможет записать изменения в
httpd.confили в настройки IIS. - Откройте базу и выберите
Администрирование → Публикация на веб-сервере. - В поле «Имя» укажите короткое имя латиницей, например
buh. Оно станет частью адреса:http://server/buh. - В поле «Веб-сервер» выберите Apache 2.4 или IIS. Если Apache в списке нет — платформа не нашла его установку или модуль расширения не установлен.
- Укажите каталог публикации, например
C:\inetpub\buh. Туда ляжетdefault.vrd. - Отметьте, что публикуете: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, OData.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Перезапуск Apache или IIS обрывает все текущие подключения через этот веб-сервер. Если на нём уже работают пользователи, публикуйте вне рабочего времени или предупредите их.
Проверка: откройте в браузере http://server/buh. Должно появиться окно входа в 1С.
Способ 2. Утилитой webinst
На сервере без графической оболочки или при развёртывании нескольких баз удобнее командная строка. Утилита webinst лежит в каталоге bin платформы:
cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst -publish -apache24 -wsdir buh -dir "C:\inetpub\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"
Номер версии в пути подставьте свой. Для файловой базы строка подключения выглядит как File="D:\Bases\buh";. Для IIS вместо -apache24 указывают -iis, а -confpath не нужен. Полный список ключей выводит webinst без параметров.
Что публикация меняет в конфиге Apache
После публикации в конце httpd.conf появляются строки такого вида:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll"
# 1c publication
Alias "/buh" "C:/inetpub/buh/"
<Directory "C:/inetpub/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/buh/default.vrd"
</Directory>
Строка LoadModule должна быть одна на весь файл. Если публикуете несколько баз, повторяется только блок Alias и Directory.
Файл 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="srv1c";Ref="buh";">
<ws pointEnableCommon="true"/>
<httpServices publishByDefault="true"/>
<standardOdata enable="false"/>
</point>
Что здесь важно:
- 🔗
base— имя публикации, совпадает с адресом вAlias. - 🗄️
ib— строка подключения. Кавычки внутри экранируются как". - 🧩
wsиhttpServices— включены ли веб-сервисы и HTTP-сервисы. - 📊
standardOdata— стандартный интерфейс OData. Включайте, только если им реально пользуются.
После правки default.vrd веб-сервер перезапускать не нужно: модуль перечитывает файл при новых подключениях. А вот изменения в httpd.conf вступают в силу только после перезапуска Apache.
Приём практика: обновление платформы
Строка LoadModule содержит номер версии платформы. После обновления сервера 1С публикация продолжает ссылаться на старый модуль. Пока старая версия установлена, всё работает, но клиенты получают ошибку несовпадения версий. Если старую платформу удалить, Apache вообще перестанет запускаться.
Порядок при обновлении:
- Установите новую платформу с модулями расширения веб-сервера.
- Замените путь в строке
LoadModuleна каталог новой версии. - Проверьте синтаксис командой
httpd -tиз каталогаbinApache. - Перезапустите службу Apache в нерабочее время.
Повторная публикация из конфигуратора новой версии делает то же самое автоматически.
Ошибки подключения к веб-серверу 1С и их причины
Большинство проблем с публикацией делится на три группы: веб-сервер не стартует, веб-сервер не пускает к каталогу, модуль 1С не может открыть базу .
Если публикация недоступна в конфигураторе
Пункт «Публикация на веб-сервере» неактивен или в списке нет нужного веб-сервера — проверьте две вещи:
- 🔐 Конфигуратор запущен без прав администратора Windows.
- 📦 При установке платформы не отмечен компонент «Модули расширения веб-сервера». Запустите установщик платформы повторно, выберите «Изменить» и добавьте компонент.
Как читать журналы
Apache пишет ошибки в logs\error.log своего каталога. IIS — в журналы сайта и в журнал событий Windows. Ошибки самой 1С на стороне сервера ищите в технологическом журнале кластера, если он настроен. Для первичной диагностики error.log Apache обычно хватает: в нём видна строка с причиной отказа.
Производительность и защита веб-сервера 1С
Веб-сервер — точка входа в учётную базу из внешней сети. Публикация без защиты равна открытой двери в бухгалтерию.
Безопасность
- 🔒 Только HTTPS. Открывать базу в интернет по HTTP нельзя: пароли и данные идут открытым текстом. Сертификат ставят на сам Apache (модуль
mod_ssl), на IIS или на обратный прокси перед ними. - 🚪 Минимум публикаций наружу. Наружу публикуют только то, что нужно снаружи. Внутренние базы держат в локальной сети или за VPN.
- 👤 Пароли у всех пользователей 1С. Пользователь без пароля при опубликованной базе — серьёзная уязвимость.
- 🔑 Учётные данные в
default.vrd— только для сервисов. Если для HTTP-сервиса прописан пользователь с паролем, этот пользователь должен иметь только нужные сервису права. - 🛡️ Ограничение по адресам. Для интеграционных публикаций разрешите доступ только с IP контрагента: в Apache это директива
Require ip, в IIS — «Ограничения IPv4-адресов и доменов».
Не публикуйте базу в интернет без HTTPS и без паролей у пользователей. Открытые публикации 1С находят автоматические сканеры, и подбор паролей к ним — обычное дело.
Производительность
- ⚙️ Веб-сервер рядом с кластером. Модуль общается с сервером 1С часто и мелкими запросами. Чем меньше сетевая задержка между ними, тем быстрее работа пользователей.
- 📈 Отдельная машина при большой нагрузке. До нескольких десятков пользователей веб-сервер спокойно живёт на одном сервере с 1С. Если через публикацию работает большая часть офиса или идут интенсивные обмены, выносите его отдельно.
- 🧹 OData и веб-сервисы — только по необходимости. Каждый включённый интерфейс — лишняя нагрузка и поверхность атаки.
- 🌍 Тонкий клиент вместо веб-клиента. Тонкий клиент по HTTP передаёт меньше данных и работает заметно быстрее браузера. Веб-клиент оставьте для случаев, когда установить платформу нельзя.
Если стандартная схема не подходит
Бывает, что ставить Apache или IIS нельзя: политика безопасности, нет администратора, нужен быстрый тест. Варианты:
- 🧪 Автономный сервер
ibsrv. Запускает базу вместе со встроенным HTTP-сервером без кластера и без Apache. Подходит для разработки и демонстраций. - 🖥️ Удалённый рабочий стол. Пользователь подключается к терминальному серверу, а 1С там работает обычным клиентом. Веб-сервер не нужен вообще, но нужны лицензии на терминальный доступ.
- ☁️ Аренда 1С в облаке. Публикацию, сертификаты и обновления обслуживает провайдер. Логично для небольших компаний без своего администратора.