При попытке опубликовать базу данных или веб-сервисы на 64-разрядном веб-сервере Apache под управлением 64-битной платформы 1С:Предприятие 8.2 (например, релиз 8.2.19.130) системные администраторы часто сталкиваются с проблемой: в каталоге bin установленной платформы физически отсутствует библиотека wsap22.dll. Даже если при установке дистрибутива явно выбирается компонент «Модули расширения веб-сервера», нужный модуль для Apache так и не появляется.
В этой статье мы подробно проанализируем архитектурные причины такого поведения платформы 1С версии 8.2, выясним, почему прямая подмена библиотек из ветки 8.3 приводит к критическим ошибкам, и разберем по шагам все доступные рабочие варианты настройки интеграции.
Разберем ситуацию детально.
В 64-битной версии платформы 1С:Предприятие 8.2 для операционных систем семейства Windows компания «1С» реализовала только серверный кластер (процессы ragent, rmngr, rphost) и 64-разрядный модуль расширения для веб-сервера Microsoft IIS — wsisapi.dll. 64-битный модуль для веб-сервера Apache (библиотека wsap22.dll) для ОС Windows в ветке 8.2 никогда не выпускался (для 64-битных систем он поставлялся только в виде Linux-библиотеки wsap22.so).
По этой причине, когда мы выбираем пункт «Модули расширения веб-сервера» в инсталляторе 1С 8.2 x64 под Windows, в каталог C:\Program Files\1cv82\8.2.19.130\bin\ распаковывается исключительно библиотека wsisapi.dll. Ожидать появления там wsap22.dll или wsap24.dll бессмысленно — их в данном дистрибутиве нет.
Рассмотрим популярные заблуждения и последствия попыток обойти данное ограничение:
wsap22.dll или wsap24.dll из дистрибутива 8.3 и подключить ее к веб-серверу, при попытке обращения к веб-сервису или базе возникнет ошибка несовместимости версий:
1C:Enterprise 8 application error: HTTP: Conflict by reason:
Различаются версии клиента и сервера (8.3.x.x - 8.2.19.130),
клиентское приложение: Модуль расширения веб-сервера
wsap24.dll с поддержкой Apache 2.4 появилась только начиная с платформы 1С 8.3.8. Платформа 8.2 изначально поддерживает только версии Apache 2.0 (wsap2.dll) и Apache 2.2 (wsap22.dll).Ниже подробно рассмотрим три проверенных и штатных решения этой задачи.
Самый распространенный и наименее инвазивный способ, не требующий изменения конфигурации и обновления платформы сервера 1С. Важно понимать, что разрядность веб-сервера не привязана к разрядности кластера серверов 1С: 32-битный веб-сервер успешно взаимодействует с 64-битным кластером 1С по сетевому протоколу TCP/IP.
Разберем по шагам процедуру настройки:
Установим на сервер 32-разрядную версию клиентской платформы 1С той же версии сборки (например, 8.2.19.130). В мастере установки обязательно отметим пункт «Модули расширения веб-сервера». После завершения инсталляции нужный файл появится по пути: C:\Program Files (x86)\1cv82\8.2.19.130\bin\wsap22.dll.
Установим 32-битную сборку веб-сервера Apache версии 2.2 (например, httpd-2.2.34-win32-x86.zip) в качестве службы Windows.
Откроем конфигурационный файл веб-сервера httpd.conf и добавим загрузку 32-битного модуля расширения и директорию публикации:
# Подключение 32-битного модуля 1С 8.2 к 32-битному Apache 2.2
LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.19.130/bin/wsap22.dll"
# Описание виртуального каталога публикации
Alias "/trade" "C:/inetpub/wwwroot/trade/"
<Directory "C:/inetpub/wwwroot/trade/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-gateway
</Directory>
В каталоге C:/inetpub/wwwroot/trade/ создадим файл default.vrd, в котором укажем подключение к нашему 64-битному кластеру 1С:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/trade"
ib="Srvr="1c-server-x64";Ref="Trade_Base";">
<ws>
<point name="WebServices"
alias="ws.1cws"
enable="true"/>
</ws>
</point>
Перезапустим службу Apache2.2 и проверим доступность сервисов по HTTP.
Если инфраструктурные требования обязывают использовать исключительно 64-битные службы и исключить установку 32-битного ПО, идеальным вариантом для платформы 1С 8.2 является использование штатного веб-сервера Windows — Microsoft IIS (версий 7.5, 8.5, 10.0).
Рассмотрим порядок развертывания:
Убедимся, что на сервере установлен 64-битный модуль расширения веб-сервера. Проверим наличие файла wsisapi.dll в каталоге C:\Program Files\1cv82\8.2.19.130\bin\wsisapi.dll.
В компонентах Windows активируем службу IIS, обязательно включив следующие роли:
— Ограничения ISAPI и CGI (ISAPI and CGI Restrictions);
— Фильтры ISAPI (ISAPI Filters);
— Расширения ISAPI (ISAPI Extensions).
Создадим или настроим существующий пул приложений IIS:
— Режим управляемого конвейера (Managed pipeline mode): Classic (или Integrated);
— Параметр «Разрешить 32-разрядные приложения» (Enable 32-Bit Applications) должен иметь значение False, так как мы используем 64-битную wsisapi.dll.
Выполним команду регистрации публикации через утилиту командной строки webinst:
"C:\Program Files\1cv82\8.2.19.130\bin\webinst.exe" -publish -iis -wsdir Trade -dir "C:\inetpub\wwwroot\Trade" -connstr "Srvr=1c-server-x64;Ref=Trade_Base;" -confpath "C:\inetpub\wwwroot\Trade\web.config"
Если для инфраструктуры критически необходим именно Apache версии 2.4 в 64-разрядном варианте (например, из-за требований безопасности и поддержки современных версий OpenSSL/TLS), оптимальным и долгосрочным решением является перевод информационной базы на платформу 1С 8.3.
Проанализируем ключевые преимущества и последовательность перехода:
Старые конфигурации (такие как «Управление торговлей 10.3», «Бухгалтерия предприятия 2.0», «УПП 1.3») работают на платформе 8.3 в режиме совместимости Версия 8.2.13 или Версия 8.2.16 без необходимости переписывать интерфейс на управляемые формы. Поведение прикладных механизмов полностью сохраняется.
В дистрибутиве 1С 8.3 x64 поставляется 64-битная библиотека wsap24.dll, которая нативно подключается в httpd.conf 64-битного Apache 2.4:
# Пример для 1С 8.3 x64 и Apache 2.4 x64
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1709/bin/wsap24.dll"
— Создадим резервную копию информационной базы (.dt или бэкап СУБД);
— Установим серверную и клиентскую часть 1С:Предприятие 8.3 x64;
— Откроем базу в конфигураторе платформы 8.3, проверим, что свойство Режим совместимости установлено в значение Версия 8.2.13 (или Версия 8.2.16), и применим изменения конфигурации;
— Опубликуем базу стандартными средствами конфигуратора через меню «Администрирование» — «Публикация на веб-сервере...», выбрав 64-битный Apache 2.4.
Таким образом, выбор конкретного варианта зависит от инфраструктурных задач: для быстрого запуска на платформе 8.2 достаточно использовать связку Apache 2.2 32-bit + 1C x86 client или IIS x64, а при необходимости работы с современным Apache 2.4 x64 наиболее правильным шагом станет обновление платформы 1С до ветки 8.3 с сохранением режима совместимости.