Веб-сервер 1С: публикация базы на Apache и IIS через Конфигуратор и webinst
Веб-клиент, тонкий клиент через интернет, веб-сервисы, HTTP-сервисы и OData работают только через опубликованную базу. Разбираем, какой веб-сервер выбрать для 1С, что установить перед публикацией, как опубликовать базу из Конфигуратора и командой webinst на Windows и Linux, что меняется в httpd.conf и default.vrd, как настроить права и HTTPS и почему после обновления платформы публикация перестаёт работать.
Зачем 1С нужен веб-сервер
Веб-сервер для 1С — это посредник между HTTP-клиентом и информационной базой. Сам по себе Apache или IIS ничего не знает о 1С: работу выполняет модуль расширения веб-сервера, который входит в дистрибутив платформы. Он принимает запросы, передаёт их серверу 1С:Предприятия (или открывает файловую базу) и возвращает ответ. Публикация базы 1С на веб-сервере нужна в нескольких случаях:
- работа в веб-клиенте из браузера без установки платформы;
- подключение тонкого и мобильного клиента по HTTP или HTTPS, когда прямого доступа к кластеру нет;
- вызов веб-сервисов (SOAP), HTTP-сервисов и стандартного интерфейса OData из внешних систем.
После публикации у базы появляется адрес вида http://сервер/имя_публикации, а сервисы получают типовые пути:
| Что опубликовано | Адрес |
|---|---|
| Веб-клиент и тонкий клиент | http://srv01/trade |
| Веб-сервис | http://srv01/trade/ws/ИмяСервиса?wsdl |
| HTTP-сервис | http://srv01/trade/hs/КорневойURL/... |
| OData | http://srv01/trade/odata/standard.odata/ |
Если пользователи работают только в локальной сети и у них есть доступ к портам кластера, веб-сервер не обязателен. Устройство кластера и его порты описаны в статье про сервер 1С:Предприятия.
Что установить перед публикацией
Нужны три вещи: сам веб-сервер, модуль расширения 1С и платформа той же версии, что и сервер 1С. В установщике платформы для Windows отметьте компонент «Модули расширения веб-сервера». На Linux модуль ставится отдельным компонентом или пакетом (в установщике setup-full-...run это компонент ws). Разрядность модуля должна совпадать с разрядностью веб-сервера: 64-разрядный Apache загружает только 64-разрядный модуль.
| Веб-сервер | Файл модуля | Ключ webinst |
|---|---|---|
| Apache 2.4, Windows | wsap24.dll | -apache24 |
| Apache 2.4, Linux | wsap24.so | -apache24 |
| Apache 2.2 (устаревший) | wsap22.dll / wsap22.so | -apache22 |
| IIS | wsisapi.dll | -iis |
IIS 1С: подготовка Windows
Компоненты IIS по умолчанию не установлены. В Windows 10/11 откройте «Включение и отключение компонентов Windows» (appwiz.cpl) и отметьте «Службы IIS» → «Службы Интернета» → «Компоненты разработки приложений» → «Расширения ISAPI» и «Фильтры ISAPI», а также «Консоль управления IIS». В Windows Server то же делается в «Диспетчере серверов»: роль «Веб-сервер (IIS)», в службах роли — ISAPI Extensions и ISAPI Filters. Такой набор приводит методика 1С по настройке IIS.
Apache для 1С
На Linux Apache ставится из репозитория дистрибутива: пакет apache2 в Debian и Ubuntu, httpd в RHEL-совместимых системах и РЕД ОС. Для Windows официального установщика нет — обычно берут готовую сборку Apache 2.4 нужной разрядности, распаковывают её (например, в C:\Apache24) и регистрируют службу командой httpd.exe -k install. Перед публикацией убедитесь, что Apache запускается и отдаёт стартовую страницу.
Публикация базы 1С на веб-сервере из Конфигуратора
Самый простой способ — диалог в Конфигураторе. Конфигуратор нужно запустить от имени администратора Windows, иначе ему не хватит прав на запись в конфигурацию веб-сервера.
- Откройте базу в Конфигураторе и выберите «Администрирование → Публикация на веб-сервере».
- В поле «Имя» укажите имя публикации — оно станет частью адреса (
trade→http://srv01/trade). Используйте латиницу без пробелов. - Выберите веб-сервер из списка (Apache 2.4 или Internet Information Services) и каталог публикации — в нём будет создан файл
default.vrd. - На закладке «Основные» отметьте, что публиковать: доступ для клиентских приложений, стандартный интерфейс OData, а на отдельных закладках — нужные веб-сервисы и HTTP-сервисы.
- Нажмите «Опубликовать». Для Apache диалог предложит перезапустить веб-сервер — согласитесь.
Для IIS публикация всегда выполняется в «Default Web Site» и пул приложений по умолчанию. Если нужны другой сайт или отдельный пул, перенастройте их в диспетчере IIS после публикации. Повторная публикация с тем же именем обновляет настройки, кнопка «Отключить» удаляет публикацию.
Утилита webinst: публикация из командной строки
Утилита webinst лежит в каталоге bin платформы (на Linux — в каталоге установки, например /opt/1cv8/x86_64/8.3.27.xxxx). Она делает то же, что диалог, но её удобно использовать в скриптах, на сервере без графического интерфейса и на Linux. Основные параметры:
| Параметр | Назначение |
|---|---|
-publish / -delete | Опубликовать базу или удалить публикацию |
-iis, -apache22, -apache24 | Тип веб-сервера |
-wsdir | Имя публикации (виртуальный каталог) |
-dir | Физический каталог публикации с файлом default.vrd |
-connstr | Строка соединения с базой |
-confpath | Путь к конфигурационному файлу Apache |
-descriptor | Готовый файл default.vrd, из которого берутся настройки |
-osauth | Аутентификация средствами ОС на стороне IIS |
Примеры для разных случаев. Командную строку на Windows открывайте от имени администратора, на Linux выполняйте команды через sudo:
rem Apache 2.4 на Windows, клиент-серверная база
webinst.exe -publish -apache24 -wsdir trade -dir "C:\Apache24\htdocs\trade" ^
-connstr "Srvr=srv01;Ref=trade;" -confpath "C:\Apache24\conf\httpd.conf"
rem IIS, файловая база
webinst.exe -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "File=""D:\Bases\Buh"";"
rem Удаление публикации
webinst.exe -delete -apache24 -wsdir trade -dir "C:\Apache24\htdocs\trade" -confpath "C:\Apache24\conf\httpd.conf"
# Apache 2.4 на Linux (Debian/Ubuntu)
cd /opt/1cv8/x86_64/8.3.27.xxxx
sudo ./webinst -publish -apache24 -wsdir trade -dir /var/www/trade \
-connstr "Srvr=srv01;Ref=trade;" -confpath /etc/apache2/apache2.conf
sudo apachectl -t && sudo systemctl restart apache2
В RHEL-совместимых системах конфигурация Apache обычно лежит в /etc/httpd/conf/httpd.conf, а служба называется httpd. Путь к конфигурационному файлу лучше передавать явно, чтобы утилита не изменила другой экземпляр Apache.
Что меняется после публикации: httpd.conf и default.vrd
Для Apache утилита дописывает в конфигурацию загрузку модуля и блок каталога публикации. Обратите внимание: в путь к модулю входит номер версии платформы.
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.xxxx/bin/wsap24.dll"
# 1c publication
Alias "/trade" "C:/Apache24/htdocs/trade/"
<Directory "C:/Apache24/htdocs/trade/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache24/htdocs/trade/default.vrd"
</Directory>
Настройки самой публикации хранятся в default.vrd в каталоге публикации. Атрибут base — адрес публикации, ib — строка соединения; вложенные элементы управляют веб-сервисами, HTTP-сервисами и OData. Упрощённый пример:
<?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="/trade"
ib="Srvr="srv01";Ref="trade";">
<ws pointEnableCommon="true"/>
<httpServices publishByDefault="true"/>
<standardOdata enable="false"/>
</point>
Файл можно править вручную, например чтобы отключить OData или опубликовать только один HTTP-сервис. После правки перезапустите Apache или пул приложений IIS. Перед изменениями сохраните копию файла.
Права доступа и аутентификация
Для файловой базы учётная запись, от имени которой работает веб-сервер, должна иметь права на чтение и запись в каталог базы: на Linux это пользователь www-data или apache, в IIS — удостоверение пула приложений (группа IIS_IUSRS). Без этого публикация откроется, но вход в базу завершится ошибкой доступа к файлу. Для клиент-серверной базы права на файлы не нужны: модуль обращается к кластеру по сети, поэтому с веб-сервера должны быть доступны порты кластера.
Пользователь входит в базу под учётной записью 1С. Чтобы внешняя система вызывала сервисы без формы входа, задайте пользователя в настройках публикации или передавайте логин и пароль в заголовке запроса — подробнее в статье про авторизацию при обращении к веб-сервису.
HTTPS и доступ из интернета
Публиковать базу в интернет по обычному HTTP нельзя: логины, пароли и данные передаются открытым текстом. Методика 1С прямо не рекомендует такую схему. Варианты защиты:
- IIS — импортируйте сертификат в «Сертификаты сервера» и добавьте сайту привязку
httpsна порт 443. - Apache — включите
mod_ssl, добавьтеListen 443и виртуальный хост с директивамиSSLCertificateFileиSSLCertificateKeyFile. - Обратный прокси (например, nginx) — принимает HTTPS снаружи и передаёт запросы внутреннему Apache или IIS.
Дополнительно ограничьте доступ по IP-адресам или через VPN и не публикуйте наружу OData и сервисы, которые нужны только внутри сети.
Проверка публикации из 1С
Простейшая проверка — открыть адрес публикации в браузере. Работу HTTP-сервиса удобно проверить из другой базы кодом на встроенном языке. Пример на сервере предполагает опубликованный HTTP-сервис с корневым URL api и шаблоном /ping:
&НаСервере
Функция ПроверитьПубликацию()
Соединение = Новый HTTPСоединение("srv01", 80, "ИнтеграцияAPI", "пароль", , 15);
Запрос = Новый HTTPЗапрос("/trade/hs/api/ping");
Запрос.Заголовки.Вставить("Accept", "application/json");
Попытка
Ответ = Соединение.Получить(Запрос);
Исключение
Возврат "Нет соединения: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Если Ответ.КодСостояния = 200 Тогда
Возврат "OK: " + Ответ.ПолучитьТелоКакСтроку();
ИначеЕсли Ответ.КодСостояния = 401 Тогда
Возврат "Ошибка аутентификации: проверьте пользователя и права";
ИначеЕсли Ответ.КодСостояния = 404 Тогда
Возврат "Не найдено: проверьте имя публикации и корневой URL сервиса";
Иначе
Возврат "Код ответа " + Ответ.КодСостояния;
КонецЕсли;
КонецФункции
Для HTTPS передайте седьмым параметром конструктора объект Новый ЗащищенноеСоединениеOpenSSL() и укажите порт 443. Как разбирать JSON-ответ, показано в статье про HTTP-запросы из 1С.
Альтернатива: автономный сервер
Для небольших задач вместо связки «Apache или IIS плюс кластер» можно использовать автономный сервер ibsrv. В нём есть встроенный веб-сервер, через который работают тонкий клиент и веб-клиент. HTTPS он сам не обслуживает, поэтому для доступа из интернета его ставят за обратный прокси. Для рабочей базы с десятками пользователей привычнее полноценный кластер и отдельный веб-сервер.
Типичные ошибки при публикации 1С на Apache и IIS
| Симптом | Причина и решение |
|---|---|
| Apache не запускается после публикации | Не совпадает разрядность модуля и Apache или путь в LoadModule указывает на удалённую версию платформы. Проверьте синтаксис командой httpd -t (apachectl -t) и исправьте путь. |
| После обновления платформы перестал работать веб-клиент | Модуль остался от старой версии. Опубликуйте базу заново утилитой webinst новой версии или поправьте путь к модулю. Версии модуля и сервера 1С должны совпадать. |
| Ошибка 404 по адресу публикации | Имя в адресе не совпадает с -wsdir, публикация сделана в другой экземпляр Apache или в IIS не зарегистрирован обработчик. |
| IIS: ошибка 500 или модуль не загружается | В 64-разрядном IIS установлен 32-разрядный модуль. Либо поставьте 64-разрядный, либо создайте отдельный пул с параметром «Разрешены 32-разрядные приложения». |
| Ошибка доступа к файлу базы | У учётной записи веб-сервера нет прав на каталог файловой базы. |
| Linux: ошибка загрузки компоненты backbas в веб-клиенте | Встречается на новых релизах в RHEL-подобных системах из-за ограничения MemoryDenyWriteExecute в юните systemd или SELinux. Добавьте в override юнита MemoryDenyWriteExecute=no и настройте контексты SELinux. |
Актуальность для новых версий
Порядок публикации — диалог «Публикация на веб-сервере» и утилита webinst — одинаков во всех релизах 8.3. Модуль wsap24 для Apache 2.4 и модуль для IIS поставляются с платформой, а путь к модулю в конфигурации Apache содержит номер версии, поэтому после каждого обновления платформы публикацию нужно проверять. Список параметров webinst и особенности для вашего релиза уточняйте в «Руководстве администратора» на ИТС: там же есть документация по ветке 8.5.
Частые вопросы
Какой веб-сервер лучше для 1С: Apache или IIS?
Функционально они равноценны. IIS удобен на Windows Server, где он уже есть в составе системы. Apache 2.4 подходит и для Windows, и для Linux, а на Linux это основной вариант. Выбирайте сервер, который ваша команда умеет обслуживать, и следите за совпадением разрядности модуля и веб-сервера.
Где находится утилита webinst?
В Windows — в каталоге bin установленной версии платформы, например C:\Program Files\1cv8\8.3.27.xxxx\bin. В Linux — в каталоге установки платформы, например /opt/1cv8/x86_64/8.3.27.xxxx. Используйте webinst той же версии, что и сервер 1С.
Почему после обновления платформы не открывается веб-клиент?
В конфигурации веб-сервера остался путь к модулю старой версии или модуль не совпадает с версией сервера. Опубликуйте базу заново утилитой webinst новой версии или исправьте путь в директиве LoadModule и перезапустите веб-сервер.
Можно ли опубликовать файловую базу на веб-сервере?
Можно: в строке соединения укажите File с путём к каталогу базы. Учётной записи веб-сервера нужны права на чтение и запись в этот каталог. Для многопользовательской работы через интернет надёжнее клиент-серверный вариант.
Нужно ли открывать порты кластера 1С наружу при веб-публикации?
Нет. Пользователи подключаются к веб-серверу по HTTP или HTTPS, а веб-сервер обращается к кластеру по внутренней сети. Наружу публикуют только порт веб-сервера, желательно 443 с HTTPS.