Публикация информационной базы 1С на веб-сервере Apache — задача, которая кажется тривиальной, но часто преподносит сюрпризы даже опытным специалистам. Ситуация, когда основной адрес сервера http://192.168.1.107 успешно выдает страницу "It works!", а при попытке зайти в базу http://192.168.1.107/ut11 сервер возвращает ошибку 404 Not Found, является классической. Разберем детально, почему это происходит и как настроить окружение так, чтобы все заработало "с полпинка".
Проанализируем ключевую особенность работы веб-серверов. Мы привыкли, что в операционной системе Windows файлы UT11, ut11 и Ut11 — это один и тот же объект. Однако веб-сервер Apache работает по стандартам URI (Uniform Resource Identifier), для которых регистр символов имеет критическое значение.
Выясним причину ошибки в нашем случае: если при публикации базы в конфигураторе (или в файле default.vrd) вы указали имя "UT11" заглавными буквами, то Apache будет ожидать запрос именно в таком виде. Обращение по адресу /ut11 (в нижнем регистре) для него будет означать поиск совершенно другого ресурса, который не описан в конфигурационном файле httpd.conf. Как результат — сервер честно сообщает, что ресурс не найден.
Рассмотрим, как правильно прописать псевдоним (Alias) в конфигурационном файле Apache. Обычно 1С добавляет в httpd.conf блок следующего вида:
Alias "/UT11" "C:/inetpub/wwwroot/UT11/"
<Directory "C:/inetpub/wwwroot/UT11/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/UT11/default.vrd"
</Directory>
Важный момент: если в строке Alias "/UT11" указан верхний регистр, в адресной строке браузера необходимо вводить именно его. Чтобы избежать подобных проблем в будущем, рекомендуем всегда использовать нижний регистр при именовании публикаций.
Если исправление регистра не помогло, проанализируем следующий важный аспект — соответствие разрядности (32-бит или 64-бит). Это одна из самых частых технических причин, по которым расширение веб-сервера 1С отказывается инициализироваться.
wsap24.dll). Она обычно находится по пути C:/Program Files/1cv8/номер_версии/bin/.C:/Program Files (x86)/1cv8/номер_версии/bin/.Посмотрим на пример строки подключения модуля в httpd.conf:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.23.1865/bin/wsap24.dll"
Если вы укажете путь к 32-битной библиотеке в 64-битном Apache, служба веб-сервера либо не запустится, либо будет выдавать ошибку 500 при попытке обращения к любому ресурсу 1С. Всегда проверяйте соответствие установленных дистрибутивов.
Разберем ситуацию, когда используется современная версия Apache 2.4, а настройки копируются из старых мануалов для версии 2.2. В версии 2.4 радикально изменился механизм управления доступом.
В старой версии 2.2 мы писали:
Order allow,deny
Allow from all
В новой версии 2.4 эти директивы заменены на одну:
Require all granted
Если оставить старый синтаксис в Apache 2.4, сервер может интерпретировать это как ошибку конфигурации или ограничить доступ, возвращая 403 Forbidden. Всегда проверяйте версию установленного Apache командой httpd -v в командной строке.
Выясним, почему Apache может работать нестабильно на "чистой" Windows 10. В данной ОС часто по умолчанию активирована служба W3SVC (Служба веб-публикаций), которая является частью IIS. Она автоматически занимает 80-й порт.
Чтобы Apache мог беспрепятственно использовать стандартный порт, выполним следующие шаги:
Win + R и введем services.msc.Проанализируем права доступа к файлам. Для того чтобы Apache мог отдавать базу пользователям, системная учетная запись, от которой запущен сервис (обычно это SYSTEM или LocalSystem), должна иметь права на чтение файлов в каталоге публикации и в папке bin платформы 1С.
Особое внимание уделим файлу default.vrd. Это дескриптор виртуального ресурса, написанный на языке XML. Рассмотрим его типичное содержимое:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/ut11"
ib="Srvr="ServerName";Ref="BaseName";">
<ws>
<point name="WebServiceName"
alias="ws1.1cws"
enable="true"/>
</ws>
<httpServices>
<point name="ServiceName"
alias="hs1"
enable="true"/>
</httpServices>
</point>
Убедимся, что кодировка этого файла строго UTF-8. Если при редактировании файла вручную вы сохраните его в кодировке Windows-1251, 1С не сможет его прочитать, и при попытке входа вы получите ошибку конфигурации.
Если проблема сохраняется, заглянем в "черный ящик" — логи Apache. Они находятся в папке logs внутри каталога установки сервера (файлы error.log и access.log).
Если в access.log вы видите записи со статусом 404, значит, запрос вообще не доходит до модуля 1С — проблема в путях или регистре в httpd.conf. Если же вы видите статус 500, значит, Apache передал запрос модулю wsap24.dll, но тот не смог инициализировать подключение к базе (например, из-за отсутствия лицензии или неверной строки соединения в .vrd).
Для более глубокой отладки на стороне 1С можно создать файл logcfg.xml в каталоге conf платформы. Это позволит увидеть, что именно происходит внутри модуля расширения веб-сервера в момент запроса.
Подводя итог: при публикации 1С на Apache в Windows 10 будьте предельно внимательны к регистру символов в URL, проверяйте соответствие разрядности компонентов и не забывайте отключать конфликтующие службы IIS. Соблюдение этих простых правил позволит вам развернуть веб-доступ быстро и без ошибок.