При переносе серверного оборудования, смене IP-адресов или обновлении инфраструктуры (в чем может помочь скрипт автоматической установки Apache) системные администраторы часто сталкиваются с тем, что веб-сервер Apache 2.4 отказывается запускаться в качестве службы Windows. Ситуация осложняется тем, что в консоли управления службами ошибка выглядит абстрактно: «не удалось запустить службу на локальный компьютер». Однако при детальном анализе через командную строку выявляется критическое несоответствие разрядности компонентов системы. В данной статье мы подробно разберем, как диагностировать и устранить ошибку %1 не является приложением Win32, связанную с библиотекой wsap24.dll.
Первым делом проанализируем диагностическое сообщение, которое выдает Apache при попытке ручного запуска через cmd.exe, а также проверим состояние процессов. Ошибка синтаксиса в файле httpd.conf на строке, содержащей директиву LoadModule, с текстом Cannot load ... wsap24.dll into server: %1 \xed\xe5 \xff\xe2\xeb\xff\xe5\xf2\xf1\xff \xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec Win32 является ключевой уликой. Несмотря на странную кодировку (это Windows-1251 в шестнадцатеричном представлении), фраза переводится как «%1 не является приложением Win32».
Рассмотрим ситуацию глубже: эта ошибка в контексте 64-битных операционных систем Windows почти всегда означает конфликт разрядности (Bitness Mismatch). Выясним причину: 64-битный процесс Apache пытается загрузить в свое адресное пространство 32-битную динамическую библиотеку (DLL). В архитектуре Windows 64-битный процесс не может напрямую исполнять 32-битный код внутри своего процесса, и наоборот.
Обратим внимание на пути установки, указанные в тексте ошибки. Если файл библиотеки находится по пути C:/Program Files (x86)/1cv8/..., это однозначно указывает на 32-битную версию платформы 1С. В то же время, если установленный Apache является 64-битным (что подтверждается логом Apache/2.4.xx (Win64)), он не сможет работать с этой библиотекой.
Прежде чем вносить изменения, проверим текущее состояние системы. Нам необходимо убедиться в разрядности трех компонентов:
httpd -v в папке bin сервера Apache.C:\Program Files (x86)\1cv8\ говорит о 32-битной установке, а C:\Program Files\1cv8\ — о 64-битной.Проанализируем ситуацию: если в файле httpd.conf прописан путь к папке x86, а Apache — 64-битный, нам необходимо привести их к общему знаменателю.
Для решения проблемы на 64-битном сервере Apache нам потребуется именно 64-битная версия технологической платформы 1С. Разберем шаги по ее корректной установке:
wsap24.dll.C:\Program Files\1cv8\8.3.x.xxxx\bin\wsap24.dll (обратите внимание, путь больше не содержит (x86)).Теперь нам нужно обновить файл httpd.conf, чтобы Apache знал, где искать правильную библиотеку. Рассмотрим пример того, как должны выглядеть строки подключения модуля в конфигурационном файле:
# Пример правильной загрузки модуля для 64-битного Apache
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.15.1830/bin/wsap24.dll"
# Определение обработчика 1С
<IfModule _1cws_module>
Managed1CWebServiceEnabled On
</IfModule>
Проанализируем изменения: мы заменили путь к библиотеке на актуальный для 64-битной версии. Будьте внимательны с направлением слешей (в конфигурации Apache обычно используются прямые слеши /, даже в Windows).
Чтобы избежать ошибок ручного ввода в httpd.conf, воспользуемся штатным инструментом 1С — утилитой webinst. Она автоматически прописывает необходимые параметры в конфигурацию веб-сервера. Разберем, как запустить ее правильно:
bin установленной 64-битной платформы.
webinst -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "Srvr=NewServerIP;Ref=BaseName;" -confPath "C:\Apache24\conf\httpd.conf"
Где:
-apache24 — тип веб-сервера;-wsdir — имя виртуального каталога;-connstr — строка соединения с базой (здесь важно указать новый IP-адрес сервера, так как старый кластер был удален);-confPath — путь к вашему файлу конфигурации Apache.Иногда даже при совпадении разрядности библиотека wsap24.dll не загружается. Выясним причину: модули 1С и Apache зависят от определенных версий библиотек Microsoft Visual C++. Для корректной работы связки Apache 2.4 и 1С платформы 8.3.15+ часто требуются компоненты Visual C++ Redistributable 2015-2019. Важно установить пакет именно той разрядности, которой является ваш Apache (в нашем случае — x64).
Проанализируем еще одну возможную причину сбоя при запуске службы — права доступа. Служба Apache чаще всего запускается от имени учетной записи LocalSystem или NetworkService. У этой учетной записи должны быть права на чтение и выполнение (Read & Execute) в следующих каталогах:
bin платформы 1С (где лежит wsap24.dll).default.vrd).Если после переезда сервера права были сброшены, Apache не сможет «дотянуться» до библиотеки 1С, и служба не стартует.
Так как в исходной ситуации упоминается смена IP-адреса сервера, выясним, не осталось ли жесткой привязки в конфигурации Apache. Откроем httpd.conf и найдем директиву Listen. Если там указано нечто вроде Listen 192.168.1.10:80 (старый IP), Apache выдаст ошибку при старте, так как не сможет найти этот адрес в системе. Рекомендуется использовать общую директиву:
# Слушать порт 80 на всех доступных IP-адресах
Listen 80
После выполнения всех шагов (установки 64-битной платформы, корректировки путей и проверки прав) необходимо выполнить проверку синтаксиса Apache. Для этого выполним команду:
httpd -t
Если система ответит Syntax OK, можно смело запускать службу Apache через диспетчер служб. Теперь публикация 1С должна работать корректно на новом сервере с новым IP-адресом.