При настройке публикации информационных баз 1С:Предприятия на веб-сервере Apache администраторы нередко сталкиваются с ситуацией, когда служба веб-сервера отказывается запускаться после внесения конфигурационных строк или автоматической публикации из Конфигуратора. В журнале событий или логах Apache при этом фиксируется синтаксическая ошибка загрузки динамической библиотеки модуля расширения 1С.
Разберем детально, почему возникает данная проблема, как расшифровать сообщения в логах и как правильно настроить веб-сервер для стабильной работы с 1С.
Посмотрим на типичную запись в логе ошибок Apache (error.log), с которой сталкиваются при неудачном запуске:
httpd.exe: Syntax error on line 120 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files/1cv8/8.3.9.1850/bin/wsap22.dll into server: The Apache service named \xed\xe5 \xff\xe2\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\ ...
Проанализируем этот лог подробнее:
\xed\xe5 \xff\xe2\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\ представляет собой системное сообщение Windows в кодировке Windows-1251 (CP1251). В расшифрованном виде это стандартная ошибка операционной системы ERROR_BAD_EXE_FORMAT: «...не является приложением Win32».C:/Program Files (x86)/..., а библиотека wsap22.dll загружается из каталога 64-разрядной платформы 1С — C:/Program Files/1cv8/....Выясним базовые принципы взаимодействия веб-сервера и платформы 1С:Предприятие:
Program Files (x86)\1cv8\.... Для 64-разрядного Apache (x64) необходим 64-разрядный модуль из Program Files\1cv8\....ragent) не обязана совпадать с разрядностью веб-сервера. Веб-модуль взаимодействует с сервером 1С по сетевому протоколу. Это означает, что 32-разрядный Apache может успешно работать с 64-разрядным сервером 1С, но на сервере веб-публикации обязательно должны быть установлены компоненты 32-разрядного клиента/модулей 1С.wsap22.dll, а для ветки Apache 2.4 — wsap24.dll.Если по условиям инфраструктуры необходимо оставить 32-разрядную версию Apache 2.2, выполним следующие шаги:
httpd.conf текстовым редактором от имени администратора.
# Пример правильного подключения 32-битного модуля к 32-битному Apache 2.2
LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.9.1850/bin/wsap22.dll"
Ветка Apache 2.2 давно устарела и не поддерживается разработчиками. Наиболее стабильным и производительным решением для 64-разрядной ОС является связка 64-разрядного Apache 2.4 и 64-разрядной платформы 1С.
Рассмотрим порядок установки и настройки Apache 2.4 x64:
vcruntime140.dll, msvcr110.dll и др.) при запуске Apache 2.4 вызваны отсутствием пакетов Microsoft Visual C++ Redistributable. Перед установкой веб-сервера обязательно установим соответствующие пакеты Visual C++ x64 нужной версии (в зависимости от сборки Apache).httpd.conf укажем директиву для 64-разрядного модуля Apache 2.4:
# Подключение 64-битного модуля 1С к 64-битному Apache 2.4
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.9.1850/bin/wsap24.dll"
C:\Program Files\1cv8\8.3.X.XXXX\bin\, а также полные права на папку с файлом публикации default.vrd.Чтобы избежать ручных ошибок при редактировании httpd.conf, воспользуемся штатной консольной утилитой webinst, которая находится в каталоге bin установленной платформы 1С нужной разрядности.
Запустим командную строку от имени администратора и выполним команду публикации:
"C:\Program Files\1cv8\8.3.9.1850\bin\webinst.exe" -publish -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "Srvr=Server1C;Ref=BaseName;" -confpath "C:\Apache24\conf\httpd.conf"
Утилита webinst автоматически пропишет корректные пути к нужной версии библиотеки wsap24.dll и сформирует дескриптор публикации default.vrd, исключая ошибки несовпадения разрядностей.