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

· 10 мин

Содержание

Чтобы поднять веб-сервер 1С, нужны три вещи: сам веб-сервер (IIS в Windows или Apache 2.4), установленный компонент платформы «Модули расширения веб-сервера» той же версии и разрядности, что и платформа, и публикация базы через Администрирование → Публикация на веб-сервере в Конфигураторе или консольной утилитой webinst. После публикации база открывается в браузере по адресу вида http://server/demo/, а HTTP- и веб-сервисы конфигурации становятся доступны по путям /hs/ и /ws/.

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

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

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

  • 📁 файловая база — модуль открывает каталог базы напрямую, поэтому веб-сервер должен стоять на той же машине или иметь доступ к сетевой папке;
  • 🖥 клиент-серверная база — модуль подключается к агенту кластера (порт 1540), затем к менеджеру кластера (1541) и рабочим процессам из диапазона портов рабочего сервера, по умолчанию 1560–1591.

Отсюда первое правило: версия модуля веб-сервера должна совпадать с версией кластера 1С до последней цифры сборки. Иначе подключение отклоняется с ошибкой несоответствия версий.

Что выбрать:

Веб-серверКогда братьМодуль 1СОсобенности
IISWindows Server, нужна интеграция с доменомwsisapi.dllставится ролью Windows, публикация из Конфигуратора в два клика
Apache 2.4 (Windows)нужен один конфиг-файл, удобно переноситьwsap24.dllставится отдельно, работает как служба
Apache 2.4 (Linux)сервер 1С на Linux, нет лицензий Windowswsap24.soпубликация только через webinst или правку конфига

Для небольшой офисной базы разницы почти нет. На IIS проще начать, на Apache проще разбираться в проблемах: вся настройка видна в одном файле.

Подготовка сервера перед публикацией

Шаг 1. Установите веб-сервер

IIS. В Windows Server 2016 и новее откройте Диспетчер серверов → Управление → Добавить роли и компоненты, выберите роль «Веб-сервер (IIS)». В службах ролей отметьте:

  1. Разработка приложений → Расширения ISAPI;
  2. Разработка приложений → Фильтры ISAPI;
  3. Средства управления → Консоль управления IIS.

Без расширений ISAPI публикация пройдёт, но браузер получит ошибку 404 или 500: обработчик 1С просто некому запустить.

Apache в Windows. Официальный сайт Apache не выпускает сборки для Windows, их берут у сторонних сборщиков (например, Apache Lounge). Распакуйте архив, например в C:\Apache24, и зарегистрируйте службу из командной строки, запущенной от администратора:

cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -t

Команда httpd.exe -t проверяет синтаксис конфигурации. Её стоит запускать после каждой правки httpd.conf.

Шаг 2. Доставьте компонент платформы

Запустите установщик платформы той же версии, что стоит на сервере 1С, выберите «Изменить» и отметьте компонент «Модули расширения веб-сервера». Если платформа ещё не установлена, отметьте его сразу вместе с «1С:Предприятие».

Ключевой момент — разрядность:

  • 64-битный IIS или 64-битный Apache → 64-битная платформа;
  • 32-битная сборка Apache → только 32-битная платформа;
  • 32-битная платформа под IIS → в пуле приложений включите «Разрешены 32-разрядные приложения» (подробнее ниже).

На одном сервере могут стоять несколько версий платформы. Модуль подхватывается по пути, который записан в конфигурации веб-сервера, а не «самый новый». Это пригодится, когда после обновления 1С публикация перестанет открываться.

Шаг 3. Проверьте сеть

Если веб-сервер стоит на отдельной машине, откройте с него до сервера 1С порты 1540, 1541 и диапазон рабочих процессов. Снаружи достаточно 80 и 443 на веб-сервере. Сам сервер 1С в интернет выставлять не нужно.

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

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

