Что делать, если при публикации на веб-сервере 1С выдает ошибку: «Веб-серверы не обнаружены»?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При попытке опубликовать информационную базу через Конфигуратор («Администрирование — Публикация на веб-сервере...») многие специалисты сталкиваются с досадной проблемой: кнопка публикации неактивна, а программа выдает сообщение «Веб-серверы не обнаружены». Это происходит даже в тех случаях, когда Apache успешно установлен, запущен и корректно открывает тестовую страницу в браузере. Давайте подробно разберем, по каким критериям платформа 1С ищет установленные серверы и как заставить её «увидеть» ваш Apache.

Причина 1: Некорректное имя службы в Windows

Проанализируем механизм поиска, который заложен в платформу 1С. Как показывает практика и исследования опытных администраторов, Конфигуратор выполняет поиск установленного сервера Apache по строго определенным именам служб в реестре Windows. Программа не пытается найти любой исполняемый файл httpd.exe, она ищет конкретные ключи в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.

Для версии Apache 2.4 имя службы должно быть строго Apache2.4. Если при установке вы указали другое имя, например Apache_1C или MyWebServer, 1С просто проигнорирует эту службу. Рассмотрим, как это исправить:

  1. Откройте редактор реестра (regedit).
  2. Перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
  3. Найдите папку вашей службы Apache.
  4. Если она называется иначе, чем Apache2.4 (для версии 2.4) или Apache2.2 (для версии 2.2), переименуйте саму папку раздела реестра.
  5. Перезагрузите компьютер или перезапустите службу WMI.

Также важно, чтобы в параметре DisplayName службы было указано корректное название. 1С очень чувствительна к этим метаданным.

Причина 2: Установка из архива вместо дистрибутива

Часто системные администраторы предпочитают использовать portable-версии или просто распаковывать zip-архивы с официального сайта Apache Lounge. В этом случае сервер не регистрируется в системе как полноценное приложение. Выясним, как правильно зарегистрировать такой Apache, чтобы 1С его распознала.

Необходимо установить Apache именно как службу Windows. Для этого откройте командную строку от имени администратора, перейдите в каталог bin вашего веб-сервера и выполните команду:

httpd.exe -k install

Если вам нужно задать конкретное имя службы (которое понимает 1С), используйте флаг -n:

httpd.exe -k install -n "Apache2.4"

После выполнения этой команды служба появится в списке services.msc, и Конфигуратор сможет получить к ней доступ через системные запросы.

Причина 3: Поиск по пути установки «по умолчанию»

Разберем ситуацию, когда служба установлена правильно, но 1С все равно её не видит. Платформа имеет дополнительный механизм проверки — наличие конфигурационного файла в каталогах, принятых по умолчанию. Если ваш сервер установлен на другой диск (например, D:\Server\Apache), 1С может его не найти.

Посмотрим на алгоритм поиска платформы: она ищет файл httpd.conf по пути C:\Program Files\Apache Software Foundation\Apache2.4\conf. Если физически ваш сервер находится в другом месте, мы можем применить небольшую хитрость — создать пустую структуру каталогов или символьную ссылку:

  1. Создайте вручную путь C:\Program Files\Apache Software Foundation\Apache2.4\conf.
  2. Скопируйте в папку conf ваш актуальный файл httpd.conf.
  3. Перезапустите Конфигуратор.

Важный момент: 1С считывает настройки именно из этого файла. Если вы измените порт или пути в реальном файле настроек, не забудьте обновить его копию в «фейковом» каталоге, иначе публикация может пройти с ошибками.

Причина 4: Права доступа и запуск от имени администратора

Выясним еще одну неочевидную причину. Конфигуратор 1С использует WMI (Windows Management Instrumentation) для сканирования списка запущенных сервисов. Если вы запускаете 1С от имени обычного пользователя, прав для опроса системных служб может не хватить.

Всегда запускайте Конфигуратор от имени администратора при выполнении действий по публикации. Это гарантирует, что программа сможет прочитать ветки реестра и список служб.

Причина 5: Конфликт разрядностей (x86 vs x64)

Проанализируем ситуацию, когда установлена 32-битная платформа 1С и 64-битный Apache (или наоборот). Иногда 32-битный процесс Конфигуратора из-за механизмов перенаправления файловой системы (SysWOW64) не видит записи реестра или файлы 64-битных приложений.

Рекомендуется соблюдать соответствие разрядностей. Если вы используете 64-битную версию платформы 1С, используйте 64-битный Apache. Кроме того, убедитесь, что в системе установлены пакеты Microsoft Visual C++ Redistributable соответствующей версии (обычно VS16 или VS17 для последних сборок Apache 2.4), так как модуль расширения 1С (wsap24.dll) не сможет загрузиться без нужных библиотек.

Альтернативный метод: Использование утилиты webinst

Если нам не удается победить интерфейс Конфигуратора, мы можем воспользоваться «тяжелой артиллерией» — консольной утилитой webinst, которая входит в состав платформы 1С. Ей не важны имена служб в реестре, так как вы напрямую указываете пути.

Рассмотрим пример команды для публикации базы. Откройте командную строку от имени администратора из папки bin установленной платформы (например, C:\Program Files\1cv8\8.3.22.1709\bin) и выполните:


webinst -apache24 -wsdir MyBase -dir "C:\inetpub\wwwroot\MyBase" -connstr "Srvr=Server1C;Ref=MyBase;" -confpath "C:\Apache24\conf\httpd.conf"

Здесь параметры означают следующее:

Как работать с несколькими экземплярами Apache?

Проанализируем сложную задачу: вам нужно разнести разные базы по разным службам Apache (например, чтобы перезагрузка одной службы не прерывала работу пользователей другой базы). Как мы выяснили, 1С видит только службу с именем Apache2.4.

Решение заключается в использовании метода «шаблона»:

  1. Создаем основную службу Apache2.4. 1С её видит и позволяет публиковать базы.
  2. Создаем дополнительные службы с другими именами (Apache_Base2, Apache_Base3), используя разные порты.
  3. Публикуем базу через Конфигуратор на основной службе.
  4. Вручную копируем строки из httpd.conf основной службы (секции LoadModule и Alias) в конфигурационные файлы дополнительных служб.
  5. Переносим созданный каталог с файлом default.vrd в нужное место.

Таким образом, мы используем штатный механизм для генерации настроек, а затем вручную распределяем их по нужным нам экземплярам серверов. Это надежный способ обойти ограничения платформы по поиску установленного ПО.

← На главную