Публикация базы 1С через IIS или Apache: от установки модулей до первого входа из браузера
Содержание
Чтобы поднять веб-сервер 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С | Особенности |
|---|---|---|---|
| IIS | Windows Server, нужна интеграция с доменом | wsisapi.dll | ставится ролью Windows, публикация из Конфигуратора в два клика |
| Apache 2.4 (Windows) | нужен один конфиг-файл, удобно переносить | wsap24.dll | ставится отдельно, работает как служба |
| Apache 2.4 (Linux) | сервер 1С на Linux, нет лицензий Windows | wsap24.so | публикация только через webinst или правку конфига |
Для небольшой офисной базы разницы почти нет. На IIS проще начать, на Apache проще разбираться в проблемах: вся настройка видна в одном файле.
Подготовка сервера перед публикацией
Шаг 1. Установите веб-сервер
IIS. В Windows Server 2016 и новее откройте Диспетчер серверов → Управление → Добавить роли и компоненты, выберите роль «Веб-сервер (IIS)». В службах ролей отметьте:
Разработка приложений → Расширения ISAPI;Разработка приложений → Фильтры ISAPI;Средства управления → Консоль управления 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.
- Откройте базу в Конфигураторе.
Администрирование → Публикация на веб-сервере.- В поле «Имя» укажите короткое латинское имя без пробелов, например
buh. Оно станет частью адреса. - Выберите веб-сервер из списка. Для Apache укажите путь к
httpd.conf. - Каталог публикации — пустая папка, например
C:\inetpub\wwwroot\buhилиC:\Apache24\htdocs\buh. - Отметьте нужное:
- «Публиковать тонкий клиент и веб-клиент» — для работы из браузера;
- «Публиковать стандартный интерфейс OData» — для внешних отчётов и интеграций;
- на вкладках веб-сервисов и HTTP-сервисов — нужные сервисы конфигурации.
- Нажмите «Опубликовать» и подтвердите перезапуск веб-сервера.
Перезапуск 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.
- Установите Apache: в Debian и Ubuntu — пакет
apache2, в RHEL-совместимых системах —httpd. - Установите платформу 1С с компонентом модулей расширения веб-сервера. Проверьте, что в каталоге платформы, например
/opt/1cv8/x86_64/8.3.25.1394/, есть файлwsap24.so. - Создайте каталог публикации и опубликуйте базу:
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.
- Проверьте конфигурацию и перезапустите 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-сервисы
После публикации проверяйте по шагам, от простого к сложному.
- Откройте
http://localhost/buh/прямо на сервере. Если открылось окно входа 1С — модуль работает. - Откройте тот же адрес с рабочего места. Не открылось, хотя локально работает, — смотрите брандмауэр и порт 80.
- Проверьте HTTP-сервис из командной строки:
curl -i -u "Иванов:пароль" http://server/buh/hs/имя_корня/путь
Код 200 — сервис работает. 401 — неверный логин или у пользователя 1С нет прав. 404 — сервис не опубликован или неверный корневой URL.
- Веб-сервис проверяется запросом описания:
http://server/buh/ws/ИмяСервиса?wsdl. - Стандартный интерфейс OData —
http://server/buh/odata/standard.odata/. Для него в базе дополнительно задают состав опубликованных объектов, без этого он отдаёт пустой список.
Где смотреть ошибки
| Источник | Где лежит | Что там видно |
|---|---|---|
| Журнал Apache | C:\Apache24\logs\error.log, на Linux /var/log/apache2/error.log | не загрузился модуль, нет доступа к файлу |
| Журналы IIS | C:\inetpub\logs\LogFiles | коды ответа и подкоды (500.0, 404.3 и т. п.) |
| Журнал событий Windows | раздел «Приложение» | падения пула приложений |
| Журнал регистрации базы | Конфигуратор или клиент 1С | ошибки входа и выполнения кода сервисов |
| Технологический журнал | включается файлом logcfg.xml в каталоге conf платформы | подробности обмена с кластером |
Технологический журнал быстро растёт. Включайте его на время поиска проблемы с ограничением по событиям и выключайте сразу после.
Частые ошибки при запуске веб-сервера 1С
Ещё две ошибки, которые не дают явного сообщения:
- ❌ Публикация под кириллическим именем. Адрес с русскими буквами работает не во всех клиентах и сервисах. Имя публикации — только латиница и цифры.
- ❌ Каталог публикации внутри каталога базы. Смешивание файлов публикации и файлов базы путает права и резервное копирование. Держите их раздельно.
Частые вопросы
Нужна ли отдельная лицензия для работы через веб-клиент?
Можно ли выставить публикацию 1С в интернет напрямую?
Как подключить тонкий клиент через веб-сервер?
https://server/buh/.Как включить HTTPS для опубликованной базы?
mod_ssl и виртуальный хост на 443 порту. Модуль 1С при этом не перенастраивается.Можно ли опубликовать несколько баз на одном веб-сервере?
default.vrd. Все базы должны работать на одной версии платформы, если используют один модуль.