Под капотом IIS, или как сделать WEB публикацию базы 1С без конфигуратора

Публикация № 1434014

Администрирование - Администрирование веб-серверов

IIS Веб-сервер ISAPI Microsoft Internet Information Server http веб-клиент веб-публикация веб WEB.

В интернете есть много инструкций как установить Internet Information Services и опубликовать на нем базу, будь то файловую, или клиент-серверную. Но, крайне мало кто пытается разобраться, как IIS работает, и что делает платформа при публикации базы. В этой статье я покажу как опубликовать базу на IIS без использования конфигуратора.

Общая информация

Для начала уточним, что для корректной работы 1С с веб-серверами используются библиотеки, которые используют API веб-сервера, так называемые Internet Server API (ISAPI). Для IIS такая библиотека называется «wsisapi.dll», и находится она в папке bin установленной платформы 1С. Именно поэтому при установке IIS необходимо проследить, чтобы был выбран компонент «Расширения ISAPI (eng: ISAPI Extensions)».

Общение с веб-сервером происходит через Менеджер. Функционально Менеджер IIS является просто GUI оболочкой для отображения информации из конфигурационных файлов формата XML. Быстро посмотреть их можно через «Редактор конфигурации (eng: Configuration Editor)» -> «Поиск по конфигурации (eng: Search Configuration)».

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

 

В конфигурационном файле хранятся такие интересующий нас настройки, как установленные модули ISAPI, настройки пулов приложений, а также сайтов.

Также каждая публикация 1С может иметь собственные настройки конфигурации, которые накладываются на общие настройки хоста и имеют больший приоритет. Это файл «web.config», который лежит в папке публикации вместе с файлом описания публикации «default.vrd».

 

Настройка веб-сервера для работы с 1С

На девственно чистый IIS установим модуль ISAPI от 1С:

Находясь в корне сервера выберем пункт настройки «Сопоставления обработчиков (eng: Handler Mappings)», и выберем пункт «Добавить сопоставления сценария (eng: Add Script Map)», и пропишем наш обработчик 1С:

Путь запроса (eng: Request path): * (любой, так как предполагается, что на данном веб-сервере будут только приложения 1С)

Исполняемый файл (eng: Executable): <путь к актуальной платформе>\bin\wsisapi.dll

Имя (eng: Name): 1С (любое на ваш вкус, значения не имеет)

Задать «Ограничения запроса (eng: Request Restrictions)»:

На закладке «Сопоставление (eng: Mapping)» убрать галку, а на закладке «Доступ (eng: Access)» установить уровень доступа «Выполнение (eng: Execute)».

При сохранении настроек Менеджер IIS спросит, разрешить ли данное расширение ISAPI? Согласимся с ним, нажмем «Да».

Таким образом, в конфигурационный файл хоста «ApplicationHost.config» в тег «handlers» запишется информация о нашем модуле обработчике:

 

А также в тег «isapiCgiRestriction» пропишется разрешение на исполнение нашего модуля:

 
 Примечание

Если в менеджере строка обработчика выделена серым, и статус у него «Отключен», то проверьте общие настройки разрешений функций. Возможна следующая ситуация:

Разрешение «Выполнение (eng: Execute)» должно быть включено.

 

 

Добавление базы на веб-сервер

По умолчанию на IIS создается сайт «Default Web Site», данные этого сайта расположены физически на сервере по пути: «C:\inetpub\wwwroot».

 
 Примечание

Если открыть Internet Explorer и попробовать перейти по адресу localhost, то мы обнаружим внутреннюю ошибку сервера 500. Но ведь в папке «C:\inetpub\wwwroot» лежит файл «iisstart.htm», и он даже присутствует в списке настройки «Документ по умолчанию (eng: Default Document)», но почему же сервер не хочет его отображать? И тут мы вспоминаем, что для всего сервера указали в модулях обработчиках, что «*» любые запросы должен обрабатывать ISAPI модуль от 1С. Убрав эту настройку у сайта и перезагрузив страницу обнаружим, что загрузится приветственная страница IIS. Именно поэтому, если на данном веб-сервере планируется размещать не только приложения 1С, то модуль ISAPI устанавливаем для каждой базы, а не для сервера или сайта в целом.

 

Задача: Опубликовать локально базу для обращения к ней по протоколу http.

Итак, добавим на наш сайт  «Default Web Site» новое приложение: «base1C»:

Правой кнопкой на «Default Web Site» -> «Добавить приложение (eng: Add Application)»

