Часто возникает задача разместить на одном физическом или виртуальном сервере несколько информационных баз 1С, которые работают на разных версиях платформы. Например, одна база использует платформу 8.3.20, а другая — 8.3.22. При попытке опубликовать их на одном веб-сервере стандартным способом пользователи столкнутся с ошибкой "Различаются версии клиента и сервера".
Выясним причину этой проблемы. Дело в том, что один процесс веб-сервера (будь то Apache или пул приложений в IIS) может одновременно работать только с одной версией модуля расширения 1С (файлы wsap*.dll для Apache или wsisapi.dll для IIS). Когда к серверу обращается клиент другой версии, возникает конфликт.
Чтобы решить эту задачу, необходимо создать изолированные окружения для каждой версии платформы 1С. Рассмотрим, как это сделать для самых популярных веб-серверов: Apache и IIS.
Основная идея этого метода — запустить несколько независимых служб веб-сервера Apache. Каждая служба будет работать на своем собственном порту и использовать модуль расширения от соответствующей версии платформы 1С. Разберем по шагам, как это реализовать.
Создаем новый конфигурационный файл.
Нет необходимости копировать всю папку с установленным Apache. Достаточно создать копию основного конфигурационного файла httpd.conf. Например, назовем его httpd_8.3.22.conf и разместим рядом с оригиналом.
Редактируем новый конфигурационный файл.
Откроем наш новый файл httpd_8.3.22.conf и внесем в него несколько ключевых изменений. Проанализируем, что именно нужно поменять:
Listen и изменим порт на любой другой свободный. Если основной сервер работает на порту 80, для нового можно указать, например, 81.
Было: Listen 80
Стало: Listen 81
_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 должен быть указан путь к модулю другой версии платформы.
ErrorLog и CustomLog.
Создаем новую службу 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.
Публикуем информационную базу.
Запускаем конфигуратор от имени администратора для базы, которая работает на нужной нам версии платформы (в нашем примере 8.3.22). Выполняем публикацию на веб-сервере, но в адресе сервера теперь обязательно указываем новый порт, например, localhost:81.
После выполнения этих шагов у вас будет две работающие службы Apache. Одна на порту 80 для одной версии платформы, а вторая на порту 81 — для другой. Пользователи смогут подключаться к базам, указывая соответствующий порт в строке адреса.
Если вы используете веб-сервер Microsoft IIS, решение будет более изящным и не потребует настройки разных портов. Весь секрет в использовании разных пулов приложений (Application Pools). Каждый пул будет работать с модулем расширения своей версии 1С.
Разберем этот процесс по шагам.
Создаем отдельные пулы приложений.
Откроем "Диспетчер служб IIS". В разделе "Пулы приложений" создадим по одному пулу для каждой используемой версии платформы 1С. Давайте дадим им понятные имена, например, 1C_Pool_8.3.20 и 1C_Pool_8.3.22. Другие параметры можно оставить по умолчанию.
Разрешаем использование модулей ISAPI.
На уровне сервера в IIS найдем раздел "Ограничения ISAPI и CGI". Здесь нужно убедиться, что для каждой версии платформы 1С разрешено использование соответствующего файла wsisapi.dll. Если записей нет, их нужно добавить вручную, указав путь к файлу (например, C:\Program Files\1cv8\8.3.22.1750\bin\wsisapi.dll) и установив флажок "Разрешить выполнение пути расширения".
Публикуем базы и назначаем им пулы.
Выполним стандартную публикацию информационных баз через конфигуратор для каждой версии платформы. После этого вернемся в диспетчер IIS. Для каждого созданного виртуального каталога (приложения) нужно выполнить следующие действия:
1C_Pool_8.3.22.Проверяем сопоставление обработчиков.
На всякий случай стоит проверить, что IIS правильно определил пути. Для этого откроем раздел "Сопоставление обработчиков" для каждой опубликованной базы и убедимся, что путь к исполняемому файлу wsisapi.dll указывает на каталог нужной версии платформы.
Таким образом, используя пулы приложений, мы можем на одном веб-сервере IIS и одном порту (обычно 80 или 443) публиковать множество баз, работающих на разных версиях платформы 1С, обеспечивая их стабильную и независимую работу.
← К списку