Конфигуратор запускают на той машине, где стоит веб-сервер, и обязательно от имени администратора: без этого он не сможет записать настройки IIS или httpd.conf.

  1. Откройте базу в Конфигураторе.
  2. Администрирование → Публикация на веб-сервере.
  3. В поле «Имя» укажите короткое латинское имя без пробелов, например buh. Оно станет частью адреса.
  4. Выберите веб-сервер из списка. Для Apache укажите путь к httpd.conf.
  5. Каталог публикации — пустая папка, например C:\inetpub\wwwroot\buh или C:\Apache24\htdocs\buh.
  6. Отметьте нужное:
    • «Публиковать тонкий клиент и веб-клиент» — для работы из браузера;
    • «Публиковать стандартный интерфейс OData» — для внешних отчётов и интеграций;
    • на вкладках веб-сервисов и HTTP-сервисов — нужные сервисы конфигурации.
  7. Нажмите «Опубликовать» и подтвердите перезапуск веб-сервера.

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

Через консольную утилиту webinst

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

Публикация клиент-серверной базы в IIS:

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

Публикация файловой базы в Apache 2.4:

webinst.exe -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "File=""D:\Bases\buh"";" -confpath "C:\Apache24\conf\httpd.conf"

Номер версии в пути подставьте свой. Ключ -delete вместо -publish снимает публикацию. Полный список параметров выводит webinst.exe без аргументов.

Что создаётся после публикации

  • 📄 в каталоге публикации — файл default.vrd с описанием публикации: строка соединения и список опубликованных сервисов;
  • ⚙️ в IIS — приложение с сопоставлением обработчика на wsisapi.dll;
  • ⚙️ в Apache — блок в конце httpd.conf.

Блок для Apache выглядит примерно так:

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

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 в файле должна быть одна, даже если опубликовано пять баз. Дубль строки — частая причина, по которой Apache не стартует.

Права доступа и пул приложений IIS

Самая частая причина «опубликовал, а не открывается» — права. Веб-сервер работает под служебной учётной записью, и именно ей нужен доступ к файлам.

ЧтоКому дать доступКакие права
Каталог bin платформыIIS_IUSRS (IIS) или учётная запись службы Apacheчтение и выполнение
Каталог публикации с default.vrdте жечтение
Каталог файловой базыте жеизменение
Каталог базы на сетевом ресурседоменная учётная запись, под которой работает пул или службаизменение на шару и на NTFS

Для клиент-серверной базы права на каталог базы не нужны: данные лежат на СУБД, модуль ходит в кластер по сети.

Пул приложений IIS

Откройте Диспетчер служб IIS → Пулы приложений, найдите пул, в который попало приложение публикации (обычно DefaultAppPool), и откройте «Дополнительные параметры»:

  • Разрешены 32-разрядные приложения — True только для 32-битной платформы, для 64-битной — False;
  • Удостоверение — по умолчанию ApplicationPoolIdentity. Для файловой базы в сетевой папке замените на доменную учётную запись с правами на шару;
  • Режим управляемого конвейера на работу модуля 1С не влияет, его можно не трогать.

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

Учётная запись службы Apache

Служба Apache в Windows по умолчанию работает от «Локальной системы». Для файловой базы на этом же сервере этого хватает. Для базы в сетевой папке укажите в свойствах службы доменного пользователя с правами на каталог.

Как поднять веб-сервер 1С на Linux с Apache

На Linux графического мастера публикации нет, всё делается через webinst и конфиг Apache.

  1. Установите Apache: в Debian и Ubuntu — пакет apache2, в RHEL-совместимых системах — httpd.
  2. Установите платформу 1С с компонентом модулей расширения веб-сервера. Проверьте, что в каталоге платформы, например /opt/1cv8/x86_64/8.3.25.1394/, есть файл wsap24.so.
  3. Создайте каталог публикации и опубликуйте базу:
sudo mkdir -p /var/www/buh
cd /opt/1cv8/x86_64/8.3.25.1394
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf

В RHEL-подобных системах путь к конфигу — /etc/httpd/conf/httpd.conf.

  1. Проверьте конфигурацию и перезапустите Apache:
sudo apachectl configtest
sudo systemctl restart apache2

