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

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

Для начала уточним, что для корректной работ Тарифы на абонементы 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».

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

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

Скриншоты


1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru