При попытке опубликовать информационную базу через Конфигуратор («Администрирование — Публикация на веб-сервере...») многие специалисты сталкиваются с досадной проблемой: кнопка публикации неактивна, а программа выдает сообщение «Веб-серверы не обнаружены». Это происходит даже в тех случаях, когда Apache успешно установлен, запущен и корректно открывает тестовую страницу в браузере. Давайте подробно разберем, по каким критериям платформа 1С ищет установленные серверы и как заставить её «увидеть» ваш Apache.
Проанализируем механизм поиска, который заложен в платформу 1С. Как показывает практика и исследования опытных администраторов, Конфигуратор выполняет поиск установленного сервера Apache по строго определенным именам служб в реестре Windows. Программа не пытается найти любой исполняемый файл httpd.exe, она ищет конкретные ключи в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
Для версии Apache 2.4 имя службы должно быть строго Apache2.4. Если при установке вы указали другое имя, например Apache_1C или MyWebServer, 1С просто проигнорирует эту службу. Рассмотрим, как это исправить:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.Apache.WMI.Также важно, чтобы в параметре DisplayName службы было указано корректное название. 1С очень чувствительна к этим метаданным.
Часто системные администраторы предпочитают использовать portable-версии или просто распаковывать zip-архивы с официального сайта Apache Lounge. В этом случае сервер не регистрируется в системе как полноценное приложение. Выясним, как правильно зарегистрировать такой Apache, чтобы 1С его распознала.
Необходимо установить Apache именно как службу Windows. Для этого откройте командную строку от имени администратора, перейдите в каталог bin вашего веб-сервера и выполните команду:
httpd.exe -k install
Если вам нужно задать конкретное имя службы (которое понимает 1С), используйте флаг -n:
httpd.exe -k install -n "Apache2.4"
После выполнения этой команды служба появится в списке services.msc, и Конфигуратор сможет получить к ней доступ через системные запросы.
Разберем ситуацию, когда служба установлена правильно, но 1С все равно её не видит. Платформа имеет дополнительный механизм проверки — наличие конфигурационного файла в каталогах, принятых по умолчанию. Если ваш сервер установлен на другой диск (например, D:\Server\Apache), 1С может его не найти.
Посмотрим на алгоритм поиска платформы: она ищет файл httpd.conf по пути C:\Program Files\Apache Software Foundation\Apache2.4\conf. Если физически ваш сервер находится в другом месте, мы можем применить небольшую хитрость — создать пустую структуру каталогов или символьную ссылку:
C:\Program Files\Apache Software Foundation\Apache2.4\conf.conf ваш актуальный файл httpd.conf.Важный момент: 1С считывает настройки именно из этого файла. Если вы измените порт или пути в реальном файле настроек, не забудьте обновить его копию в «фейковом» каталоге, иначе публикация может пройти с ошибками.
Выясним еще одну неочевидную причину. Конфигуратор 1С использует WMI (Windows Management Instrumentation) для сканирования списка запущенных сервисов. Если вы запускаете 1С от имени обычного пользователя, прав для опроса системных служб может не хватить.
Всегда запускайте Конфигуратор от имени администратора при выполнении действий по публикации. Это гарантирует, что программа сможет прочитать ветки реестра и список служб.
Проанализируем ситуацию, когда установлена 32-битная платформа 1С и 64-битный Apache (или наоборот). Иногда 32-битный процесс Конфигуратора из-за механизмов перенаправления файловой системы (SysWOW64) не видит записи реестра или файлы 64-битных приложений.
Рекомендуется соблюдать соответствие разрядностей. Если вы используете 64-битную версию платформы 1С, используйте 64-битный Apache. Кроме того, убедитесь, что в системе установлены пакеты Microsoft Visual C++ Redistributable соответствующей версии (обычно VS16 или VS17 для последних сборок Apache 2.4), так как модуль расширения 1С (wsap24.dll) не сможет загрузиться без нужных библиотек.
Если нам не удается победить интерфейс Конфигуратора, мы можем воспользоваться «тяжелой артиллерией» — консольной утилитой 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"
Здесь параметры означают следующее:
-apache24 — тип используемого веб-сервера;-wsdir — имя виртуального каталога, который будет доступен в браузере;-dir — физический путь, где 1С создаст файл публикации default.vrd;-confpath — прямой путь к конфигурационному файлу Apache, куда утилита сама допишет необходимые строки загрузки модуля.Проанализируем сложную задачу: вам нужно разнести разные базы по разным службам Apache (например, чтобы перезагрузка одной службы не прерывала работу пользователей другой базы). Как мы выяснили, 1С видит только службу с именем Apache2.4.
Решение заключается в использовании метода «шаблона»:
Apache_Base2, Apache_Base3), используя разные порты.httpd.conf основной службы (секции LoadModule и Alias) в конфигурационные файлы дополнительных служб.default.vrd в нужное место.Таким образом, мы используем штатный механизм для генерации настроек, а затем вручную распределяем их по нужным нам экземплярам серверов. Это надежный способ обойти ограничения платформы по поиску установленного ПО.