Веб-доступ к 1С через IIS и Apache: от установки модулей до первого входа из браузера
Содержание
Чтобы опубликовать базу 1С на веб-сервере, нужны три вещи: установленный IIS или Apache, компонент платформы «Модули расширения веб-сервера» той же разрядности, что и веб-сервер, и сама публикация через Конфигуратор → Администрирование → Публикация на веб-сервере. Конфигуратор для этого запускают от имени администратора Windows. После публикации база открывается в браузере по адресу вида http://имя-сервера/имя-публикации.
Схема одинакова для файловой и клиент-серверной базы, для IIS и Apache. Различаются права на папки, настройка пула приложений и строка подключения. Всё написанное относится к платформе 8.3 и Windows Server 2016 и новее.
Что подготовить на сервере перед публикацией базы 1С
Публикация — это не копирование базы
на веб-сервер. Веб-сервер получает небольшой файл default.vrd с описанием, куда подключаться, и модуль платформы, который переводит HTTP-запросы в обращения к базе. Сама база остаётся на своём месте.
Что должно стоять на компьютере, где работает веб-сервер:
- 🖥️ IIS с компонентами разработки приложений: «Расширения ISAPI» и «Фильтры ISAPI», плюс «Консоль управления IIS». Ставятся через
Диспетчер серверов → Добавить роли и компоненты → Веб-сервер (IIS). - 🪶 Или Apache 2.4 — как служба Windows. Брать сборку той же разрядности, что и модули 1С.
- 🧩 Платформа 1С с компонентом «Модули расширения веб-сервера». При обычной установке он не выбран: запустите установщик ещё раз, выберите «Изменить» и отметьте компонент.
- 🔑 Доступ к лицензии. В файловом варианте лицензию получает процесс веб-сервера, поэтому ключ или программная лицензия должны быть видны с этого компьютера. В клиент-серверном варианте лицензии выдаёт сервер 1С.
Разрядность — главная ловушка. 64-битные модули 1С работают только в 64-битном пуле IIS или 64-битном Apache. 32-битные — в пуле с включённой 32-разрядностью или в 32-битном Apache. Смешать нельзя.
Если база клиент-серверная, веб-сервер можно ставить на отдельную машину. Тогда на ней нужна только платформа с модулями расширения той же версии, что и сервер 1С. Номер версии должен совпадать полностью, вплоть до сборки.
Публикация базы через Конфигуратор: пошагово
Самый простой путь — штатная форма в Конфигураторе. Она сама создаёт каталог, файл default.vrd и регистрирует приложение в IIS или прописывает строки в httpd.conf Apache.
Шаги для IIS
- Щёлкните ярлык 1С правой кнопкой и выберите «Запуск от имени администратора». Без этого публикация завершится ошибкой доступа.
- Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Публикация на веб-сервере. - В поле «Имя» задайте короткое латинское имя без пробелов, например
buh. Оно станет частью адреса. - В списке «Веб-сервер» выберите
Internet Information Services. - «Каталог» оставьте по умолчанию (
C:\inetpub\wwwroot\buh) или укажите свой. - Отметьте нужное: доступ для тонкого клиента и веб-клиента, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData. Для работы пользователей в браузере хватает первой галочки.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Перезапуск IIS обрывает все веб-сеансы, которые уже открыты на этом сервере. Если на нём опубликованы другие рабочие базы, публикуйте в обеденный перерыв или вечером.
Шаги для Apache 2.4
Порядок тот же, но в списке «Веб-сервер» выбирают Apache 2.4, а в поле с путём к конфигурации указывают файл httpd.conf, например C:\Apache24\conf\httpd.conf. Конфигуратор допишет в него блок подключения модуля. После публикации перезапустите службу Apache.
Что появится в httpd.conf (пример для 64-битной платформы):
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/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 пишется один раз на весь Apache. Если в одной системе стоят две версии платформы, в httpd.conf может оказаться только один модуль — Apache обслуживает все публикации одной версией.
Публикация из командной строки: webinst
Без Конфигуратора базу публикует утилита webinst.exe из каталога bin платформы. Это удобно для сервера без графического сеанса и для скриптов.
cd "C:\Program Files\1cv8\8.3.25.1374\bin"
rem Клиент-серверная база, IIS
webinst -publish -iis -wsdir buh -dir "C:\inetpub\wwwroot\buh" -connstr "Srvr=srv1c;Ref=buh;"
rem Файловая база, Apache 2.4
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "File=""D:\Bases\Buh"";" -confpath "C:\Apache24\conf\httpd.conf"
Удаляют публикацию ключом -delete с тем же -wsdir. Полный список параметров печатает сама утилита при запуске без ключей.
Права на папки, вход пользователей и HTTPS
Публикация прошла, а браузер выдаёт ошибку — почти всегда виноваты права. Веб-сервер работает от служебной учётной записи, и ей нужен доступ к трём местам.
| Что | Кому дать | Какие права |
|---|---|---|
Каталог bin платформы (C:\Program Files\1cv8\<версия>\bin) | IIS_IUSRS | Чтение и выполнение |
Каталог публикации (C:\inetpub\wwwroot\buh) | IIS_IUSRS | Чтение |
| Папка файловой базы | IIS_IUSRS и IUSR | Изменение |
Для Apache права выдают той учётной записи, под которой работает служба. По умолчанию это «Локальная система», у неё доступ есть почти везде. Надёжнее завести отдельного пользователя без прав администратора и дать ему те же три доступа.
Для клиент-серверной базы папка с данными не нужна: веб-сервер ходит к серверу 1С по сети. Достаточно, чтобы с машины веб-сервера был доступен порт агента сервера 1С (1540) и диапазон портов рабочих процессов.
Как пользователи входят в базу
- 👤 Логин и пароль 1С. Стандартный вариант: при открытии адреса браузер показывает окно входа 1С. У каждого пользователя в базе должен быть пароль — без него любой, кто знает адрес, войдёт под пользователем с пустым паролем.
- 🪟 Аутентификация операционной системы. При публикации доступна отдельная галочка. В карточке пользователя 1С должна быть включена проверка через ОС и указан доменный пользователь. В IIS для публикации включают «Проверку подлинности Windows».
- 🚫 Логин и пароль в строке подключения. Можно дописать
Usr=иPwd=вdefault.vrd, тогда база откроется без окна входа. Так нельзя делать для публикации, доступной из интернета: пароль лежит открытым текстом, а вход получает каждый.
HTTPS обязателен для внешнего доступа
По HTTP пароль 1С и все данные идут открытым текстом. Если публикация смотрит в интернет, нужен сертификат.
- В IIS: получите сертификат (Let’s Encrypt через win-acme или купленный), в
Сайт → Привязкидобавьтеhttpsна порт 443 с этим сертификатом. - В Apache: подключите
mod_ssl, пропишитеSSLCertificateFileиSSLCertificateKeyFileв виртуальном хосте на порту 443. - Закройте порт 80 или настройте с него перенаправление на HTTPS.
Ещё лучше — не открывать публикацию в интернет вовсе, а пускать сотрудников через VPN. Тогда веб-сервер виден только внутри сети.
Настройка пула IIS и скорость работы веб-клиента
Веб-клиент работает медленнее тонкого клиента: часть логики выполняется в браузере на JavaScript. Это нормально. Но на скорость сильно влияют настройки сервера.
Пул приложений IIS
Конфигуратор кладёт публикацию в пул DefaultAppPool. Откройте его в Диспетчер IIS → Пулы приложений → DefaultAppPool → Дополнительные параметры:
- ⚙️ «Разрешены 32-разрядные приложения» —
Trueтолько для 32-битных модулей 1С, для 64-битных —False. - ⏳ «Время простоя (мин)» — по умолчанию 20. Через 20 минут без запросов пул выгружается, и первый вход после паузы долгий. Поставьте
0. - 🔄 «Регулярный интервал времени (мин)» в разделе «Перезапуск» — по умолчанию пул перезапускается раз в 29 часов. Каждый перезапуск обрывает открытые сеансы. Замените на перезапуск в фиксированное ночное время.
Изменение этих параметров перезапускает пул — работающие через веб пользователи потеряют несохранённые данные. Меняйте настройки, когда в базе никого нет.
Если на сервере несколько публикаций разных версий платформы или разной разрядности, вынесите каждую в собственный пул. Тогда сбой одной базы не уронит остальные.
Что ещё ускоряет работу
- 🧑💻 Тонкий клиент вместо браузера. Тот же адрес можно добавить в список баз тонкого клиента как «На веб-сервере». Он работает заметно быстрее веб-клиента и не зависит от браузера.
- 🗜️ Сжатие. Включите в IIS статическое и динамическое сжатие (компонент «Сжатие динамического содержимого»). На медленных каналах выигрыш ощутимый.
- 🌐 Браузер. Используйте актуальные Chrome, Edge, Firefox или Яндекс Браузер. Устаревшие версии платформа может не поддерживать.
- 🗄️ Клиент-сервер вместо файла. Файловая база через веб тормозит уже на 5–10 одновременных пользователях: все запросы идут через один процесс веб-сервера к одному файлу. Для большего числа сотрудников переводите базу в клиент-серверный вариант.
Ошибки при публикации базы на веб-сервере и как их исправить
Большинство сбоев сводится к четырём причинам: разрядность, права, версия модуля и неполная установка IIS. Выберите симптом:
IIS_IUSRS и IUSR нет права «Изменение» на папку файловой базы. Выдайте права на папку целиком.LoadModule ведёт на удалённую версию платформы. Поправьте путь и проверьте разрядность.Подробности ошибки IIS пишет в журнал событий Windows (Просмотр событий → Журналы Windows → Приложение), Apache — в файл logs\error.log. Начинайте диагностику с них, а не с переустановки.
Когда помогает только переустановка модуля
Если всё настроено верно, а ошибка 500 остаётся, проверьте, какая версия модуля прописана для публикации. В IIS это видно в «Сопоставлениях обработчиков» каталога публикации: путь к wsisapi.dll должен вести в каталог bin текущей версии платформы. Если старая версия удалена, путь указывает в пустоту. Публикация из Конфигуратора нужной версии перепишет его.
Вопросы по веб-доступу к 1С
Нужна ли отдельная лицензия для работы через веб-клиент?
Можно ли опубликовать на одном веб-сервере несколько баз?
Как открыть опубликованную базу в тонком клиенте?
https://server/buh.Нужно ли публиковать базу заново после обновления конфигурации?
Как отключить публикацию?
webinst -delete с именем публикации. Каталог с default.vrd при необходимости удалите вручную.