Ситуация, когда после установки веб-сервера Apache попытка публикации информационной базы 1С заканчивается ошибкой «веб-серверы не обнаружены», является классической проблемой при настройке инфраструктуры для веб-клиента или мобильных приложений. Несмотря на то, что служба Apache может отображаться в статусе «Работает», платформа 1С:Предприятие по каким-то причинам не может идентифицировать сервер как подходящую площадку для размещения vrd-файла и модулей расширения. Разберем по шагам, как продиагностировать эту систему и заставить 1С «увидеть» установленный веб-сервер.
Первым делом нам необходимо убедиться, что веб-сервер действительно занимает нужный порт (по умолчанию 80-й) и готов принимать входящие соединения. Для этого воспользуемся системной утилитой netstat. Запустим командную строку от имени администратора и выполним следующую команду:
netstat -anbp tcp
Проанализируем полученный список. Нас интересует строка, где в колонке «Локальный адрес» указано 0.0.0.0:80 (или другой порт, если вы меняли его в httpd.conf), а в состоянии стоит LISTENING. В квадратных скобках под этой строкой должен быть указан процесс httpd.exe. Если процесса нет или порт занят другим приложением (например, Skype или IIS), 1С не сможет взаимодействовать с Apache.
Если мы видим, что httpd.exe слушает порт, проверим его работоспособность через обычный браузер. Введем в адресную строку:
http://localhost
Если сервер настроен верно, мы должны увидеть либо стандартную надпись «It works!», либо список файлов (Index of /). Если браузер выдает ошибку «Страница недоступна», значит, проблема в самом Apache, и 1С тут ни при чем — нужно проверять конфигурационный файл httpd.conf на наличие ошибок.
Одной из самых частых причин, почему кнопка «Опубликовать» не срабатывает, является отсутствие необходимых модулей в самой платформе 1С. Разберем, как это проверить. Перейдем в Панель управления -> Программы и компоненты, найдем нашу платформу 1С:Предприятие и выберем пункт «Изменить».
В открывшемся дереве компонентов убедимся, что установлен флажок напротив пункта «Модули расширения веб-сервера». Без этого компонента Конфигуратор даже не будет пытаться искать установленные веб-серверы, так как у него просто нет инструментов (библиотек wsap24.dll и других) для взаимодействия с ними.
Проанализируем ситуацию с правами. Публикация базы — это процесс записи данных в системные папки (в каталог Apache) и внесения изменений в конфигурационные файлы веб-сервера. Если Конфигуратор запущен от имени обычного пользователя, операционная система может заблокировать попытку поиска служб или чтения реестра.
Всегда запускайте 1С:Предприятие от имени администратора перед тем, как открыть окно публикации. Также проверим права доступа к папке, где установлен Apache (обычно C:\Apache24). На вкладке «Безопасность» у группы «Администраторы» и у пользователя, под которым работает служба Apache, должны быть полные права на чтение и запись в папку conf.
Платформа 1С ищет веб-сервер не просто по наличию файлов на диске, а по зарегистрированным службам в реестре Windows. Рассмотрим, как это работает. 1С ищет службы с именами типа Apache2.4 или Apache2.2. Если при установке веб-сервера вы вручную переименовали службу (например, в MyWebSrv), 1С может её проигнорировать.
Проверим имя службы через PowerShell:
Get-Service "*apache*"
Если имя службы отличается от стандартного, рекомендуется переустановить службу с правильным именем. Для этого в папке bin веб-сервера выполним команды:
httpd.exe -k uninstall
httpd.exe -k install -n "Apache2.4"
Это критический момент. Выясним, совпадает ли разрядность установленного Apache и модулей расширения 1С. Если вы установили 64-битный Apache, но при установке 1С выбрали 32-битные модули расширения (или наоборот), публикация может завершиться ошибкой или сервер просто «не найдется».
Важное правило: разрядность веб-сервера должна строго соответствовать разрядности установленных модулей расширения 1С. Проверьте путь к библиотеке в httpd.conf после ручной правки (если она была) — он должен вести в папку соответствующей разрядности (например, C:\Program Files\1cv8\... для 64-бит и C:\Program Files (x86)\1cv8\... для 32-бит).
Если графический интерфейс Конфигуратора по-прежнему не видит сервер, мы можем воспользоваться «силовым» методом — утилитой командной строки webinst.exe, которая входит в комплект поставки платформы. Она позволяет выполнить публикацию, явно указав путь к конфигурационному файлу Apache.
Рассмотрим пример команды для публикации:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\webinst.exe" -publish -apache24 -wsdir MyBase -dir "C:\www\MyBase" -connstr "Srvr=Server1C;Ref=MyBase;" -confpath "C:\Apache24\conf\httpd.conf"
В этой команде мы принудительно указываем ключ -confpath, что позволяет обойти механизмы автоматического поиска веб-сервера. После выполнения этой команды необходимо перезапустить службу Apache вручную через оснастку services.msc.
Проанализируем логи netstat из исходной темы. Мы видим активный процесс dwnetfilter.exe. Это сетевой фильтр антивируса (в данном случае Dr.Web). Подобные программы могут блокировать внутренние запросы платформы 1С к службам системы. Попробуйте временно отключить самозащиту антивируса и сетевой экран, чтобы исключить вероятность блокировки сканирования веб-серверов.
Подведем итог: если 1С не видит Apache, это чаще всего связано либо с отсутствием установленного компонента «Модули расширения веб-сервера», либо с нехваткой прав администратора, либо с нестандартным именем службы Apache в реестре Windows. Последовательная проверка этих факторов позволяет решить проблему в 99% случаев.