Настройка веб-сервера Apache для работы с 1С:Предприятие — это стандартная задача, которая, тем не менее, часто вызывает трудности у начинающих специалистов и системных администраторов. Ошибка при запуске службы может быть вызвана множеством факторов: от банально занятого порта до несоответствия разрядности модулей 1С и самого сервера. В этой статье мы подробно разберем, почему Apache может не запускаться, и пройдем по шагам весь путь диагностики и исправления ситуации.
Когда мы пытаемся запустить Apache как службу Windows и получаем сообщение об ошибке, первым делом необходимо понять, что именно мешает старту. Проанализируем ситуацию: Apache — это приложение, которое должно занять определенный сетевой порт (по умолчанию 80) и загрузить необходимые модули. Если порт занят другим приложением или путь к исполняемому файлу указан неверно, служба не запустится.
Основные причины, которые мы разберем далее:
httpd.conf.httpd.exe.Прежде чем что-то менять, давайте научимся «слушать» сервер. Apache достаточно информативен, если знать, где искать сообщения. Проверим файл error.log, который обычно находится в папке logs внутри каталога установки. Однако, если служба не запускается вовсе, записи в логе могут не появиться. В этом случае воспользуемся командной строкой.
Запустим консоль (CMD) от имени администратора, перейдем в папку bin сервера Apache и выполним команду проверки синтаксиса:
cd C:\Apache24\bin
httpd.exe -t
Если в конфигурации есть ошибки, эта команда выведет номер строки и описание проблемы. Если мы видим сообщение Syntax OK, значит, проблема кроется в системных ресурсах или настройках службы.
Самая частая причина под 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С работала через 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>
Здесь крайне важно обратить внимание на два момента:
wsap24.dll должна быть из комплекта 64-битной 1С. Если версии не совпадают, Apache упадет сразу после попытки запуска с ошибкой «Неверная функция» или кодом 1.wsap24.dll, для версии 2.2 — wsap22.dll. Использование модуля не той версии гарантированно блокирует запуск.Часто мы забываем, что сборки Apache под Windows (особенно с сайтов вроде ApacheHaus) скомпилированы определенными версиями компилятора Visual Studio. Выясним, какая версия VC++ требуется вашему дистрибутиву. Обычно это VC14, VC15 или даже более новые.
Если в системе не установлены соответствующие пакеты Visual C++ Redistributable, запуск httpd.exe будет завершаться системной ошибкой об отсутствии msvcr140.dll или аналогичных файлов. Рекомендуем установить и x86, и x64 версии пакетов с официального сайта Microsoft для обеспечения полной совместимости.
Подведем итог и составим четкий план действий, если Apache отказывается запускаться:
httpd.exe -t.netstat. Если занят процессом System — отключаем IIS.httpd.conf параметры ServerRoot и DocumentRoot указывают на существующие папки.httpd.exe вручную (не как службу) в консоли — так вы увидите текст ошибки прямо в окне командной строки.Следуя этим шагам, мы сможем диагностировать и устранить практически любую причину сбоя веб-сервера. После того как Apache запустится и в браузере по адресу http://localhost появится страница приветствия (или сообщение It works!), можно переходить непосредственно к публикации информационной базы из конфигуратора 1С.