Почему не запускается служба Apache при настройке веб-сервисов 1С и как это исправить

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

Настройка веб-сервера Apache для работы с 1С:Предприятие — это стандартная задача, которая, тем не менее, часто вызывает трудности у начинающих специалистов и системных администраторов. Ошибка при запуске службы может быть вызвана множеством факторов: от банально занятого порта до несоответствия разрядности модулей 1С и самого сервера. В этой статье мы подробно разберем, почему Apache может не запускаться, и пройдем по шагам весь путь диагностики и исправления ситуации.

Проанализируем основные причины отказа службы

Когда мы пытаемся запустить Apache как службу Windows и получаем сообщение об ошибке, первым делом необходимо понять, что именно мешает старту. Проанализируем ситуацию: Apache — это приложение, которое должно занять определенный сетевой порт (по умолчанию 80) и загрузить необходимые модули. Если порт занят другим приложением или путь к исполняемому файлу указан неверно, служба не запустится.

Основные причины, которые мы разберем далее:

  1. Конфликт портов (занятый порт 80 или 443).
  2. Некорректные пути в конфигурационном файле httpd.conf.
  3. Ошибки в системном реестре Windows относительно пути к httpd.exe.
  4. Несоответствие разрядности (x86 и x64) Apache и модуля расширения веб-сервера 1С.
  5. Отсутствие необходимых библиотек Visual C++ Redistributable.

Выясним причину через лог-файлы и командную строку

Прежде чем что-то менять, давайте научимся «слушать» сервер. Apache достаточно информативен, если знать, где искать сообщения. Проверим файл error.log, который обычно находится в папке logs внутри каталога установки. Однако, если служба не запускается вовсе, записи в логе могут не появиться. В этом случае воспользуемся командной строкой.

Запустим консоль (CMD) от имени администратора, перейдем в папку bin сервера Apache и выполним команду проверки синтаксиса:


cd C:\Apache24\bin
httpd.exe -t

Если в конфигурации есть ошибки, эта команда выведет номер строки и описание проблемы. Если мы видим сообщение Syntax OK, значит, проблема кроется в системных ресурсах или настройках службы.

Разберем конфликт с занятым портом 80

Самая частая причина под Windows — это занятый порт 80. Посмотрим, кто может его удерживать. В современных версиях Windows это чаще всего IIS (Internet Information Services), Skype или системный процесс System (PID 4), который может использовать драйвер http.sys.

Выясним, какой процесс занимает порт, с помощью команды:

netstat -aon | findstr :80

Если мы видим, что порт занят процессом с PID 4, это означает, что работает служба публикации веб-технологий или IIS. Для работы Apache нам нужно либо остановить IIS, либо перенастроить Apache на другой порт.

Вариант 1: Остановка IIS. Зайдем в «Службы» (services.msc), найдем «Служба публикации веб-элементов» (World Wide Web Publishing Service) и остановим ее, установив тип запуска «Вручную» или «Отключено».

Вариант 2: Смена порта Apache. Если нам необходимо оставить IIS работающим, изменим порт в httpd.conf. Найдем строку Listen 80 и заменим ее, например, на:

Listen 81

После этого не забудем, что обращаться к 1С нужно будет через http://localhost:81/ИмяПубликации.

Проверим настройки путей и реестра

Рассмотрим ситуацию, когда мы перемещали папку с Apache после установки. В этом случае служба в Windows будет ссылаться на старый, несуществующий путь. Проанализируем свойства службы Apache в диспетчере служб: если путь к исполняемому файлу неверен, нам придется либо переустановить службу, либо поправить реестр.

Чтобы переустановить службу корректно, выполним команды в bin каталоге:


httpd.exe -k uninstall
httpd.exe -k install

Если же мы хотим поправить путь вручную, откроем regedit и перейдем в раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4. Найдем параметр ImagePath и убедимся, что путь к httpd.exe соответствует реальности.

Проанализируем публикацию веб-сервиса 1С

Для того чтобы 1С работала через Apache, в файл httpd.conf при публикации добавляются специальные строки. Посмотрим на типичный пример подключения модуля для 1С 8.3:


LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1709/bin/wsap24.dll"

# 1c publication
Alias "/Base1C" "C:/inetpub/wwwroot/Base1C/"
<Directory "C:/inetpub/wwwroot/Base1C/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/wwwroot/Base1C/default.vrd"
</Directory>

Здесь крайне важно обратить внимание на два момента:

  1. Разрядность: Если вы установили 64-битный Apache, то и библиотека wsap24.dll должна быть из комплекта 64-битной 1С. Если версии не совпадают, Apache упадет сразу после попытки запуска с ошибкой «Неверная функция» или кодом 1.
  2. Версия модуля: Для Apache 2.4 модуль называется wsap24.dll, для версии 2.2 — wsap22.dll. Использование модуля не той версии гарантированно блокирует запуск.

Решим проблему с Visual C++ Redistributable

Часто мы забываем, что сборки Apache под Windows (особенно с сайтов вроде ApacheHaus) скомпилированы определенными версиями компилятора Visual Studio. Выясним, какая версия VC++ требуется вашему дистрибутиву. Обычно это VC14, VC15 или даже более новые.

Если в системе не установлены соответствующие пакеты Visual C++ Redistributable, запуск httpd.exe будет завершаться системной ошибкой об отсутствии msvcr140.dll или аналогичных файлов. Рекомендуем установить и x86, и x64 версии пакетов с официального сайта Microsoft для обеспечения полной совместимости.

Итоговый алгоритм действий

Подведем итог и составим четкий план действий, если Apache отказывается запускаться:

  1. Проверяем синтаксис конфига через httpd.exe -t.
  2. Смотрим, не занят ли порт 80 через netstat. Если занят процессом System — отключаем IIS.
  3. Убеждаемся, что в httpd.conf параметры ServerRoot и DocumentRoot указывают на существующие папки.
  4. Проверяем, что разрядность установленной 1С (модулей расширения веб-сервера) совпадает с разрядностью Apache.
  5. Проверяем наличие установленных библиотек Visual C++.
  6. Если ничего не помогает, запускаем httpd.exe вручную (не как службу) в консоли — так вы увидите текст ошибки прямо в окне командной строки.

Следуя этим шагам, мы сможем диагностировать и устранить практически любую причину сбоя веб-сервера. После того как Apache запустится и в браузере по адресу http://localhost появится страница приветствия (или сообщение It works!), можно переходить непосредственно к публикации информационной базы из конфигуратора 1С.

← На главную