Как настроить веб-сервис 1С при совместной работе серверов 1С 8.2 и 8.3 на одном сервере под Apache

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

При переходе с устаревших версий платформ на новые ИТ-специалисты часто сталкиваются с необходимостью временного или постоянного сосуществования двух серверов «1С:Предприятие» (например, 8.2 и 8.3) на одной физической или виртуальной машине. Особую сложность в такой конфигурации представляет публикация и стабильная работа веб-сервисов. Типичная проблема: после переноса рабочей базы на платформу 8.3 веб-сервис отказывается работать через новую платформу, а при попытке перепубликации веб-сервер Apache перестает запускаться.

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

Почему падает Apache при публикации базы 1С 8.3?

Рассмотрим классическую ситуацию: на сервере работает 32-разрядный веб-сервер Apache. Ранее он успешно взаимодействовал с 32-разрядным сервером 1С 8.2, используя библиотеку wsap22.dll из каталога C:/Program Files (x86)/1cv82/.... После переноса базы на платформу 1С 8.3 (которая чаще всего устанавливается как 64-разрядное приложение в каталог C:/Program Files/1cv8/...) выполняется перепубликация веб-сервиса.

При публикации конфигуратор 1С изменяет конфигурационный файл Apache (httpd.conf), прописывая в него путь к новой 64-битной библиотеке wsap22.dll или wsap24.dll:


# Пример некорректной загрузки модуля для 32-битного Apache
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.15.1565/bin/wsap22.dll"

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

Решение проблемы несовместимости разрядностей

У нас есть два пути решения проблемы несовместимости разрядностей веб-сервера и платформы 1С. Рассмотрим каждый из них.

Вариант 1. Установка 32-разрядного клиента 1С 8.3 (технологической платформы)

Если на сервере обязательно должен оставаться 32-битный Apache, вам необходимо установить на этот же сервер 32-разрядную версию технологической платформы 1С 8.3 (тонкий или толстый клиент) той же версии, что и серверная часть. В результате в каталоге C:/Program Files (x86)/1cv8/8.3.X.X/bin/ появится совместимая 32-битная библиотека wsap22.dll (или wsap24.dll). При публикации базы укажите путь именно к этому файлу.

Вариант 2. Переход на 64-разрядный веб-сервер Apache

Это наиболее современный и производительный вариант. Вам потребуется удалить текущую 32-разрядную версию Apache и установить 64-разрядную сборку веб-сервера. После этого 64-битный Apache сможет без проблем загружать библиотеку wsap24.dll из стандартного 64-разрядного каталога установки 1С 8.3:


# Корректная загрузка 64-битного модуля для Apache 2.4
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.15.1565/bin/wsap24.dll"

Важное замечание по выбору версии библиотеки: Обратите внимание на имя файла модуля. Библиотека wsap22.dll предназначена только для устаревшего веб-сервера Apache 2.2. Если вы используете современный Apache 2.4, обязательно должна быть подключена библиотека wsap24.dll. Использование несоответствующей версии библиотеки приведет к невозможности старта веб-сервера.

Пошаговый алгоритм диагностики и настройки веб-сервиса

Проанализируем последовательность действий, которая гарантирует успешный запуск веб-сервисов на новой платформе при сохранении старого сервера 1С 8.2.

  1. Остановите службу сервера 1С 8.2. На время проведения пусконаладочных работ рекомендуется полностью остановить службу «Агент сервера 1С:Предприятие 8.2», чтобы исключить влияние старых сессий и блокировок портов.
  2. Проверьте конфигурацию Apache через командную строку. Чтобы не гадать, почему веб-сервер не запускается, откройте командную строку (cmd) от имени администратора, перейдите в каталог bin вашего Apache и выполните команду тестирования конфигурации:
    
    cd "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin"
    httpd.exe -t
    
    Утилита мгновенно укажет на проблемную строку в файле httpd.conf и расшифрует причину ошибки (например, укажет на несовместимость разрядности или отсутствие файла).
  3. Очистите старые публикации. Перед новой публикацией вручную удалите физическую папку старой публикации (где находился файл default.vrd) и удалите соответствующие записи из конфигурационного файла Apache httpd.conf. Это предотвратит наложение старых директив на новые.
  4. Выполните публикацию из правильного Конфигуратора. Запустите Конфигуратор 1С 8.3 обязательно от имени администратора. При этом запускаемый Конфигуратор должен соответствовать разрядности вашего веб-сервера Apache. Выберите в меню Администрирование -> Публикация на веб-сервере, настройте необходимые параметры и нажмите кнопку «Опубликовать».

Настройка портов и файла default.vrd

После того как веб-сервер Apache успешно запустился с новой библиотекой 1С 8.3, веб-сервис все еще может выдавать ошибки уровня СУБД (например, Table not found "Константы"). Это происходит из-за того, что запросы веб-сервиса маршрутизируются на старый сервер 1С 8.2, который обращается к той же базе данных SQL, но имеет другую структуру метаданных.

Выясним, почему это происходит. По умолчанию сервер 1С 8.2 работает на стандартном порту 1541. При установке второго сервера (1С 8.3) его службы обычно переводят на альтернативные порты (например, диапазон 1700-1799, где порт кластера — 1741).

Если в файле описания публикации default.vrd не указать порт нового сервера принудительно, веб-сервис попытается подключиться к порту по умолчанию (то есть к 1541, где все еще отвечает сервер 1С 8.2).

Откройте файл default.vrd (он находится в каталоге публикации, который вы указывали при публикации в Конфигураторе) любым текстовым редактором и найдите строку подключения к базе данных. Отредактируйте ее, явно указав порт сервера 1С 8.3:


<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/MyDatabase"
       ib="Srvr=&quot;MyServerName:1741&quot;;Ref=&quot;MyDatabaseName&quot;;">
    <ws>
        <point name="MyWebService" alias="MyWebService.1cws" enable="true"/>
    </ws>
</point>

Обратите внимание на конструкцию Srvr="MyServerName:1741". Явное указание порта 1741 гарантирует, что веб-сервер Apache перенаправит запрос именно в кластер серверов 1С 8.3, избегая обращений к старому серверу 8.2.

Решение проблемы с зависимостями библиотек (PATH)

Иногда возникает ситуация, когда разрядности Apache и DLL полностью совпадают, но веб-сервер все равно выдает ошибку при старте. Это связано с тем, что модуль wsap24.dll при инициализации пытается динамически подгрузить другие системные библиотеки 1С из своего рабочего каталога bin.

Чтобы операционная система Windows могла беспрепятственно находить сопутствующие библиотеки 1С, выполните следующие действия:

  1. Откройте свойства системы Windows (сочетание клавиш Win + Pause/Break) и перейдите в раздел «Дополнительные параметры системы».
  2. Нажмите кнопку «Переменные среды».
  3. В разделе «Системные переменные» найдите переменную Path и нажмите «Изменить».
  4. Добавьте в конец списка путь к каталогу bin установленной платформы 1С 8.3 (например, C:\Program Files\1cv8\8.3.15.1565\bin).
  5. Сохраните изменения и обязательно перезагрузите операционную систему (или службу веб-сервера Apache), чтобы обновленные переменные окружения вступили в силу.

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

← На главную