Псевдоним (eng: Alias): base1C (имя базы как она будет отображаться в строке браузера, т.е. http://localhost/base1C)

Физический путь (eng: Phisical path): C:\inetpub\wwwroot\base_1C (создадим в каталоге сайта папку «base_1C», нижнее подчеркивание добавлено, чтобы показать, что имя папки ни на что не влияет, и вообще папка может быть где угодно, главное, чтобы были права для ISS_IUSERS).

Пул приложений (eng: Application pool): DefaultAppPool (оставим по умолчанию).

Внимание! В рамках одного пула приложений все приложения должны запускаться под одним ISAPI модулем, т.е. единой платформой. 

Нажимаем «ОК» - сохраняем настройку нашего приложения.

 
 Примечание

Вообще, пулы приложений в контексте 1С нужны для того, чтобы разделить базы, работающие на разных платформах, ведь в рамках одного пула платформа 1С (читай ISAPI модуль) должна быть одинакова. Если нужно запустить какую-то базу под 32х битной платформой, то у приложения указываем в настройке «Сопоставления обработчиков (eng: Handler Mappings)» модуль нужной 32х битной платформы, переносим это приложение в отдельный пул приложений, и у этого пула приложений в значениях по умолчанию разрешаем 32-разрядные приложения. 

На уровне файла конфигурации хоста при этом в теге «sites» у тега <site name="Default Web Site" id="1"> пропишется наше приложение с именем, путями и пулом приложений.

Итак, мы указали нашему веб-серверу, что если кто-то обратится по пути http://localhost/base1C, то нужно пройти в папку "C:\inetpub\wwwroot\base_1C", и с помощью ISAPI модуля отобразить то, что там находится. При публикации из конфигуратора в эту папку попадает файл описания публикации базы 1С «default.vrd». Подробно про структуру этого фала можно подчерпнуть из статьи на ИТС: https://its.1c.ru/db/v83doc/bookmark/adm/TI000000379. Но, так как мы не пользуемся конфигуратором в учебных целях, то напишем этот файл сами.

Файл «default.vrd» по факту, сюрприз-сюрприз, имеет структуру XML файла.

Главный тэг здесь «point», у которого есть атрибуты:

«base»  - относительный путь нашей публикации («/base1C»)

«ib» - собственно строка подключения к нашей базе 1С так, как вы ее видите в окне списка баз («File=С:/bases/demo;» - для файловой базы и «Srvr=server;Ref=demo;» - для клиент-серверной)

 
 Примечание

В некоторых случаях необходимо организовать автоматическую авторизацию под конкретным пользователем. В таком случае в строку подключения дописываются параметры пользователя: «Srvr=server;Ref=demo;Usr=test;Pwd=Pass1234»

«enable» - разрешение работы в тонком или веб-клиенте («true» или «false», если не указан по умолчанию «true»)

По сути, содержание нашего файла описания публикации минимально может выглядеть вот так:

<point base="/base1C" ib="Srvr=server;Ref= demo;">

</point>

При этом замечу, что данное описание публикации ничего не запрещает, все веб-сервисы и http-сервисы базы будут доступны.

В итоге веб-сервер смотрит на этот файл описания и понимает, что если клиент обратился по пути http://localhost/base1C, то его необходимо соединить с клиент-серверной базой «demo» находящейся на сервере «server».

Расположим написанный файл «default.vrd» в директории «C:\inetpub\wwwroot\base_1C», откроем Internet Explorer и, перейдя по адресу http://localhost/base1C увидим, что открылась наша база. Profit!

Также мы можем задать настройки веб-сервера для конкретного приложения, к примеру свой модуль ISAPI, или запрет обработки http запросов «HEAD», и тогда в папке с фалом описания публикации «default.vrd» появится файл конфигурации сервера «web.config».

Постфактум должен сказать, что такой метод публикации предназначен исключительно в учебных целях для понимания механизмов работы связки IIS и 1С. Также он может пригодиться, когда необходимо опубликовать базу не в корень сайта. В этой статье не описаны такие нюансы как раздача прав на папки с файловыми базами, папки платформы, регистрация SSL сертификатов и многое другое. Это темы отдельных статей.

Также хотелось бы упомянуть альтернативный способ публикации базы 1С с помощью консольной утилиты «webinst», которая находится в папке «bin» установленной платформы. Про работу с данной утилитой хорошо написано на сайте ИТС: https://its.1c.ru/db/v837doc#bookmark:adm:TI000000201

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. frkbvfnjh 605 30.04.21 08:43 Сейчас в теме
Наконец-то кто то написал как это сделать для IIS! Спасибо!
John_Dow; bulpi; evvakra; +3 Ответить
4. Yashazz 3753 30.04.21 15:36 Сейчас в теме
(1) Ну здрасьте, я это писал ещё 8 лет назад: https://infostart.ru/public/242563/
mitia.mackarevich; +1 Ответить
6. evvakra 226 30.04.21 18:04 Сейчас в теме
(4) К сожалению, когда готовил эту статью ничего похожего по запросу «как опубликовать базу без конфигуратора» не нашел. И из заголовка и содержания вашей статьи больше похоже, что статья про веб-сервисы. И она находится не в свободном доступе, а доступна только за стартмани. Опубликуйте ее в свободный доступ и получите много респекта :)
8. Yashazz 3753 30.04.21 18:24 Сейчас в теме
(6) Да, там больше про веб-сервисы, но подводные камни почти те же. Опубликовать-то можно, да уже устарело всё, смысла нету. Ваша свежее и потому полезнее.
2. Dzenn 482 30.04.21 10:11 Сейчас в теме
обожаю такие статьи, танкьювериматч ;-)
bulpi; Jeka44; evvakra; +3 Ответить
3. ao_donstroy 30.04.21 13:16 Сейчас в теме
5. Yashazz 3753 30.04.21 15:37 Сейчас в теме
Хорошо. Толково. С учётом моды на рест-сервисы и сравнительной ресурсоёмкости SOAP - уже не актуально.
7. evvakra 226 30.04.21 18:07 Сейчас в теме
(5) Спасибо за отзыв, это больше вводная статья, возможно в следующих статьях попытаюсь REST раскрыть с необычных точек зрения
9. saa@kuzov.org 01.05.21 22:13 Сейчас в теме
А вообще что стабильнее под нагрузками работает:апач или иис?
10. evvakra 226 02.05.21 02:30 Сейчас в теме
(9) Если именно с точки зрения нагрузки, то вообще без разницы, тут больше при выборе другие моменты играют роль. ИМХО если у вас в продуктиве MS то тут IIS, а если Linux, то Apache. С точки зрения нагрузки узким горлом будет выступать сервер приложений и СУБД, но никак не WEB. Поэтому без разницы. А если у вас реально большая система то тут вообще архитектурно другой подход выбора, к примеру на фронте Фрэша одинэсного выступает Nginx, но это уже тема отдельной статьи :)
Оставьте свое сообщение

См. также

Служебные http-сервисы, которые работают даже в заблокированной базе

Администрирование веб-серверов Apache v8 Бесплатно (free)

В этой публикации описывается опыт доступа к служебным http-сервисам в обход установленной блокировки информационной базы.

16.03.2021    3105    ardn    6    

Некоторые особенности установки Apache 2.4 для 1С + SSL

Apache v8 1cv8.cf Россия Бесплатно (free)

Проблемы, возникшие при установке Apache 2.4, их решение.

30.11.2020    2860    jenyavp    23    

Как настраивать кросс-доменные (CORS) запросы к HTTP сервису 1C на веб сервере IIS с сайтом EDIbot

IIS v8 Бесплатно (free)

Сервис EDIbot позволяет отобразить в виде прогрессивного веб приложения, полученный JSON по REST запросу. Разберемся, как решить проблему кросс-доменных запросов на веб сервере IIS для корректной работы HTTP сервиса 1C и сервиса.

21.10.2020    2177    SizovE    0    

Настраиваем PWA приложение на платформе 8.3.18 с бесплатным действительным сертификатом SSL

Информационная безопасность ИТ-инфраструктура IIS v8 1cv8.cf Бесплатно (free)

Вышла платформа 8.3.18 с поддержкой PWA приложений. Получаем БЕСПЛАТНЫЙ действительный сертификат SSL. Настраиваем прогрессивное веб приложение для опубликованной бухгалтерии 3.0 на IIS сервере.

18.10.2020    5331    IamAlexy    29    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    14842    informa1555    35    

Пошаговая инструкция по установке веб-сервера Apache и завязка с 1С

Администрирование данных 1С Администрирование веб-серверов v8 1cv8.cf Россия Бесплатно (free)

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

10.03.2020    7992    dy4amaks    9    

Простой пример работы с аутентификацией OpenID на IIS

Администрирование веб-серверов v8 Бесплатно (free)

