Публикация информационной базы 1С на веб-сервере — стандартная задача для любого системного администратора или разработчика, желающего предоставить пользователям доступ к системе через веб-браузер или тонкий клиент. Однако, когда баз становится больше одной, возникают закономерные вопросы: как сделать так, чтобы они не конфликтовали между собой, как правильно распределить ресурсы сервера и как организовать удобный доступ без бесконечных путаниц в адресах? В этой статье мы подробно разберем все этапы настройки, рассмотрим тонкости работы различных веб-серверов и изучим способы автоматизации этого процесса.
Прежде чем приступать к практической настройке, давайте разберем физику процесса. Что происходит, когда мы нажимаем кнопку «Опубликовать» в Конфигураторе? Процесс состоит из двух важнейших шагов:
default.vrd. Этот файл содержит строку подключения к базе (путь к файлу 1С для файловых баз или параметры сервера и имя базы для клиент-серверных версий), а также настройки доступных веб-сервисов, odata-интерфейса и других параметров интеграции.default.vrd. Для этого в конфигурацию веб-сервера вносятся изменения. В Apache автоматически дописывается директива Alias и блок прав <Directory>. В IIS создается виртуальное приложение (Virtual Application) внутри основного сайта.Самый простой и наглядный способ опубликовать несколько баз — сделать это вручную через стандартный интерфейс платформы. Давайте пройдем этот путь по шагам для каждой вашей базы:
baza_buh, а для управленческой — baza_up. Именно эти имена будут использоваться в URL-адресе для подключения к базам (например, http://localhost/baza_buh).default.vrd. Внимание: никогда не публикуйте разные базы в одну и ту же папку! Каждой базе необходим свой изолированный каталог, иначе файл настроек будет перезаписан, и одна база сотрет настройки другой. Рекомендуется создать корневую папку C:\inetpub\wwwroot\ (для IIS) или C:\OSPanel\domains\ (для Open Server) и внутри нее создавать подпапки, например: C:\inetpub\wwwroot\baza_buh\ и C:\inetpub\wwwroot\baza_up\.Часто разработчики используют локальные программные среды, такие как Open Server (OSPanel). По умолчанию все базы в таких средах публикуются на адрес localhost, и ссылки на них выглядят громоздко: http://localhost/baza1, http://localhost/baza2 и т.д. Но мы можем настроить систему гораздо изящнее, создав полноценные локальные доменные имена для каждой базы.
Выясним, как это сделать за несколько шагов:
domains.baza1.local и baza2.local..../domains/baza1.local..../domains/baza2.local.domains с локальными адресами.http://baza1.local и http://baza2.local. Это существенно упрощает отладку веб-сервисов и тестирование работы баз на мобильных устройствах в локальной сети.При администрировании нескольких публикаций 1С на одном веб-сервере администраторы регулярно сталкиваются с серьезной архитектурной проблемой. Разберем её подробно.
Один запущенный рабочий процесс веб-сервера (будь то Apache или IIS) может загрузить в свою оперативную память только один модуль расширения веб-сервера 1С (это файлы библиотек вроде wsap24.dll для Apache 2.4 или wsisapi.dll для IIS). Соответственно, веб-сервер в один момент времени способен работать только с одной конкретной версией платформы 1С.
Что это означает на практике? Если у вас опубликовано три базы, и две из них работают на платформе версии 8.3.23.2040, а третью вы решили обновить до версии 8.3.25.1250, то при попытке опубликовать их на одном веб-сервере возникнет конфликт версий. Веб-сервер либо откажется запускаться, либо не сможет обслужить базу с отличающейся версией платформы.
Как решить эту проблему? Рассмотрим основные варианты:
8.3.23 на порту 80, а второй с версией 1С 8.3.25 на порту 81).Если перед вами стоит задача опубликовать не две, а десятки информационных баз, ручная работа в Конфигураторе превращается в рутину. Для решения этой задачи 1С предоставляет штатную консольную утилиту webinst, которая находится в каталоге установленной платформы (например, C:\Program Files\1cv8\8.3.24.1368\bin\webinst.exe).
Проанализируем основные параметры этой утилиты:
-apache24 (или -iis) — тип используемого веб-сервера.-wsdir — уникальное имя публикации в URL.-dir — физический каталог, где будет создан файл default.vrd.-connstr — строка подключения к информационной базе.Напишем практический пример скрипта автоматизации. Создадим файл 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 крайне важно уделить внимание стабильности работы сервера. По умолчанию все виртуальные приложения (наши опубликованные базы 1С) работают в одном общем пуле приложений — DefaultAppPool.
Это несет в себе колоссальные риски: если в одной из баз произойдет критическая ошибка (например, переполнение памяти тяжелым отчетом), зависнет или аварийно завершится весь пул приложений. В результате этого перестанут работать веб-клиенты абсолютно всех остальных баз на этом сервере!
Выясним, как этого избежать:
Pool_Baza_Buh и Pool_Baza_UT).Такая изоляция гарантирует, что падение одной базы никак не повлияет на работоспособность других. Кроме того, вы сможете индивидуально настраивать лимиты по памяти и расписание перезапуска (Recycling) для каждого пула.
И в заключение разберем вопрос безопасности, из-за которого чаще всего возникают ошибки вида «Ошибка доступа к файлу конфигурации» или «500 - Внутренняя ошибка сервера».
Веб-сервер работает в операционной системе от имени специального системного пользователя:
IUSR или группа пользователей IIS_IUSRS.www-data.Для успешной работы веб-клиента необходимо предоставить этому пользователю полные права (Чтение, Запись, Изменение) на:
default.vrd (чтобы веб-сервер мог корректно читать настройки).Помните о важном правиле безопасности: при публикации баз разных клиентов на одном физическом сервере никогда не давайте веб-серверу избыточные права «для всех». Изолируйте папки с базами данных и выдавайте права точечно, чтобы скомпрометированная через веб одна база не позволила злоумышленникам получить доступ к файлам соседних информационных баз.