При обновлении платформы 1С:Предприятие до версий 8.3.11, 8.3.12 и выше многие системные администраторы сталкиваются с неприятной ситуацией: после успешной установки новой технологической платформы и публикации баз перестает запускаться веб-сервер Apache 2.2. При этом служба веб-сервера либо мгновенно аварийно завершает работу, либо «зависает» при попытке старта. Если закомментировать строку загрузки модуля 1С в конфигурационном файле, веб-сервер запускается без проблем.
В этой статье мы подробно разберем, почему возникает этот конфликт, как провести диагностику и какими способами можно вернуть работоспособность веб-сервисов 1С.
Для начала проанализируем, почему стабильно работавший ранее веб-сервер внезапно начинает выдавать ошибку на строку подключения модуля 1С:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.12.1685/bin/wsap22.dll"
Основных причин у этой проблемы три:
wsap22.dll стал несовместим со старой архитектурой Apache 2.2. При попытке загрузить этот модуль веб-сервер падает с ошибкой нарушения доступа к памяти (Access Violation, код 0xC0000005).httpd.conf, перепутав папки C:\Program Files\ и C:\Program Files (x86)\.---
Прежде чем переходить к активным действиям, давайте убедимся, что проблема действительно кроется в модуле сопряжения 1С. Для этого выполним простую проверку:
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ или аналогичный путь).httpd.conf.
LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.12.1685/bin/wsap22.dll"
#, чтобы закомментировать ее:
# LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.12.1685/bin/wsap22.dll"
Если после этого веб-сервер успешно запустился, значит, сама служба Apache исправна, а проблема кроется именно в несовместимости или неправильной настройке библиотеки wsap22.dll от новой платформы.
---
Очень часто администраторы ошибочно полагают, что раз у них установлена 64-битная операционная система Windows, то и все программы на ней работают в 64-битном режиме. Однако Apache 2.2 крайне часто устанавливался именно как 32-битное (x86) приложение.
Выясним разрядность компонентов:
C:\Program Files (x86)\..., скорее всего, он является 32-битным.C:\Program Files\1cv8\... (без x86). Это 64-битный модуль.Правило простое: для 32-битного Apache требуется 32-битный модуль 1С, для 64-битного Apache — 64-битный модуль 1С. Смешивать их нельзя!
Если вам необходимо доустановить нужный модуль расширения веб-сервера, выполните следующие шаги:
---
Если разрядность проверена, пути прописаны верно, но Apache 2.2 все равно отказывается запускаться с модулем платформы 8.3.12, воспользуемся одним из следующих проверенных решений.
Это самый быстрый временный вариант, позволяющий запустить работу пользователей без кардинального изменения инфраструктуры. Суть метода заключается в том, что сам веб-сервер будет использовать для запуска старую, стабильно работающую библиотеку wsap22.dll (например, от версии 8.3.10), но при этом перенаправлять запросы он сможет на базы, работающие под управлением новой платформы 8.3.12.
Разберем по шагам, как это настроить:
httpd.conf.
LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.10.2561/bin/wsap22.dll"
# Directives for 1C:Enterprise Web Application
Alias "/MyBase" "C:/inetpub/wwwroot/MyBase/"
<Directory "C:/inetpub/wwwroot/MyBase/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/MyBase/default.vrd"
</Directory>
default.vrd, путь к которому указан в директиве ManagedApplicationDescriptor. Откройте этот файл XML-редактором или обычным Блокнотом.Этот «костыль» отлично работает, поскольку протокол обмена между веб-компонентом 1С и сервером приложений внутри ветки 8.3 практически не менялся. Но помните, что это временное решение.
---
Разработчики Apache официально прекратили поддержку ветки 2.2 еще в конце 2017 года. Фирма 1С также прекратила тестирование своих новых релизов на совместимость с этой устаревшей версией веб-сервера. Единственный способ раз и навсегда избавиться от подобных ошибок при будущих обновлениях платформы — это переход на современный и поддерживаемый Apache 2.4.
Выполним переход на новую версию по шагам:
httpd.exe -k uninstall
Примечание: если команда не найдена, предварительно перейдите в папку bin вашего старого Apache с помощью команды cd.
C:\Apache24). Установите службу командой:
C:\Apache24\bin\httpd.exe -k install
C:\Apache24\conf\httpd.conf) и нажмите кнопку «Опубликовать».
При публикации Конфигуратор автоматически пропишет в конец файла настроек Apache 2.4 правильный модуль сопряжения новой версии:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.12.1685/bin/wsap24.dll"
Обратите внимание, что для версии Apache 2.4 используется библиотека wsap24.dll, которая полностью оптимизирована под новую архитектуру платформы 1С и работает абсолютно стабильно, без зависаний и аварийных завершений работы службы.
---
Если после обновления платформы до 8.3.12 у вас «упал» Apache 2.2, не паникуйте. Сначала локализуйте проблему, закомментировав модуль 1С в httpd.conf. Если вам нужно срочно запустить работу — пропишите путь к старой библиотеке wsap22.dll от версии 8.3.10. Если же вы хотите настроить систему надежно и на перспективу — выделите время на установку современной связки из Apache 2.4 (x64) и соответствующего модуля расширения веб-сервера 1С.