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

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

Часто возникает задача разместить на одном физическом или виртуальном сервере несколько информационных баз 1С, которые работают на разных версиях платформы. Например, одна база использует платформу 8.3.20, а другая — 8.3.22. При попытке опубликовать их на одном веб-сервере стандартным способом пользователи столкнутся с ошибкой "Различаются версии клиента и сервера".

Выясним причину этой проблемы. Дело в том, что один процесс веб-сервера (будь то Apache или пул приложений в IIS) может одновременно работать только с одной версией модуля расширения 1С (файлы wsap*.dll для Apache или wsisapi.dll для IIS). Когда к серверу обращается клиент другой версии, возникает конфликт.

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

Решение 1: Настройка нескольких экземпляров Apache на разных портах

Основная идея этого метода — запустить несколько независимых служб веб-сервера Apache. Каждая служба будет работать на своем собственном порту и использовать модуль расширения от соответствующей версии платформы 1С. Разберем по шагам, как это реализовать.

  1. Создаем новый конфигурационный файл.

    Нет необходимости копировать всю папку с установленным Apache. Достаточно создать копию основного конфигурационного файла httpd.conf. Например, назовем его httpd_8.3.22.conf и разместим рядом с оригиналом.

  2. Редактируем новый конфигурационный файл.

    Откроем наш новый файл httpd_8.3.22.conf и внесем в него несколько ключевых изменений. Проанализируем, что именно нужно поменять:

    • Порт прослушивания. Найдем директиву Listen и изменим порт на любой другой свободный. Если основной сервер работает на порту 80, для нового можно указать, например, 81.

      Было: Listen 80

      Стало: Listen 81

    • Путь к модулю расширения 1С. Это самый важный шаг. Найдем строку загрузки модуля _1cws_module и укажем путь к файлу wsap22.dll или wsap24.dll из каталога bin нужной версии платформы 1С.

      Посмотрим на пример. Путь для платформы 8.3.22 может выглядеть так:

      
      LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1750/bin/wsap24.dll"
      

      Важно: в основном файле httpd.conf должен быть указан путь к модулю другой версии платформы.

    • Пути к файлам логов. Чтобы логи разных экземпляров Apache не смешивались, рекомендуется указать для них уникальные имена файлов в директивах ErrorLog и CustomLog.
  3. Создаем новую службу Windows для Apache.

    Теперь зарегистрируем наш новый экземпляр Apache в качестве службы Windows. Для этого запустим командную строку от имени администратора и выполним команду. Она указывает веб-серверу установиться как служба с новым именем и использовать наш новый конфигурационный файл.

    Рассмотрим синтаксис команды:

    
    "C:\Apache24\bin\httpd.exe" -k install -n "Apache2.4_1C_8.3.22" -f "C:\Apache24\conf\httpd_8.3.22.conf"
    

    Здесь "Apache2.4_1C_8.3.22" — это уникальное имя новой службы, которое будет отображаться в списке служб Windows.

  4. Публикуем информационную базу.

    Запускаем конфигуратор от имени администратора для базы, которая работает на нужной нам версии платформы (в нашем примере 8.3.22). Выполняем публикацию на веб-сервере, но в адресе сервера теперь обязательно указываем новый порт, например, localhost:81.

После выполнения этих шагов у вас будет две работающие службы Apache. Одна на порту 80 для одной версии платформы, а вторая на порту 81 — для другой. Пользователи смогут подключаться к базам, указывая соответствующий порт в строке адреса.

Решение 2: Использование пулов приложений в IIS

Если вы используете веб-сервер Microsoft IIS, решение будет более изящным и не потребует настройки разных портов. Весь секрет в использовании разных пулов приложений (Application Pools). Каждый пул будет работать с модулем расширения своей версии 1С.

Разберем этот процесс по шагам.

  1. Создаем отдельные пулы приложений.

    Откроем "Диспетчер служб IIS". В разделе "Пулы приложений" создадим по одному пулу для каждой используемой версии платформы 1С. Давайте дадим им понятные имена, например, 1C_Pool_8.3.20 и 1C_Pool_8.3.22. Другие параметры можно оставить по умолчанию.

  2. Разрешаем использование модулей ISAPI.

    На уровне сервера в IIS найдем раздел "Ограничения ISAPI и CGI". Здесь нужно убедиться, что для каждой версии платформы 1С разрешено использование соответствующего файла wsisapi.dll. Если записей нет, их нужно добавить вручную, указав путь к файлу (например, C:\Program Files\1cv8\8.3.22.1750\bin\wsisapi.dll) и установив флажок "Разрешить выполнение пути расширения".

  3. Публикуем базы и назначаем им пулы.

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

    • Найти опубликованную базу в дереве сайтов.
    • Открыть ее "Основные настройки...".
    • В поле "Пул приложений" выбрать тот пул, который мы создали для соответствующей версии платформы 1С. Например, для базы на платформе 8.3.22 выбираем пул 1C_Pool_8.3.22.
  4. Проверяем сопоставление обработчиков.

    На всякий случай стоит проверить, что IIS правильно определил пути. Для этого откроем раздел "Сопоставление обработчиков" для каждой опубликованной базы и убедимся, что путь к исполняемому файлу wsisapi.dll указывает на каталог нужной версии платформы.

Таким образом, используя пулы приложений, мы можем на одном веб-сервере IIS и одном порту (обычно 80 или 443) публиковать множество баз, работающих на разных версиях платформы 1С, обеспечивая их стабильную и независимую работу.

← К списку