Перевод инфраструктуры «1С:Предприятие» на 64-разрядную платформу — это стандартный шаг для повышения производительности и стабильности работы системы. Однако этот процесс часто сопровождается трудностями при настройке веб-серверов. Администраторы сталкиваются с ситуацией, когда после удаления 32-разрядной платформы и установки x64 веб-сервер Apache отказывается запускаться, выдавая непонятные системные логи, а после переустановки начинает возвращать пользователям ошибку 404.
В этой статье мы подробно разберем, почему возникают подобные проблемы, проанализируем взаимосвязь разрядности веб-сервера и библиотек 1С, а также пошагово решим проблему с запуском веб-публикации и устраним ошибку HTTP: Not found /index.html.
Рассмотрим типичную ситуацию. Администратор переходит на 64-разрядную платформу 1С, удаляя старую 32-разрядную версию. При попытке перезапустить Apache служба веб-сервера «падает», а в логе ошибок (обычно это файл error.log в папке logs веб-сервера) фиксируется следующая запись:
Cannot load C:/Program Files (x86)/1cv8/8.3.12.1595/bin/wsap22.dll into server: \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.
За нечитаемой кодировкой скрывается стандартное системное сообщение Windows: «Не найден указанный модуль». Давайте проанализируем, почему это происходит:
C:/Program Files (x86)/.... Папка Program Files (x86) в операционных системах Windows зарезервирована строго под 32-битное программное обеспечение. 64-битная платформа 1С по умолчанию устанавливается в каталог C:/Program Files/.... Соответственно, веб-сервер пытается найти модуль по старому, несуществующему пути.wsap22.dll предназначен для интеграции с Apache версий 2.2. Если вы используете современный веб-сервер Apache 2.4, вам необходима библиотека wsap24.dll. Использование несоответствующего модуля приведет к краху веб-сервера на этапе инициализации из-за различий в API версий Apache. Более того, начиная с версии платформы 1С 8.3.20, поддержка Apache 2.2 официально прекращена, и файл wsap22.dll больше не поставляется.Поскольку 32-разрядный Apache не сможет работать с новой 64-битной платформой 1С, нам необходимо полностью заменить веб-сервер на его x64-версию. Разберем по шагам, как это сделать правильно.
Прежде всего, старый веб-сервер необходимо корректно деинсталлировать или удалить его службу. Для этого запустите командную строку от имени администратора и выполните команду остановки и удаления службы Apache:
httpd.exe -k stop
httpd.exe -k uninstall
После удаления старой версии перейдем к установке актуального ПО. Важно отметить, что официальный сайт проекта Apache предоставляет только исходный код. Бинарные сборки для Windows собираются сторонними доверенными сообществами. Ранее популярный ресурс ApacheHaus завершил свою работу, поэтому сегодня стандартом является проект Apache Lounge.
Выполните следующие действия:
Apache24) в корень системного диска, например, в C:\Apache24.Теперь нам необходимо настроить интеграцию нашего нового веб-сервера с новой 64-битной платформой 1С. Для этого мы отредактируем файл конфигурации Apache httpd.conf, который находится в папке C:\Apache24\conf.
Откроем его любым текстовым редактором и найдем блок подключения модулей 1С. Обычно он располагается в самом конце файла. Нам нужно прописать корректные пути к 64-разрядной библиотеке 1С. Отредактируем или добавим следующие строки:
# Подключение модуля расширения веб-сервера 1С:Предприятие 8.3
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1709/bin/wsap24.dll"
Важные нюансы при редактировании путей в httpd.conf:
/) вместо обратного (\). Apache требует именно такой формат путей в своей конфигурации.Program Files (без приставки x86).8.3.22.1709, замените ее на вашу актуальную версию).wsap24.dll.После сохранения изменений зарегистрируем и запустим службу нового Apache x64 в командной строке, запущенной от имени администратора:
C:\Apache24\bin\httpd.exe -k install
C:\Apache24\bin\httpd.exe -k start
Если служба запустилась успешно, веб-сервер готов к работе. Если возникли ошибки, перепроверьте наличие установленных библиотек MS Visual C++ Redistributable и корректность путей в файле httpd.conf.
Часто администраторы сталкиваются с тем, что после перезапуска веб-сервера базы 1С все равно не работают. Это происходит из-за рассинхронизации утилит публикации. Рассмотрим типичный конфликт разрядностей при публикации баз.
Если вы запускаете 32-разрядный Конфигуратор 1С (тонкий или толстый клиент x86) и выполняете публикацию через меню Администрирование -> Публикация на веб-сервере, то платформа по умолчанию пропишет в конфигурационный файл Apache путь к 32-разрядному модулю из папки Program Files (x86). В результате 64-разрядный Apache мгновенно сломается при следующем перезапуске.
Чтобы избежать этой проблемы, придерживайтесь следующих правил:
httpd.conf и вручную скорректируйте путь к DLL-файлу модуля 1С, заменив его на 64-битный путь.Представим, что мы успешно настроили и запустили 64-разрядный веб-сервер. Однако при попытке открыть базу через браузер по ссылке http://localhost/UT мы получаем JSON-ответ с ошибкой:
{"#exception":"{http://v8.1c.ru/8.2/virtual-resource-system}Exception","exception":{"clsid":"580392e6-ba49-4280-ac67-fcd6f2180121","reason":404,"descr":"HTTP: Not found\nОшибка при выполнении запроса GET к ресурсу /index.html:"}}
Давайте проанализируем эту ошибку. Самое важное понимание здесь состоит в том, что эту ошибку возвращает не Apache, а сама платформа 1С:Предприятие. Формат JSON с пространством имен v8.1c.ru однозначно доказывает, что веб-сервер успешно принял запрос, передал его модулю 1С (библиотеке wsap24.dll), но модуль 1С отклонил запрос с кодом 404. Почему это произошло?
Выясним причину. В конфигурационном файле Apache httpd.conf по умолчанию задана глобальная директива, определяющая индексный файл каталога:
DirectoryIndex index.html index.php
Когда мы обращаемся по адресу без косой черты на конце (http://localhost/UT), веб-сервер считает, что мы обращаемся к каталогу. Он ищет индексный файл и автоматически перенаправляет запрос на http://localhost/UT/index.html. Так как управление этой виртуальной директорией передано обработчику 1С (директива SetHandler 1c-application), запрос на файл index.html уходит внутрь платформы 1С. Платформа анализирует запрос, не находит внутри конфигурации веб-ресурса с именем index.html и выдает штатную ошибку 404.
Выполним шаги для исправления этой ситуации:
http://localhost/UT/. В этом случае Apache поймет запрос корректно, и платформа 1С запустит стандартный веб-клиент.index.html внутри нашей публикации. Для этого найдем в файле httpd.conf блок конфигурации нашей базы (он создается автоматически при публикации) и добавим в него директиву DirectoryIndex disabled или просто обнулим ее. Выглядеть это будет следующим образом:
# Блок публикации базы 1С
Alias "/UT" "C:/inetpub/wwwroot/UT/"
<Directory "C:/inetpub/wwwroot/UT/">
AllowOverride None
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/UT/default.vrd"
DirectoryIndex ""
</Directory>
После внесения этих изменений и перезапуска веб-сервера Apache обращение по адресу http://localhost/UT будет автоматически и корректно обрабатываться платформой 1С без вызова ошибки 404.
Если ваша база данных 1С является файловой, то при публикации вы можете столкнуться с тем, что после успешной авторизации веб-клиент зависает или выдает ошибку доступа. Выясним причину этой проблемы.
По умолчанию служба веб-сервера Apache в операционной системе Windows регистрируется и запускается от имени встроенной системной учетной записи SYSTEM (Локальная система) или локальной группы Network Service. Для того чтобы веб-клиент мог полноценно работать с файловой базой, процесс веб-сервера должен иметь возможность создавать, изменять и удалять файлы в каталоге базы данных (где находится файл 1Cv8.1CD), а также в каталоге публикации (где лежит конфигурационный файл default.vrd).
Проанализируем и настроим права доступа:
SYSTEM (или Network Service, в зависимости от того, от чьего имени запущена служба Apache) и нажмите «Проверить имена».1Cv8.lcl и временные файлы).Аналогичные права «Полный доступ» необходимо предоставить на каталог публикации (в нашем примере это C:/inetpub/wwwroot/UT/), чтобы служба Apache могла свободно читать и при необходимости изменять файл настроек публикации default.vrd.
Выполнив все описанные шаги, мы получим полностью работоспособную, быструю и стабильную 64-разрядную связку веб-сервера Apache 2.4 и платформы «1С:Предприятие 8.3».