Как организовать раздачу программных лицензий 1С через веб-сервер Apache без сервера 1С:Предприятия?

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

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

Принцип работы программных лицензий через веб-сервер

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

Для реализации этого сценария выполняются следующие условия:

  1. Файловая база 1С физически размещается на Linux-сервере.
  2. На сервере устанавливается веб-сервер Apache и модуль расширения веб-сервисов 1С (файл wsap24.so).
  3. На этом же Linux-сервере активируется многопользовательский пин-код из комплекта на 20 рабочих мест.
  4. База публикуется на веб-сервере с помощью утилиты webinst или вручную формируется файл default.vrd.
  5. На клиентских машинах устанавливается тонкий клиент 1С, а в строке подключения указывается адрес веб-публикации вида http://имя_сервера/имя_базы.

В такой конфигурации именно процесс веб-сервера обращается к файлу лицензии и выделяет сеансы подключающимся пользователям. Однако здесь действует строгий ряд ограничений, о которых необходимо знать заранее.

Технические ограничения и особенности работы схемы

Проанализируем специфику раздачи лицензий веб-сервером, с которой неизбежно столкнется системный администратор:

  1. Расход лицензий на сеанс, а не на компьютер. При активации многопользовательской лицензии на веб-сервере лицензия выдается на каждое соединение. Если студент запустит базу в тонком клиенте и параллельно откроет ее же во второй вкладке или окне, с сервера спишутся сразу две лицензии. Комплекта из 20 лицензий при таком поведении пользователей может не хватить на 20 компьютеров.
  2. Только управляемые формы. Веб-сервер и тонкий клиент работают исключительно с конфигурациями на базе управляемого интерфейса. Конфигурации на обычных формах запустить через веб-сервер невозможно.
  3. Недоступность Конфигуратора и толстого клиента для клиентов. Запустить Конфигуратор или толстый клиент для доработки базы пользователи смогут только непосредственно на том компьютере, где активирована лицензия (то есть локально на Linux-сервере). Студенты с рабочих станций через веб-подключение зайти в Конфигуратор не смогут.
  4. Сложность создания индивидуальных баз. Если учебная программа предполагает, что каждый учащийся создает свою собственную информационную базу с нуля, администратору придется каждую такую базу предварительно создавать на сервере, выдавать на нее права и публиковать в Apache.
  5. Привязка лицензии к виртуальной машине. Программная лицензия жестко привязывается к ключевым параметрам виртуального сервера: количеству ядер, объему памяти, MAC-адресу, идентификаторам дисков и операционной системе. Любое изменение конфигурации виртуальной машины на гипервизоре приведет к тому, что лицензия станет недействительной, и потребуется использовать резервный пин-код.

Размещение файлов лицензий и права доступа в Linux

Выясним частую причину, по которой клиенты не могут получить лицензию от веб-сервера Apache: права доступа к файлам лицензии в Linux. По умолчанию веб-сервер запускается от имени непривилегированного пользователя операционной системы (например, www-data или apache).

Если активация лицензии была выполнена под пользователем root, файл лицензии с расширением .lic нередко сохраняется в каталоге суперпользователя. Веб-сервер не имеет туда доступа, в результате чего клиенты получают ошибку «Не найдена лицензия».

Чтобы Apache корректно считывал лицензию, выполним следующие шаги:

  1. Убедимся, что файл лицензии размещен в общем общесистемном каталоге /var/1C/licenses.
  2. Предоставим пользователю веб-сервера полные права на чтение каталога и файла:
    
    chown -R www-data:www-data /var/1C/licenses
    chmod 755 /var/1C/licenses
    chmod 644 /var/1C/licenses/*.lic
    
  3. В конфигурации самого веб-сервера Apache на платформе Linux рекомендуется использовать модель мультипроцессорной обработки mpm_prefork, так как библиотека wsap24.so демонстрирует максимальную стабильность именно в процессах с изолированной памятью, снижая риск сбоев под нагрузкой.

Управление сеансами и настройка файла default.vrd

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

Для предотвращения этой проблемы настроим параметры пула в файле публикации default.vrd. В секцию публикации добавим явные ограничения времени жизни неактивных сессий:


<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="/study_base"
       ib="File=&quot;/home/1c/bases/study_base&quot;;">
    <pool timeout="60" min="0" max="25" />
</point>

Параметр timeout="60" задает время удержания неактивного соединения в секундах, что позволяет быстрее освобождать лицензии при отключении пользователей.

Комфорт работы: справится ли файловая база с 20 пользователями?

Отвечая на вопрос о комфорте одновременной работы 20 клиентов с файловой базой: комфортной одновременной работы не будет. Проанализируем природу файлового режима 1С.

В файловой базе данных (файл 1Cv8.1CD) уровень транзакционных блокировок устроен иначе, чем в СУБД вроде PostgreSQL или MS SQL Server. При записи документа или проведении операции 1С блокирует не отдельные записи, а таблицы целиком. В учебном классе студенты часто выполняют однотипные операции синхронно: одновременно нажимают «Провести» или открывают одни и те же журналы. Это гарантированно вызовет каскад ошибок «Конфликт блокировок при выполнении транзакции» и приведет к зависаниям интерфейса.

Кроме того, при интенсивной записи 20 процессами Apache в один физический файл базы многократно возрастает риск разрушения внутренней структуры файла 1Cv8.1CD при любом сбое веб-сервера.

Сравнение вариантов развертывания и альтернативы

Для стабильного решения задачи выделим альтернативные подходы:

  1. Активация 20 однопользовательских лицензий на клиентах. В комплекте лицензий всегда идут альтернативные пин-коды: один на 20 мест или 20 штук по одной. Если активировать лицензии на самих клиентских компьютерах, учет ведется на уровне устройства. Студент сможет открывать несколько баз и запускать локальный Конфигуратор без перерасхода лицензий.
  2. Использование веб-клиента. Если база уже опубликована на Apache, на клиентах можно вообще не ставить тонкий клиент. Подключение через обычный браузер (Chrome, Firefox) экономит время системного администратора при обновлении версии платформы, так как обновлять придется только серверную часть.
  3. Академическая лицензия на сервер 1С. Для учебных заведений фирмой «1С» предоставляется специализированная лицензия для учебного процесса по доступной стоимости. Развертывание клиент-серверного варианта на связке «Сервер 1С:Предприятия + PostgreSQL» полностью решает проблемы с табличными блокировками файловой базы и позволяет 20 студентам работать одновременно без взаимных зависаний.
← На главную