При организации учебного класса или небольшого рабочего пространства часто возникает вопрос: можно ли использовать виртуальный Linux-сервер с веб-сервером Apache для публикации файловой базы и раздать общий комплект из 20 программных лицензий клиентам без приобретения серверной лицензии «1С:Предприятие»? Рассмотрим подробно, как работает данный механизм, какие технические ограничения накладывает файловая база данных и как правильно настроить окружение для стабильной работы.
Разберем базовую схему лицензирования. Если в организации отсутствует лицензия на сервер 1С:Предприятия (нет возможности поднять полноценный кластер серверов), публикация файловой информационной базы через веб-сервер (в данном случае Apache под управлением Linux) действительно позволяет обойтись без локальной активации лицензий на каждом рабочем месте.
Для реализации этого сценария выполняются следующие условия:
wsap24.so).webinst или вручную формируется файл default.vrd.http://имя_сервера/имя_базы.В такой конфигурации именно процесс веб-сервера обращается к файлу лицензии и выделяет сеансы подключающимся пользователям. Однако здесь действует строгий ряд ограничений, о которых необходимо знать заранее.
Проанализируем специфику раздачи лицензий веб-сервером, с которой неизбежно столкнется системный администратор:
Выясним частую причину, по которой клиенты не могут получить лицензию от веб-сервера Apache: права доступа к файлам лицензии в Linux. По умолчанию веб-сервер запускается от имени непривилегированного пользователя операционной системы (например, www-data или apache).
Если активация лицензии была выполнена под пользователем root, файл лицензии с расширением .lic нередко сохраняется в каталоге суперпользователя. Веб-сервер не имеет туда доступа, в результате чего клиенты получают ошибку «Не найдена лицензия».
Чтобы Apache корректно считывал лицензию, выполним следующие шаги:
/var/1C/licenses.
chown -R www-data:www-data /var/1C/licenses
chmod 755 /var/1C/licenses
chmod 644 /var/1C/licenses/*.lic
mpm_prefork, так как библиотека wsap24.so демонстрирует максимальную стабильность именно в процессах с изолированной памятью, снижая риск сбоев под нагрузкой.Рассмотрим проблему «зависания» лицензий. При аварийном завершении работы тонкого клиента или обрыве сетевого соединения сеанс на сервере может удерживать лицензию до тех пор, пока не истечет системный таймаут пула соединений. Для учебного класса это критично: студент закрыл окно, перезагрузился, пробует войти снова — а свободных лицензий уже нет.
Для предотвращения этой проблемы настроим параметры пула в файле публикации 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="/home/1c/bases/study_base";">
<pool timeout="60" min="0" max="25" />
</point>
Параметр timeout="60" задает время удержания неактивного соединения в секундах, что позволяет быстрее освобождать лицензии при отключении пользователей.
Отвечая на вопрос о комфорте одновременной работы 20 клиентов с файловой базой: комфортной одновременной работы не будет. Проанализируем природу файлового режима 1С.
В файловой базе данных (файл 1Cv8.1CD) уровень транзакционных блокировок устроен иначе, чем в СУБД вроде PostgreSQL или MS SQL Server. При записи документа или проведении операции 1С блокирует не отдельные записи, а таблицы целиком. В учебном классе студенты часто выполняют однотипные операции синхронно: одновременно нажимают «Провести» или открывают одни и те же журналы. Это гарантированно вызовет каскад ошибок «Конфликт блокировок при выполнении транзакции» и приведет к зависаниям интерфейса.
Кроме того, при интенсивной записи 20 процессами Apache в один физический файл базы многократно возрастает риск разрушения внутренней структуры файла 1Cv8.1CD при любом сбое веб-сервера.
Для стабильного решения задачи выделим альтернативные подходы: