Как опубликовать несколько баз 1С на одном веб-сервере: подробное руководство

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

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

Как работает веб-публикация 1С под капотом

Прежде чем приступать к практической настройке, давайте разберем физику процесса. Что происходит, когда мы нажимаем кнопку «Опубликовать» в Конфигураторе? Процесс состоит из двух важнейших шагов:

  1. Создание файла настроек подключения: Для каждой публикуемой базы создается отдельный физический каталог на диске сервера. Внутри этого каталога генерируется специальный XML-файл с именем default.vrd. Этот файл содержит строку подключения к базе (путь к файлу 1С для файловых баз или параметры сервера и имя базы для клиент-серверных версий), а также настройки доступных веб-сервисов, odata-интерфейса и других параметров интеграции.
  2. Регистрация публикации на веб-сервере: Веб-сервер (будь то Apache или IIS) должен узнать, по какому адресу (URL) отвечать на запросы пользователей и где искать соответствующий файл default.vrd. Для этого в конфигурацию веб-сервера вносятся изменения. В Apache автоматически дописывается директива Alias и блок прав <Directory>. В IIS создается виртуальное приложение (Virtual Application) внутри основного сайта.

Пошаговый алгоритм публикации нескольких баз через Конфигуратор

Самый простой и наглядный способ опубликовать несколько баз — сделать это вручную через стандартный интерфейс платформы. Давайте пройдем этот путь по шагам для каждой вашей базы:

  1. Запустим Конфигуратор первой информационной базы от имени администратора операционной системы (это критически важно, так как у платформы должны быть права на изменение конфигурационных файлов веб-сервера).
  2. Перейдем в меню Администрирование и выберем пункт Публикация на веб-сервере...
  3. В открывшемся окне настроек зададим уникальное Имя нашей публикации. Например, для рабочей базы бухгалтерии укажем baza_buh, а для управленческой — baza_up. Именно эти имена будут использоваться в URL-адресе для подключения к базам (например, http://localhost/baza_buh).
  4. В поле Каталог укажем уникальную физическую папку на диске, где будет сохранен файл default.vrd. Внимание: никогда не публикуйте разные базы в одну и ту же папку! Каждой базе необходим свой изолированный каталог, иначе файл настроек будет перезаписан, и одна база сотрет настройки другой. Рекомендуется создать корневую папку C:\inetpub\wwwroot\ (для IIS) или C:\OSPanel\domains\ (для Open Server) и внутри нее создавать подпапки, например: C:\inetpub\wwwroot\baza_buh\ и C:\inetpub\wwwroot\baza_up\.
  5. Выберем установленный веб-сервер в списке веб-серверов.
  6. Нажмем кнопку Опубликовать. Платформа предложит перезапустить веб-сервер для применения изменений — соглашаемся.
  7. Повторим всю процедуру для второй, третьей и последующих баз, обязательно указывая новые уникальные имена публикаций и новые изолированные каталоги на диске.

Специфика настройки в Open Server и уход от localhost

Часто разработчики используют локальные программные среды, такие как Open Server (OSPanel). По умолчанию все базы в таких средах публикуются на адрес localhost, и ссылки на них выглядят громоздко: http://localhost/baza1, http://localhost/baza2 и т.д. Но мы можем настроить систему гораздо изящнее, создав полноценные локальные доменные имена для каждой базы.

Выясним, как это сделать за несколько шагов:

  1. Откроем директорию вашего Open Server и перейдем в папку domains.
  2. Создадим внутри нее новые папки с именами будущих локальных сайтов, например: baza1.local и baza2.local.
  3. Запустим Конфигуратор первой базы 1С. При публикации выберем веб-сервер Apache, а в качестве каталога публикации укажем созданную нами физическую папку .../domains/baza1.local.
  4. Для второй базы выполним аналогичную публикацию в каталог .../domains/baza2.local.
  5. Перезапустим Open Server. Благодаря механизму автоматического определения доменов, веб-сервер сам свяжет папки в директории domains с локальными адресами.
  6. Теперь мы можем обращаться к нашим базам по красивым, понятным и полностью независимым адресам: http://baza1.local и http://baza2.local. Это существенно упрощает отладку веб-сервисов и тестирование работы баз на мобильных устройствах в локальной сети.

Главное техническое ограничение: Разные версии платформ 1С

При администрировании нескольких публикаций 1С на одном веб-сервере администраторы регулярно сталкиваются с серьезной архитектурной проблемой. Разберем её подробно.

Один запущенный рабочий процесс веб-сервера (будь то Apache или IIS) может загрузить в свою оперативную память только один модуль расширения веб-сервера 1С (это файлы библиотек вроде wsap24.dll для Apache 2.4 или wsisapi.dll для IIS). Соответственно, веб-сервер в один момент времени способен работать только с одной конкретной версией платформы 1С.

Что это означает на практике? Если у вас опубликовано три базы, и две из них работают на платформе версии 8.3.23.2040, а третью вы решили обновить до версии 8.3.25.1250, то при попытке опубликовать их на одном веб-сервере возникнет конфликт версий. Веб-сервер либо откажется запускаться, либо не сможет обслужить базу с отличающейся версией платформы.

Как решить эту проблему? Рассмотрим основные варианты:

Автоматизация публикации с помощью утилиты webinst

Если перед вами стоит задача опубликовать не две, а десятки информационных баз, ручная работа в Конфигураторе превращается в рутину. Для решения этой задачи 1С предоставляет штатную консольную утилиту webinst, которая находится в каталоге установленной платформы (например, C:\Program Files\1cv8\8.3.24.1368\bin\webinst.exe).

Проанализируем основные параметры этой утилиты:

Напишем практический пример скрипта автоматизации. Создадим файл publish_bases.bat и добавим в него следующий код:


@echo off
set PLATFORM_PATH="C:\Program Files\1cv8\8.3.24.1368\bin\webinst.exe"

:: Публикация первой базы (Бухгалтерия)
%PLATFORM_PATH% -apache24 -wsdir "baza_buh" -dir "C:\inetpub\wwwroot\baza_buh" -connstr "File=\"C:\1C_Bases\BazaBuh\";"

:: Публикация второй базы (Управление торговлей)
%PLATFORM_PATH% -apache24 -wsdir "baza_ut" -dir "C:\inetpub\wwwroot\baza_ut" -connstr "File=\"C:\1C_Bases\BazaUT\";"

echo Все базы успешно опубликованы!
pause

Запустив этот скрипт от имени Администратора, вы мгновенно опубликуете нужное количество баз без необходимости открывать каждую базу через Конфигуратор.

Оптимизация и изоляция баз на IIS

При развертывании большого количества баз на IIS крайне важно уделить внимание стабильности работы сервера. По умолчанию все виртуальные приложения (наши опубликованные базы 1С) работают в одном общем пуле приложений — DefaultAppPool.

Это несет в себе колоссальные риски: если в одной из баз произойдет критическая ошибка (например, переполнение памяти тяжелым отчетом), зависнет или аварийно завершится весь пул приложений. В результате этого перестанут работать веб-клиенты абсолютно всех остальных баз на этом сервере!

Выясним, как этого избежать:

  1. Откроем Диспетчер служб IIS.
  2. Перейдем в раздел Пулы приложений и создадим отдельные пулы приложений для каждой высоконагруженной или критически важной базы 1С (например, Pool_Baza_Buh и Pool_Baza_UT).
  3. Перейдем к списку наших сайтов, выберем соответствующее виртуальное приложение базы 1С, откроем его Дополнительные параметры и переназначим его на созданный индивидуальный пул приложений.

Такая изоляция гарантирует, что падение одной базы никак не повлияет на работоспособность других. Кроме того, вы сможете индивидуально настраивать лимиты по памяти и расписание перезапуска (Recycling) для каждого пула.

Безопасность и права доступа к каталогам

И в заключение разберем вопрос безопасности, из-за которого чаще всего возникают ошибки вида «Ошибка доступа к файлу конфигурации» или «500 - Внутренняя ошибка сервера».

Веб-сервер работает в операционной системе от имени специального системного пользователя:

Для успешной работы веб-клиента необходимо предоставить этому пользователю полные права (Чтение, Запись, Изменение) на:

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

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

← На главную