Создание демонстрационного сервера — отличный способ показать потенциальным клиентам или разработчикам возможности ваших программных продуктов (будь то полноценные конфигурации, расширения или внешние обработки, такие как популярные загрузчики прайс-листов). Главная задача при этом — сделать так, чтобы каждый пользователь попадал в изолированную чистую среду, мог проводить там любые эксперименты, а после его выхода база автоматически очищалась и возвращалась в исходное состояние.
В этой статье мы подробно разберем, как спроектировать и развернуть такую систему с нуля, используя различные архитектурные подходы: от простых файловых пулов до профессионального разделения данных и аренды облачных серверов.
Для небольшого количества одновременных пользователей (например, до 5 лицензий) наиболее простым и экономичным является метод создания пула заранее подготовленных чистых баз данных. Рассмотрим пошагово, как работает эта схема:
template.1CD.db1, db2, ..., db5). В каждую из них копируется эталонный файл.Apache или IIS. Например, по адресам:
myserver.ru/demo1myserver.ru/demo2template.1CD. База снова объявляется свободной для следующего гостя.Для завершения сеансов и копирования файлов баз можно использовать следующий пример системного скрипта:
// Пример bat-скрипта очистки и перезаливки файловой базы
taskkill /F /FI "IMAGENAME eq 1cv8*"
timeout /t 5
del /q /f "C:\inetpub\wwwroot\demo1\1Cv8.1CD"
copy /y "C:\templates\template.1CD" "C:\inetpub\wwwroot\demo1\1Cv8.1CD"
Если мы не хотим плодить множество физических баз данных на диске, что создает колоссальную нагрузку на дисковую подсистему (IOPS) и оперативную память сервера, проанализируем встроенный механизм платформы 1С — Разделение данных (технология, аналогичная 1С:Fresh).
Этот подход позволяет держать всего одну физическую базу данных (файловую или клиент-серверную), разделяя её логически для каждого пользователя:
ОбластьДанных) с типом значения Число.Разделять.Для автоматической маршрутизации пользователей по областям данных используется конфигурационный файл публикации default.vrd. В секции <zones> мы можем сопоставлять конкретные URL-адреса с областями данных в одной базе:
<zones>
<zone name="user1" value="1" />
<zone name="user2" value="2" />
</zones>
По умолчанию веб-сервер удерживает соединение с клиентом в течение 20 минут после того, как он закрыл вкладку браузера. Это критично, если у нас ограниченный пул лицензий (например, всего 5 пользовательских лицензий 1С). Разберем, как уменьшить это время удержания сессии.
Для решения этой проблемы необходимо внести изменения в файл публикации default.vrd, который находится в папке публикации вашей базы на веб-сервере. Мы можем ограничить время жизни сеанса и настроить пул соединений с помощью параметров sessionMaxAge и poolTimeout.
Пример настройки файла default.vrd с минимальным временем удержания лицензии:
<?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="/demo"
ib="File="C:\DemoBase";">
<ws enable="false"/>
<httpServices publishByDefault="true"/>
<standardOdata enable="false"/>
<properties sessionMaxAge="300" poolTimeout="10" poolSize="5"/>
</point>
В данном примере параметр sessionMaxAge="300" ограничивает максимальное время жизни неактивной сессии 5 минутами (300 секунд), после чего лицензия автоматически освобождается для следующего пользователя.
Также рекомендуется оптимизировать настройки веб-сервера Apache. В конфигурационном файле httpd.conf уменьшим время ожидания закрытия сетевого соединения:
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Проанализируем ситуацию, когда пользователи начинают загружать в демонстрационную базу реальные тяжелые файлы (например, прайс-листы поставщиков на 400 000 - 500 000 строк).
При использовании стандартной 32-разрядной версии платформы 1С:Предприятие процесс обработки таких объемов данных гарантированно приведет к ошибке нехватки памяти (Out of Memory). 32-битный процесс физически не может адресовать более 2 ГБ оперативной памяти (в некоторых режимах до 4 ГБ).
Практические выводы по системным требованиям демонстрационного сервера:
При развертывании демонстрационного сервера всегда возникает дилемма: использовать собственный рабочий компьютер или арендовать виртуальный сервер (VPS).
Вариант 1: Локальный ПК с ОС Windows 10
Подходит исключительно для первичного тестирования концепции. Windows 10 имеет встроенные лицензионные ограничения на количество одновременных сетевых подключений к IIS, а домашний интернет-канал часто не обладает статическим IP-адресом и достаточной пропускной способностью на отдачу. Потребуется настраивать проброс портов на роутере и использовать сервисы динамических доменных имен.
Вариант 2: Аренда VPS с Windows Server или Linux
Наиболее надежное профессиональное решение. Провайдер предоставляет выделенный статический IP-адрес, гарантированную ширину канала связи (от 100 Мбит/с) и бесперебойное питание. Кроме того, облачные провайдеры позволяют легко масштабировать ресурсы (добавить ядра процессора или оперативную память) «на лету» без необходимости покупки дорогостоящих комплектующих.
Начиная демонстрацию собственных решений, мы можем заключить партнерское соглашение с крупными хостинг-провайдерами 1С. Это позволит предлагать клиентам готовое облачное рабочее место с уже предустановленным вашим программным продуктом, получая дополнительный доход по партнерской программе.