Где обычно спотыкаются на Linux

  • 🔐 Права на файловую базу . Apache в Debian работает от www-data. Ему нужны чтение и запись в каталог базы: sudo chown -R www-data:www-data /srv/1c/buh.
  • 🛡 SELinux в RHEL-системах блокирует загрузку модуля и доступ к каталогам вне /var/www. Посмотрите отказы в журнале аудита (ausearch -m avc -ts recent). Временный перевод в setenforce 0 помогает убедиться, что дело в нём, но рабочее решение — правильный контекст для каталогов, а не отключённая защита.
  • 📚 Не хватает системных библиотек. Если Apache пишет, что не может загрузить wsap24.so, проверьте зависимости: ldd /opt/1cv8/x86_64/8.3.25.1394/wsap24.so | grep "not found".
  • 🔤 Локаль. Без русской локали в системе возможны проблемы с отображением текста. Убедитесь, что ru_RU.UTF-8 сгенерирована.

Проверка публикации, журналы и HTTP-сервисы

После публикации проверяйте по шагам, от простого к сложному.

  1. Откройте http://localhost/buh/ прямо на сервере. Если открылось окно входа 1С — модуль работает.
  2. Откройте тот же адрес с рабочего места. Не открылось, хотя локально работает, — смотрите брандмауэр и порт 80.
  3. Проверьте HTTP-сервис из командной строки:
curl -i -u "Иванов:пароль" http://server/buh/hs/имя_корня/путь

Код 200 — сервис работает. 401 — неверный логин или у пользователя 1С нет прав. 404 — сервис не опубликован или неверный корневой URL.

  1. Веб-сервис проверяется запросом описания: http://server/buh/ws/ИмяСервиса?wsdl.
  2. Стандартный интерфейс OData — http://server/buh/odata/standard.odata/. Для него в базе дополнительно задают состав опубликованных объектов, без этого он отдаёт пустой список.

Где смотреть ошибки

ИсточникГде лежитЧто там видно
Журнал ApacheC:\Apache24\logs\error.log, на Linux /var/log/apache2/error.logне загрузился модуль, нет доступа к файлу
Журналы IISC:\inetpub\logs\LogFilesкоды ответа и подкоды (500.0, 404.3 и т. п.)
Журнал событий Windowsраздел «Приложение»падения пула приложений
Журнал регистрации базыКонфигуратор или клиент 1Сошибки входа и выполнения кода сервисов
Технологический журналвключается файлом logcfg.xml в каталоге conf платформыподробности обмена с кластером

Технологический журнал быстро растёт. Включайте его на время поиска проблемы с ограничением по событиям и выключайте сразу после.

Частые ошибки при запуске веб-сервера 1С

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

Ещё две ошибки, которые не дают явного сообщения:

  • ❌ Публикация под кириллическим именем. Адрес с русскими буквами работает не во всех клиентах и сервисах. Имя публикации — только латиница и цифры.
  • ❌ Каталог публикации внутри каталога базы. Смешивание файлов публикации и файлов базы путает права и резервное копирование. Держите их раздельно.

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

Нужна ли отдельная лицензия для работы через веб-клиент?
Отдельной лицензии на веб-сервер нет. Каждый веб-сеанс пользователя занимает клиентскую лицензию так же, как сеанс тонкого клиента.
Можно ли выставить публикацию 1С в интернет напрямую?
Можно, но только по HTTPS и с паролями у всех пользователей базы. Надёжнее закрыть доступ VPN или обратным прокси с ограничением по адресам.
Как подключить тонкий клиент через веб-сервер?
В списке баз добавьте существующую базу, выберите тип расположения «На веб-сервере» и укажите адрес публикации, например https://server/buh/.
Как включить HTTPS для опубликованной базы?
В IIS добавьте привязку https с сертификатом к сайту. В Apache подключите модуль mod_ssl и виртуальный хост на 443 порту. Модуль 1С при этом не перенастраивается.
Можно ли опубликовать несколько баз на одном веб-сервере?
Да. Каждой базе — своё имя публикации и свой каталог с default.vrd. Все базы должны работать на одной версии платформы, если используют один модуль.