Почему не запускается Apache при публикации базы 1С и как исправить ошибку загрузки wsap22.dll или wsap24.dll?

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

При настройке публикации информационных баз 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\ ...

Проанализируем этот лог подробнее:

  1. Нечитаемый текст в шестнадцатеричном виде: Последовательность \xed\xe5 \xff\xe2\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\ представляет собой системное сообщение Windows в кодировке Windows-1251 (CP1251). В расшифрованном виде это стандартная ошибка операционной системы ERROR_BAD_EXE_FORMAT: «...не является приложением Win32».
  2. Каталоги установки: Обратим внимание на пути. Исполняемый файл 32-разрядного Apache расположен в каталоге C:/Program Files (x86)/..., а библиотека wsap22.dll загружается из каталога 64-разрядной платформы 1С — C:/Program Files/1cv8/....
  3. Главная причина: Происходит конфликт архитектур. 32-разрядный процесс веб-сервера (x86) физически не может загрузить в свое адресное пространство 64-разрядную библиотеку (x64), что и приводит к аварийной остановке службы.

Правила совместимости разрядностей 1С и Apache

Выясним базовые принципы взаимодействия веб-сервера и платформы 1С:Предприятие:

  1. Соответствие веб-сервера и модуля расширения: Разрядность веб-сервера должна строго совпадать с разрядностью используемого модуля 1С. Для 32-разрядного Apache (x86) требуется 32-разрядный модуль из каталога Program Files (x86)\1cv8\.... Для 64-разрядного Apache (x64) необходим 64-разрядный модуль из Program Files\1cv8\....
  2. Независимость от службы кластера серверов 1С: Разрядность службы кластера 1С (ragent) не обязана совпадать с разрядностью веб-сервера. Веб-модуль взаимодействует с сервером 1С по сетевому протоколу. Это означает, что 32-разрядный Apache может успешно работать с 64-разрядным сервером 1С, но на сервере веб-публикации обязательно должны быть установлены компоненты 32-разрядного клиента/модулей 1С.
  3. Соответствие версий модулей: Для ветки Apache 2.2 используется библиотека wsap22.dll, а для ветки Apache 2.4 — wsap24.dll.

Вариант 1. Исправление работы 32-разрядного Apache 2.2

Если по условиям инфраструктуры необходимо оставить 32-разрядную версию Apache 2.2, выполним следующие шаги:

  1. Установим на сервер дистрибутив «Технологическая платформа 1С:Предприятия (32-bit)» того же релиза, что и сервер 1С. При выборочной установке обязательно отметим пункт «Модули расширения веб-сервера».
  2. Откроем конфигурационный файл httpd.conf текстовым редактором от имени администратора.
  3. Проверим и скорректируем путь к модулю 1С, указав каталог с 32-разрядной платформой:
    
    # Пример правильного подключения 32-битного модуля к 32-битному Apache 2.2
    LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.9.1850/bin/wsap22.dll"
    
  4. Перезапустим службу веб-сервера Apache.

Вариант 2. Переход на 64-разрядный Apache 2.4 (рекомендуемый)

Ветка Apache 2.2 давно устарела и не поддерживается разработчиками. Наиболее стабильным и производительным решением для 64-разрядной ОС является связка 64-разрядного Apache 2.4 и 64-разрядной платформы 1С.

Рассмотрим порядок установки и настройки Apache 2.4 x64:

  1. Установка системных библиотек: Ошибки нехватки DLL (таких как vcruntime140.dll, msvcr110.dll и др.) при запуске Apache 2.4 вызваны отсутствием пакетов Microsoft Visual C++ Redistributable. Перед установкой веб-сервера обязательно установим соответствующие пакеты Visual C++ x64 нужной версии (в зависимости от сборки Apache).
  2. Подключение модуля в httpd.conf: В конфигурационном файле 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"
    
  3. Проверка прав доступа: Убедимся, что учетная запись, от имени которой запускается служба Apache, имеет права на чтение и выполнение файлов в каталоге C:\Program Files\1cv8\8.3.X.XXXX\bin\, а также полные права на папку с файлом публикации default.vrd.

Публикация через утилиту webinst

Чтобы избежать ручных ошибок при редактировании 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, исключая ошибки несовпадения разрядностей.

← На главную