OpenID, аутентификация, HTTPS, получение сертификата SSL, веб-сервер IIS, Internet Information Server, самоподписанный сертификат, самозаверенный сертификат.

26.12.2019    8335    budidich    20    

Проброс IP-адреса клиента в http-сервис 1С. Реализация для IIS

WEB Администрирование веб-серверов IIS Бесплатно (free)

Настраиваем веб-сервер IIS для передачи в 1С IP-адреса клиента, вызвавшего http-сервис. Разбираемся с этим же вопросом при использовании фронтэнд вебсервера на примере nginx.

01.12.2019    8237    VKislitsin    9    

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Администрирование данных 1С WEB docker Apache v8 Бесплатно (free)

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    31121    petr.myazin    36    

1C + Linux + PostgreSQL + Apache

Администрирование данных 1С Apache Администрирование СУБД Администрирование веб-серверов Linux Сервера v8 Бесплатно (free)

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем (в 2021-м году).

26.03.2018    50602    SerVer1C    84    

Установка сервера Аpache 2.4

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

В публикации описана установка web-сервера Аpache 2.4 на платформе Windows

26.10.2017    125560    ВикторП    16    

Настройка веб сервера Apache + 1С (Пошаговое руководство)

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем через обычный доступ к сетевому каталогу. Эффект особенно заметен, когда старые компы вообще не справляются с обычным сетевым доступом, регулярно выплевывают 1С. А доступ через веб сервер даже на компьютерах серии "Хлам" работает на ура!

19.07.2017    306332    Aleksey81    163    

Две ошибки при запуске Apache. Одна, связанная с 1С, и новый подарок от MS (при обновлении до Windows 10)

Администрирование данных 1С Apache Бесплатно (free)

Типичная (на мой взгляд) ошибка старта службы Apache, связанная с 1С, и новая проблема, по которой мало информации

10.08.2016    12983    dr2c    9    

Публикация мобильной конфигурации на web-сервере Apache на Linux Ubuntu

Администрирование данных 1С WEB Apache v8 1cv8.cf Бесплатно (free)

Публикация мобильной конфигурации на web-сервере Apache на Linux

22.09.2014    25859    spezc    13    

Публикация базы 1С на веб-сервере Apache на сервере Linux

Администрирование данных 1С WEB Apache Linux v8 1cv8.cf Бесплатно (free)

В отличие от других подобных публикаций здесь будет описано как опубликовать базу (располагающуюся на сервере windows) на веб-сервере apache (расположенном на соседнем сервере под linux).

20.09.2014    155043    spezc    75    

Установка 1С:Предприятие 8.3. "Управление небольшой фирмой" на веб-сервер Apache 2.2, работающий в Ubuntu Server 12.04.2 LTS x86_64.

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

На предприятии в качестве файл-сервера используется компьютер, на который установлена операционная система Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-37-generic x86_64). Мне была поставлена задача перенести информационную базу "Управление небольшой фирмой" на веб-сервер Apache установленный на 64-х битной Ubuntu. После переноса ИБ у сотрудников появилась возможность работать через интернет, в любом обозревателе.

17.02.2013    49083    VintikComUa    13    

1С + Apache + SSL: почему вы должны использовать SSL (наглядная демонстрация)

Администрирование данных 1С Apache v8 1cv8.cf Россия Бесплатно (free)

Иллюстрированных руководств по установке веб-сервера Apache и публикации базы в интернете достаточно. Однако почти никто не обращает внимания на безопасность и не настраивает использование защищенного https протокола, а не http. В этой заметке описана пошаговая установка и настройка Apache, продемонстрирована лёгкость, с которой злоумышленник может узнать ваш пароль, если вы не используете https. Описана пошаговая настройка https для Apache.

06.08.2012    163587    galuse    87    

Публикация конфигурации на веб-сервере apache (в картинках)

Администрирование данных 1С Apache v8 УТ10 Розница УПП1 УНФ Россия Бесплатно (free)

Посвящается всем тем, кто никогда еще не выкладывал свою конфу в интернет.

25.10.2011    103888    shira84    47    

Настройка веб-сервера в домашних условиях. Часть 2 (VirtualBox + Win7 + Apache + 1C82 + PostgreSQL)

Администрирование данных 1С Apache v8 1cv8.cf Россия Бесплатно (free)

В продолжение начатой мной темы "Настройка веб-сервера в домашних условиях (WinXP + IIS + 1C82)". Статья является логическим продолжением и посвящена вопросам повышения безопасности "домашнего веб-сервера".

09.04.2011    35677    1cspecialist    14