Как опубликовать базу 1С на веб-сервере IIS
Содержание
Публикацию базы 1С на IIS делают в два приёма: сначала в самом IIS включают компонент CGI (без него веб-сервер не умеет запускать расширение 1С), потом в конфигураторе выполняют Администрирование → Публикация на веб-сервере…. Мастер сам создаёт физический каталог, кладёт туда файлы default.vrd и web.config и регистрирует приложение в IIS. После этого база открывается в браузере по адресу вида http://server/base/.
Дальше — где именно это настраивается, какие права нужны пулу приложений, как повесить HTTPS и как читать ошибки
500.19, 404.3 и 500.21, которые чаще всего и ловят на первой публикации. Речь идёт о платформе 8.3 (интерфейс «Такси») и Windows Server 2016 и новее.
Что должно быть готово до публикации
Веб-публикация 1С работает как ISAPI-расширение IIS. Файл расширения — wsisapi.dll — лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.24.1234\bin\wsisapi.dll. IIS загружает эту библиотеку в свой рабочий процесс, поэтому разрядность должна совпадать.
Проверьте до начала:
- 🖥️ Роль Веб-сервер (IIS) установлена. Для серверной ОС — через
Диспетчер серверов → Добавить роли и компоненты. - 🧩 Разрядность платформы и пула совпадают. 64-разрядная платформа (
Program Files) требует 64-разрядного пула; 32-разрядная (Program Files (x86)) — пула с включённой поддержкой 32-бит. - 🔑 У учётной записи пула есть права на чтение каталога платформы (
...\1cv8\...\bin) и доступ к информационной базе — к файлу базы или к серверу 1С и СУБД. - 🧑💻 Конфигуратор запущен от имени администратора. Иначе мастер не сможет записать настройки в IIS и каталог публикации.
Отдельно про тип базы. Для файловой базы права на её каталог нужны именно учётной записи пула IIS, а не вашему текущему пользователю — это постоянный источник путаницы: от администратора папка открывается, а веб-клиент в неё не попадает. Для клиент-серверной базы сам файл недоступен, и пулу достаточно сетевого доступа к серверу 1С (порт агента и диапазон рабочих процессов) и к СУБД; права на папку здесь ни при чём.
Если версий платформы на машине несколько, публикация привяжется к той, из конфигуратора которой вы её запускаете. Это важно при обновлениях — к этому вернёмся в конце.
Какие компоненты IIS включить для 1С
Голый IIS отдаёт только статику. Чтобы он выполнял wsisapi.dll, нужен компонент CGI (он же включает поддержку ISAPI-расширений).
На Windows Server:
Диспетчер серверов → Добавить роли и компоненты.- Роль Веб-сервер (IIS) → ветка Разработка приложений.
- Отметьте CGI. Заодно убедитесь, что включены Расширения ISAPI и Фильтры ISAPI.
- Для доменной аутентификации добавьте Проверка подлинности Windows в ветке «Безопасность».
На клиентской Windows тот же набор — в Панель управления → Программы → Включение или отключение компонентов Windows → Службы IIS → Службы Интернета → Компоненты разработки приложений → CGI.
Если потом в браузере вместо базы появляется HTTP 500.21 с текстом про «bad module» — почти всегда забыли именно CGI. Доставьте компонент и опубликуйте заново.
Публикация базы через конфигуратор
Это основной шаг, и делает его не IIS, а 1С. Откройте нужную базу в конфигураторе и выберите Администрирование → Публикация на веб-сервере….
В окне публикации:
- Имя — имя виртуального каталога. Оно станет частью адреса:
http://server/<имя>/. Берите латиницей, без пробелов. - Веб-сервер — выберите
Internet Information Services. 1С сама найдёт установленный IIS. - Каталог — физическая папка, куда лягут
default.vrdиweb.config. Обычно создают отдельную, напримерC:\inetpub\pubs\base. - Флажки публикации. Для обычного веб-клиента достаточно оставить «Публиковать тонкий клиент и веб-клиент». Web-сервисы и HTTP-сервисы включайте, только если они вам нужны.
- Нажмите Опубликовать и согласитесь перезапустить веб-сервер , когда мастер предложит.
Кроме веб-клиента, в этом же окне можно опубликовать дополнительные интерфейсы — Web-сервисы (SOAP), HTTP-сервисы и Standard OData для интеграций. Включайте их по мере надобности: каждый открытый интерфейс — это ещё одна точка входа, которую придётся защищать. Публикацию доступа к отладке на рабочем сервере не оставляйте включённой — это удобно разработчику, но лишний канал на продакшене.
После публикации IIS создаёт приложение с указанным именем и отдельный пул. В каталоге появляются два ключевых файла, и полезно понимать, за что каждый отвечает:
default.vrd— описание опубликованной базы: строка соединения (какую именно базу открывать), список опубликованных сервисов, настройки пула соединений. Это «паспорт» публикации со стороны 1С.web.config— конфигурация со стороны IIS: сопоставление обработчиков, которое направляет запросы наwsisapi.dll, и ограничения запросов.
Трогать их вручную без необходимости не стоит: при повторной публикации конфигуратор перезапишет оба корректно, а ручная правка легко рассинхронизирует настройки.
Проверьте результат: откройте http://localhost/base/ на самом сервере. Если появилось окно входа 1С — публикация прошла. Если видите ошибку IIS, не трогайте конфигуратор повторно, а сначала прочитайте код ошибки — он указывает на причину точнее любых догадок.
Пул приложений: разрядность, учётная запись и права
Мастер создаёт пул, но несколько свойств стоит проверить руками в Диспетчер служб IIS → Пулы приложений. Выделите пул вашей публикации.
| Параметр | Что поставить | Зачем |
|---|---|---|
| Версия .NET CLR | Без управляемого кода | 1С не использует .NET, лишний рантайм не нужен |
| Разрядность (Доп. параметры → Разрешены 32-разрядные приложения) | False для 64-бит платформы, True для 32-бит | Должна совпадать с wsisapi.dll |
| Удостоверение | ApplicationPoolIdentity или доменная учётка | От его имени IIS читает платформу и базу |
Самая частая причина «не открывается» после верной установки компонентов — права учётной записи пула. Удостоверению нужен доступ:
- на чтение каталога платформы
...\1cv8\...\bin; - к информационной базе — для файловой базы это права на сетевую папку, для клиент-серверной достаточно сетевого доступа к серверу 1С и СУБД.
Если пул работает под ApplicationPoolIdentity, в правах NTFS его указывают как IIS AppPool\ИмяПула.
Прежде чем менять удостоверение или перезапускать пул на продакшене — помните, что перезапуск пула обрывает все активные веб-сеансы базы. Делайте это в окно без пользователей.
HTTPS и аутентификация
По умолчанию база открывается по http — трафик идёт в открытом виде. Для внешнего доступа это недопустимо.
Включить HTTPS:
- Установите сертификат. Для внутренней сети подойдёт самоподписанный, для внешнего адреса — от удостоверяющего центра (бесплатный от Let’s Encrypt удобно ставить утилитой
win-acme). - В IIS выделите сайт → справа Привязки → Добавить → тип
https, порт443, выберите сертификат. - После этого база доступна по
https://server/base/.
Аутентификация. 1С поддерживает два способа входа, и в IIS они включаются по-разному — в разделе Проверка подлинности вашего приложения:
- Вход по логину и паролю 1С — оставьте включённой Анонимную проверку подлинности. Логин спросит уже сама 1С.
- Вход по доменной учётной записи (прозрачный вход) — включите Проверку подлинности Windows, анонимную отключите. В базе у пользователя должна быть задана аутентификация ОС.
Смешивать не нужно: если хотите, чтобы домен пускал без повторного ввода пароля, именно Windows-проверка должна быть единственной включённой.
Когда HTTPS настроен, имеет смысл закрыть доступ по http совсем, чтобы пользователи случайно не ходили по незащищённому адресу. Для внешнего адреса сертификат от Let’s Encrypt живёт 90 дней — продление удобно повесить на планировщик той же утилитой win-acme, иначе в один день база отвалится по истёкшему сертификату. Самоподписанный сертификат во внутренней сети годится для шифрования канала, но браузеры будут показывать предупреждение, пока вы не добавите его в доверенные на клиентах.
Сжатие и ограничения запросов
Веб-клиент 1С гоняет много текста и JSON — на медленных каналах помогает сжатие. В IIS за это отвечает компонент Сжатие ответов.
- Ответы 1С динамические, поэтому включать нужно динамическое сжатие (
Диспетчер IIS → сайт → Сжатие ответов → Включить сжатие динамического содержимого). Если пункт серый — доставьте одноимённый компонент роли IIS. - Keep-alive в IIS включён по умолчанию, отдельно настраивать не требуется.
Отдельная засада — загрузка крупных данных (большие присоединённые файлы, обмены). IIS по умолчанию ограничивает объём тела запроса, и при превышении отдаёт ошибку. Лимит поднимают в web.config каталога публикации параметром uploadReadAheadSize в секции serverRuntime. Меняйте его только если реально упираетесь в ограничение, и соотносите с объёмом оперативной памяти сервера.
Типичные ошибки публикации и что они значат
Коды IIS читаются однозначно — по ним сразу видно, на каком этапе сломалось. Разберите симптом до того, как переделывать публикацию.
wsisapi.dll заблокировано в Ограничения ISAPI и CGI. Откройте этот раздел IIS и переведите путь к wsisapi.dll в состояние «Разрешено».web.config в каталоге публикации, либо у пула нет прав на папку. Проверьте права NTFS и переопубликуйте.wsisapi.dll.Если браузер показывает обезличенную «Ошибку 500» без подробностей, включите на время диагностики подробные сообщения: в IIS откройте Страницы ошибок → Изменить параметры функции и выберите показ детальных ошибок (либо откройте проблемный адрес прямо на сервере — там IIS по умолчанию отдаёт полный текст). Увидев точный подкод (500.19, 500.21 и т. д.), возвращайтесь к таблице выше. После диагностики подробные ошибки на внешнем сайте лучше снова скрыть, чтобы не светить пути и конфигурацию.
Общее правило: после любого изменения компонентов IIS или прав — переопубликуйте базу из конфигуратора, а не правьте файлы вручную. Мастер пересоберёт web.config корректно.
Обслуживание: что делать после обновления платформы
Главный подвох в сопровождении: web.config содержит полный путь к wsisapi.dll конкретной версии платформы. Когда вы обновляете 1С на новый релиз, старый каталог bin может исчезнуть, а публикация продолжит ссылаться на него — и база перестанет открываться с ошибкой 500.
Поэтому после каждого обновления платформы:
- Запустите конфигуратор новой версии.
- Откройте
Администрирование → Публикация на веб-сервере…. - Нажмите Опубликовать повторно — путь к
wsisapi.dllобновится на актуальный.
Переопубликовать базу нужно и в других случаях: если вы переименовали или перенесли информационную базу, сменили сервер 1С или параметры подключения — строка соединения в default.vrd устареет, и веб-клиент будет открывать не ту базу или падать с ошибкой подключения.
Регулярно просматривайте журнал IIS (%SystemDrive%\inetpub\logs\LogFiles) и журнал событий Windows — рост числа 500-х ответов обычно сигналит о проблемах с пулом или базой раньше, чем начнут жаловаться пользователи.
Частые вопросы
Можно ли опубликовать несколько баз на одном IIS?
/base1/, /base2/). Пулы приложений тоже лучше держать раздельными, чтобы сбой одной базы не ронял остальные.IIS или Apache — что выбрать под 1С?
Нужна ли лицензия 1С для веб-клиента?
Почему база открылась на сервере, но не открывается с других компьютеров?
localhost всё работает, проблема сетевая, а не в публикации 1С.После обновления платформы база выдаёт ошибку 500 — что делать?
web.config ссылался на wsisapi.dll старого релиза, каталог которого после обновления изменился.