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

29.04.21

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

В интернете есть много инструкций как установить 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

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

См. также

Путь самурая. Ставим локальный Сервер взаимодействия

Сервера Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подробная пошаговая инструкция (как делал я) установки Сервера взаимодействия версия 22.0.26 на Windows Server 2022. Установка собственного объектного хранилище с помощью системы MinIO (https://min.io/). Настройка Сервера взаимодействия для обмена файлами в сообщениях.

1 стартмани

07.04.2023    13253    VPanin56    42    

75

Публикатор 1С. Как публиковать базы с комфортом

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Сегодня я расскажу вам про публикатор 1С баз. Это приложение, которое позволит с комфортом и удобством управлять зоопарком ваших веб публикаций. Если у вас больше 5 публикаций, и вам надо с ними что-то делать с завидным постоянством. Если для того чтобы опубликовать тестовую базу, вам приходится идти в техподдержку Если вам просто надоело копаться в конфигах, раздумывая, а нигде ли вы не ошиблись в пробелах и запятых - то тогда вам будет интересна эта публикация.

20.03.2023    6898    78    Segate    4    

27

Midnight Commander, установленный с Entware, не выполняет команды и не запускает файлы

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

Столкнулся с проблемой, установил на роутер Midnigt Commander с репозитория Entware, при попытке выполнения команды программа пишет ошибку "The shell is already running a command". Данная публикация описывает способ решения этой проблемы.

20.03.2023    3491    Eugen-S    2    

3

Публикация 1С на Apache SSL в локальной среде разработки

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В статье описывается установка и настройка веб-сервера Apache для работы с 1С через https.

09.02.2023    5590    lone_mayson    4    

42

Контейнер Docker для размещения публикации базы 1С на разных платформах

Администрирование веб-серверов Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Появилась необходимость развернуть на одном хосте две публикации базы, но не на одной платформе, а на разных. Тут я расскажу, как это сделать для версии 8.3.22.1704.

02.02.2023    3540    Sney_Kice    1    

22

Быстрое конфигурирование серверов с Ansible

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

Всю рутину по обновлению платформы, настройке веб-серверов и серверов хранилищ на всем парке серверов компании можно автоматизировать с помощью удобочитаемых YAML-скриптов Ansible. О том, как написать сценарии такой автоматизации, чтобы запускать их параллельно для группы серверов, на митапе «Инструменты автоматизации рутины в 1С-разработке» рассказал ведущий разработчик компании ПИК Digital Павел Комаров.

26.01.2023    5190    lopatrik    4    

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

Например так будет выглядеть публикация базы
webinst –publish -iis -wsdir demo -dir "c:\inetpub\demo" -connstr "Srvr=server:1741;Ref=demo;"
12. evvakra 302 12.05.21 13:15 Сейчас в теме
(11) В самом последнем абзаце про нее упомянул и привел ссылку. По работе с этой утилитой можно отдельную статью написать.
DAAbramov; +1 Ответить
13. ITSun 17.05.21 06:22 Сейчас в теме
Хорошая инструкция, автор! (+)
Осталось этот процесс автоматизировать :))
14. poiskadm 19.05.21 13:47 Сейчас в теме
Спасибо за статью! В работе пользуешься стандартным инструментарием, но иногда возникают ситуации, когда надо знать в какой файл и что писать текстом. Хотелось бы продолжения не только про консольную утилиту, но и про настройку сложной публикации.
15. merdzd 12.04.24 16:09 Сейчас в теме
Как открыть базу на веб сервере с кодом блокировки?
например
"C:\Program Files\ ХХ\bin\1cv8s.exe" ENTERPRISE /WS"https://базаю.RU/" /UC 123
не работает.
если добавить в список и в параметрах указать пароль -- AdditionalParameters=/UC 123
Тоже не работает ошбка что то вроде.
HTTP: Internal server error
Ошибка при работе с ресурсом /e1cib/login?vl=ru_RU&version=8.3.23.2137&dppw=2100&nm=4608291619823473257&dpps=A4&ni=122576513&d­ppx=600&uc=7867385&dppy=600&dpph=2970&screenwidthcharunits=1­404&clnId=3fe80232-b812-44cb-8334-5dc96fb03d88

Если База не заблокирована паролем то все ок, по любой из ссылок входа.
Оставьте свое сообщение