Как настроить и использовать два веб-сервера Apache на одном компьютере для 1С?

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

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

Выясним причину: почему Конфигуратор не видит второй сервер?

Проанализируем ситуацию, с которой сталкивается большинство администраторов. При установке второго экземпляра Apache мы вынуждены менять имя службы (например, на Apache2.4_81), так как в системе не может быть двух служб с одинаковым именем. Платформа 1С при попытке публикации через графический интерфейс выполняет поиск в системном реестре Windows по строго определенному пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4.

Если ваша служба называется иначе, Конфигуратор выдает ошибку «Веб-серверы не обнаружены». Кроме того, автоматический поиск ищет конфигурационный файл httpd.conf в стандартных папках программ. Чтобы обойти это ограничение, нам придется использовать ручные методы настройки или специализированные утилиты командной строки.

Способ 1: Метод «Эталонной публикации» и ручного переноса

Этот метод считается самым простым и безопасным, так как позволяет использовать визуальные инструменты 1С для генерации правильных настроек, которые затем переносятся в нужный экземпляр сервера. Рассмотрим этот процесс по шагам:

  1. Подготовка первого сервера: Опубликуйте первую базу (например, на порту 80) обычным способом через Конфигуратор. Это создаст необходимые записи в файле httpd.conf вашего первого экземпляра Apache.
  2. Генерация файла описания: Создайте папку для публикации второй базы (например, C:\BASES\BASE2_WEB). Выполните публикацию второй базы в эту папку, временно используя первый (работающий) веб-сервер. В результате в папке появится файл default.vrd, который содержит все необходимые параметры подключения к базе 1С.
  3. Перенос настроек в конфиг второго сервера: Откройте файл httpd.conf первого сервера и найдите в самом конце блок, добавленный платформой 1С. Он выглядит примерно так:
    
    # 1c publication
    Alias "/Base1" "C:/BASES/BASE1_WEB/"
    <Directory "C:/BASES/BASE1_WEB/">
        AllowOverride None
        Options None
        Require all granted
        SetHandler 1c-application
        ManagedApplicationDescriptor "C:/BASES/BASE1_WEB/default.vrd"
    </Directory>
    
  4. Адаптация для второго сервера: Скопируйте аналогичный блок настроек в httpd.conf второго сервера (который работает на порту 81), заменив пути и псевдонимы (Alias) на соответствующие второй базе.
  5. Проверка путей к модулю: Убедитесь, что во втором конфиге правильно прописана загрузка модуля 1С. Директива LoadModule должна указывать на корректную библиотеку wsap24.dll в папке bin нужной версии платформы.

Способ 2: Использование утилиты webinst

Для автоматизации процесса, особенно когда веб-серверов много, рекомендуется использовать штатную утилиту 1С — webinst. Она позволяет выполнить публикацию без открытия Конфигуратора, передав все параметры через командную строку. Разберем пример команды для публикации на втором экземпляре Apache:


webinst -publish -apache24 -wsdir Base2 -dir "C:\BASES\BASE2_WEB" -connstr "File=""C:\BASES\BASE2"";" -confpath "C:\APACHE\Apache24_81\conf\httpd.conf"

Рассмотрим ключевые параметры этой команды:

После выполнения этой команды необходимо вручную перезапустить службу соответствующего экземпляра Apache через консоль services.msc или командную строку:


net stop Apache2.4_81
net start Apache2.4_81

Важные технические нюансы эксплуатации

Разберем подробнее аспекты, которые часто упускаются из виду, но критически важны для стабильной работы.

1. Соответствие разрядности (Bitness)

Проанализируем частую ошибку: использование 64-битного сервера Apache с 32-битной платформой 1С (или наоборот). Библиотека расширения wsap24.dll должна иметь ту же разрядность, что и исполняемый файл httpd.exe. Если вы используете x64 версию веб-сервера, модуль нужно брать из каталога C:\Program Files\1cv8\номер_версии\bin. Если x86 — из C:\Program Files (x86)\1cv8\номер_версии\bin.

2. Права доступа

Выясним, под каким пользователем запускаются ваши службы. По умолчанию это LocalSystem. У этой учетной записи должны быть права «Чтение и выполнение» на папку bin платформы 1С и полные права на папку с данными информационной базы (если она файловая) и папку с публикацией (где лежит default.vrd).

3. Изоляция процессов через MPM-модули

Рассмотрим ситуацию, когда Apache «падает» или зависает. В среде Windows Apache использует модуль mpm_winnt. По умолчанию он создает один процесс с множеством потоков. Если один поток (запрос к 1С) вызывает критическую ошибку, может упасть весь процесс. Для повышения стабильности при работе с несколькими базами можно настроить параметры в httpd.conf:


<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

Увеличение ThreadsPerChild позволяет обрабатывать больше одновременных подключений, а настройка MaxConnectionsPerChild (если установить значение больше 0) заставит процесс перезапускаться после обработки определенного количества запросов, что помогает бороться с утечками памяти.

Альтернативный подход: Использование Reverse Proxy

Вместо того чтобы заставлять пользователей вводить порты (80, 81, 8080), рассмотрим более профессиональное решение. Вы можете оставить один Apache на 80 порту в качестве «входных ворот» (Proxy), который будет перенаправлять запросы на другие экземпляры или даже другие серверы.

Для этого в основном httpd.conf нужно включить модули proxy_module и proxy_http_module, а затем настроить проксирование:


ProxyPass "/base2" "http://localhost:81/base2"
ProxyPassReverse "/base2" "http://localhost:81/base2"

В этом случае пользователи всегда будут обращаться по стандартному адресу http://server-name/base2, а ваш сервер сам перенаправит трафик на внутренний порт 81. Это значительно упрощает администрирование и настройку клиентских мест.

Резюме действий

Подведем итог. Чтобы успешно запустить два Apache на одном ПК, необходимо:

  1. Установить экземпляры в разные папки и зарегистрировать службы с уникальными именами через httpd.exe -k install -n "ИмяСлужбы".
  2. Назначить разные порты в директиве Listen каждого конфига.
  3. Выполнять публикацию либо вручную через копирование блоков <Directory>, либо через webinst с явным указанием пути к нужному httpd.conf.
  4. Следить за соответствием разрядности модулей и правами доступа учетных записей служб.

Следуя этим инструкциям, вы сможете создать гибкую и отказоустойчивую среду для работы веб-сервисов 1С.

← На главную