Как опубликовать на IIS две базы 1С с разными версиями платформы?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При использовании веб-сервера IIS для работы с веб-клиентами или веб-сервисами 1С часто возникает необходимость одновременной публикации нескольких информационных баз, функционирующих на разных версиях платформы (например, одна база работает на релизе 8.3.9, а другая — на 8.3.10). При стандартной публикации второй базы администраторы часто сталкиваются с ситуацией, когда одна из баз перестает открываться и возвращает ошибку «Ошибка HTTP 500.0 - Internal Server Error».

Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам, как правильно настроить веб-сервер IIS для стабильной совместной работы баз 1С различных версий.

Выясним причину возникновения ошибки HTTP 500.0

Проанализируем ситуацию: в рамках одного пула приложений IIS (по умолчанию это DefaultAppPool) невозможно одновременно загрузить и использовать модули расширения wsisapi.dll разных версий или разрядностей. Когда первый запрос поступает к веб-серверу, рабочий процесс IIS (процесс w3wp.exe) загружает в память модуль wsisapi.dll той платформы, к базе которой обратился пользователь. Если затем происходит обращение к базе с другой версией платформы, находящейся в том же пуле, сервер пытается применить уже загруженную библиотеку старой версии, что и приводит к ошибке HTTP 500.0.

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

  1. Несоответствие разрядности библиотеки wsisapi.dll (32-бит или 64-бит) настройкам пула приложений IIS.
  2. Отсутствие у служебных учетных записей веб-сервера (IIS_IUSRS и IUSR) прав доступа к папке bin с новой версией платформы или к файлу web.config в каталоге публикации.
  3. Сброс настройки пула приложений при повторной автоматической публикации базы непосредственно из Конфигуратора 1С.

Пошаговая настройка IIS для нескольких версий платформ

Для исправления проблемы необходимо изолировать рабочие процессы баз данных друг от друга. Разберем по шагам процесс настройки IIS с созданием отдельных пулов приложений.

  1. Регистрация ISAPI-модуля новой платформы:

    Откроем консоль управления IIS (Диспетчер служб IIS). Перейдем на верхний уровень — к настройкам самого сервера. В центральном окне выберем раздел «Разрешения ISAPI и CGI» (ISAPI and CGI Restrictions). Добавим запись для библиотеки wsisapi.dll новой версии платформы 1С, указав полный путь к ней (например, C:\Program Files\1cv8\8.3.10.XXXX\bin\wsisapi.dll), и установим флаг разрешения выполнения.

  2. Создание нового пула приложений:

    В дереве консоли IIS перейдем к разделу «Пулы приложений» (Application Pools). Добавим новый пул приложений и дадим ему понятное имя (например, AppPool_1C_8.3.10). В параметрах версии среды .NET Framework выберем «Без управляемого кода» (No Managed Code), так как модуль 1С не использует управляемый код .NET.

  3. Настройка параметров разрядности пула:

    Перейдем в «Дополнительные параметры» (Advanced Settings) созданного пула приложений. Проверим разрядность используемой платформы 1С:

    Если используется 32-разрядная версия платформы 1С, выставим параметр «Разрешены 32-разрядные приложения» (Enable 32-bit Applications) в значение True.

    Если используется 64-разрядная платформа 1С, укажем для этого параметра значение False.

  4. Привязка виртуального каталога базы к новому пулу:

    В дереве сайтов найдем опубликованное приложение (виртуальный каталог) новой базы. Откроем «Основные настройки» (Basic Settings) данного приложения и в поле «Пул приложений» выберем только что созданный пул AppPool_1C_8.3.10.

  5. Проверка сопоставления обработчиков:

    Откроем раздел «Сопоставление обработчиков» (Handler Mappings) для приложения новой базы. Убедимся, что для обработчика 1C Web-service Extension в поле исполняемого файла указан верный абсолютный путь к wsisapi.dll соответствующего релиза 1С.

  6. Настройка прав доступа NTFS:

    Проверим права на папку bin нового релиза платформы. В свойствах папки на вкладке «Безопасность» предоставляем группам IIS_IUSRS и IUSR права на «Чтение и выполнение». Также убедимся в наличии прав на чтение и запись для группы IIS_IUSRS в физическом каталоге самой публикации к файлу web.config.

Особенности публикации баз из Конфигуратора 1С

Важно учитывать, что при выполнении повторной публикации базы из меню «Администрирование» > «Публикация на веб-сервере…» Конфигуратор 1С автоматически перезаписывает конфигурационные файлы и сбрасывает привязку базы к пулу приложений на пул по умолчанию (DefaultAppPool).

Поэтому после любой повторной публикации из Конфигуратора необходимо вручную зайти в консоль управления IIS и повторно назначить базе выделенный для её версии платформы пул приложений.

После выполнения указанных настроек и перезапуска веб-сервера IIS обе базы разных версий платформ будут успешно функционировать параллельно, не вызывая ошибок обработки запросов.

← На главную