Как выбрать нужную версию платформы 1С при публикации на веб-сервере?

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

При работе с базами 1С часто возникает ситуация, когда на одном сервере установлено сразу несколько версий платформы. Если мы публикуем базу на веб-сервере (например, Apache или IIS), важно понимать, как система определяет, какую именно версию платформы использовать для обработки запросов. Разберем ситуацию, когда публикация выполняется из конфигуратора одной версии, а веб-сервер по умолчанию стартует с другой, и выясним причину такого поведения.

Определение версии платформы в конфигурации Apache

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

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

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

В этой строке явно указан путь к динамической библиотеке wsap24.dll, которая находится в каталоге конкретной версии платформы (в нашем примере — 8.3.25.1394). Если нам необходимо изменить версию 1С для веб-доступа, мы должны вручную изменить этот путь в файле httpd.conf так, чтобы он указывал на каталог с нужной нам версией. После изменения конфигурационного файла службу Apache необходимо перезапустить.

Важные ограничения и нюансы разрядности

Разберем по шагам архитектурные требования, которые необходимо соблюдать при публикации баз:

  1. Совпадение разрядности: Битность веб-сервера и устанавливаемых веб-компонент 1С должна строго совпадать. Если мы используем 64-битный веб-сервер, путь в конфигурационном файле должен вести к 64-битной версии платформы 1С.
  2. Ошибка при несовпадении: Если попытаться загрузить 32-битную dll-библиотеку платформы в 64-битный процесс Apache, веб-сервер выдаст ошибку 500 или его служба завершится аварийно при старте.
  3. Монопольность модуля: Один процесс Apache не поддерживает одновременную загрузку нескольких модулей _1cws_module. Попытка прописать несколько директив LoadModule с путями к разным версиям платформы приведет к ошибке запуска веб-сервера.

Как запустить несколько баз на разных версиях 1С одновременно?

Часто системным администраторам требуется, чтобы две разные базы работали через веб-клиент на двух разных версиях платформы одновременно. Рассмотрим, как это можно реализовать на разных веб-серверах.

Решение для Apache: Поскольку в одном инстансе (экземпляре) Apache нельзя опубликовать и запустить две разные версии 1С, потребуется создать несколько независимых служб Apache на одном физическом сервере. Каждому такому экземпляру необходимо назначить:

  1. Свой собственный конфигурационный файл httpd.conf со ссылкой на нужную версию платформы.
  2. Отдельную папку для хранения логов.
  3. Уникальный сетевой порт (например, порт 80 для одной версии 1С и порт 8080 для второй).

Решение для IIS (Internet Information Services): В отличие от Apache, на одном веб-сервере IIS можно настроить одновременную работу баз на разных версиях платформы без создания дополнительных инстансов веб-сервера. Сделаем это следующим образом: каждую веб-публикацию необходимо привязать к отдельному «Пулу приложений». Каждый пул запускает свой собственный изолированный рабочий процесс в операционной системе, который подгружает нужную версию библиотеки wsisapi.dll. Таким образом, конфликта между версиями не возникает.

Альтернативные способы публикации и очистка кэша

Для более предсказуемого результата при публикации баз, особенно в среде с несколькими установленными платформами, рассмотрим использование консольной утилиты webinst. Эта утилита располагается в папке bin каждой конкретной версии 1С.

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

Также обратим внимание на важный нюанс при обновлении или откате платформы. При ручном изменении пути к dll-файлу веб-модуля недостаточно просто перезапустить службу веб-сервера. Настоятельно рекомендуется предварительно завершить все зависшие сеансы и очистить кэш веб-сервера. Если этого не сделать, пользователи могут столкнуться с нестабильной работой веб-клиента из-за устаревших кэшированных данных.

← На главную