← На главную
Перевод информационной базы «1С:Предприятие» из файлового режима работы в клиент-серверный — это стандартный шаг при росте компании, увеличении объема данных или количества одновременно работающих пользователей. Для небольших офисов отличным и экономичным решением является покупка лицензии «1С:Предприятие 8.3. Сервер МИНИ на 5 подключений». Однако на практике системные администраторы часто сталкиваются с ситуацией: в файловом режиме через веб-сервер все работало прекрасно, а после развертывания сервера «1С» и СУБД внешние пользователи (особенно работающие через веб-клиент или тонкий клиент по HTTP) начинают получать ошибку «Нет свободной лицензии».
В рамках этой статьи мы подробно разберем, почему возникает эта проблема, детально проанализируем разницу в механизмах раздачи лицензий веб-сервером и сервером приложений «1С», а также выясним причины загадочного поведения платформы, когда один пользователь может запускать неограниченное число сеансов локально, обходя номинальные ограничения Сервера МИНИ.
Разница в механизмах раздачи лицензий: файловый режим против клиент-серверного
Для того чтобы понять корень проблемы, проанализируем, как именно происходит авторизация и получение лицензии в различных режимах работы системы.
Когда ваша база данных работала в файловом режиме и была опубликована на веб-сервере (например, Apache или IIS), архитектура распределения лицензий выглядела следующим образом:
- Клиент (веб-браузер или тонкий клиент) отправляет запрос на веб-сервер.
- Модуль расширения веб-сервера «1С» самостоятельно обращается к файлам программных лицензий (с расширением
.lic), которые расположены на этом компьютере в общедоступных каталогах (например, C:\ProgramData\1C\licenses).
- Веб-сервер сам выделяет лицензию из доступного пула и передает сессию клиенту. Сервер приложений «1С» в этой схеме вообще не участвует, так как его физически нет.
Когда вы перевели базу в клиент-серверный режим (на базе MS SQL Server или PostgreSQL) и установили «1С:Сервер МИНИ», логика работы кардинально изменилась:
- Веб-сервер больше не занимается непосредственным поиском и раздачей файлов лицензий. Он выступает лишь транслятором («прокси-сервером») между клиентом и службой сервера «1С» (процессами
rmngr и rphost).
- Запрос на получение лицензии уходит на сервер «1С:Предприятия».
- Именно служба сервера «1С» должна найти подходящую программную или аппаратную лицензию и выдать ее сеансу пользователя. Если служба сервера не может получить доступ к файлам лицензий или на сервере установлены лицензии не того типа, удаленный клиент получит отказ с сообщением «Нет свободной лицензии».
Шаг 1. Включение раздачи лицензий сервером «1С»
Первое, что необходимо сделать при возникновении подобных симптомов — проверить настройки самой информационной базы в кластере серверов «1С». Рассмотрим эту процедуру по шагам:
- Запустите утилиту «Администрирование серверов 1С:Предприятия» (консоль кластера).
- Раскройте дерево вашего центрального сервера, перейдите в ветку «Информационные базы».
- Найдите вашу базу данных, нажмите на нее правой кнопкой мыши и выберите пункт «Свойства».
- В открывшемся диалоговом окне найдите параметр
Разрешить выдачу лицензий сервером 1С:Предприятия (или «Разрешить выдачу лицензий»).
- Убедитесь, что для этого параметра установлено значение «Да» (или установлено в положение «Истина»). Если там указано «Нет», сервер принципиально не будет пытаться раздавать клиентам сетевые лицензии, предполагая, что у каждого пользователя установлена своя локальная лицензия на рабочем компьютере.
После изменения этого параметра обязательно нажмите кнопку «Применить» или «ОК».
Шаг 2. Размещение и тип программных лицензий на сервере
Даже если флаг раздачи лицензий сервером включен, пользователи все равно могут не входить в систему. Выясним причину, которая часто кроется в путанице между однопользовательскими и многопользовательскими лицензиями.
Программные клиентские лицензии «1С» поставляются в виде комплектов (например, на 5, 10, 20 рабочих мест). В комплекте всегда идет два типа пин-кодов:
- Пин-коды для активации однопользовательских лицензий (каждый пин-код активируется строго на конкретном клиентском компьютере).
- Пин-коды для активации многопользовательской лицензии (один пин-код активирует весь пул лицензий на сервере приложений).
Важное правило: Служба сервера «1С» умеет раздавать клиентам (включая веб-клиентов) только те лицензии, которые были активированы на самом сервере как многопользовательские. Если вы ранее активировали комплект из 5 лицензий на сервере как 5 отдельных однопользовательских лицензий (используя соответствующие пин-коды для каждого рабочего места), то сервер «1С» не сможет раздать их удаленным веб-клиентам. В этом случае вам потребуется выполнить повторную активацию лицензий на сервере, используя пин-код для многопользовательской лицензии.
Также проверьте физическое расположение файлов лицензий .lic. Сервер «1С:Предприятия» запускается под специальной системной учетной записью (по умолчанию это usr1cv8). Эта учетная запись должна иметь полные права на чтение и выполнение в каталоге, где лежат файлы лицензий. Рекомендуется размещать файлы лицензий в общих системных каталогах, доступных для всех пользователей машины:
- В операционной системе Windows:
C:\ProgramData\1C\licenses
- В операционной системе Linux:
/var/1C/licenses
Парадокс: почему Сервер МИНИ позволил запустить 10 сеансов локально?
В ходе обсуждения автор темы обратил внимание на странную особенность: несмотря на то, что у него установлен «1С:Сервер МИНИ», имеющий жесткое лицензионное ограничение на 5 сеансов пользователей и 1 сеанс конфигуратора, он смог запустить базу данных на самом сервере в тонком клиенте 10 раз подряд без каких-либо ошибок. Как это возможно?
Рассмотрим детально, как платформа «1С» осуществляет подсчет сеансов и расходование лицензий. Здесь работает несколько технических факторов:
- Группировка сеансов на одном рабочем месте (в рамках одного сеанса ОС). Если запуск нескольких окон «1С:Предприятия» происходит на одном и том же компьютере, под одной и той же учетной записью операционной системы Windows, и лицензия получается локально (например, через локальный файл лицензии или локальный USB-ключ HASP), платформа считает это использованием одного рабочего места. Соответственно, тратится всего 1 клиентская лицензия. Сервер «1С» при этом видит в списке соединений множество открытых сеансов, но лицензионный счетчик на сервере может не блокировать их, так как они запущены локально и используют одну общую клиентскую лицензию.
- Использование локальных ключей защиты или эмуляторов. Если на сервере остался подключенным локальный аппаратный ключ HASP или в системе работают службы эмуляции («патчи» защиты), платформа может автоматически переключаться на работу под их защитой. В таком случае ограничения «Сервера МИНИ» физически игнорируются кодом платформы, так как она считает, что запущена под полноценной лицензией ПРОФ или КОРП.
- Технологический режим работы (для систем на Linux). В некоторых старых релизах платформы (включая ветку
8.3.17), при работе под управлением ОС Linux, существовала особенность, позволявшая запускать до 10-12 тестовых сеансов без установленной лицензии на сервер вообще. Однако в среде Windows со СУБД MS SQL Server это ограничение проверяется более жестко при попытке подключения внешних сетевых клиентов.
Для того чтобы точно определить, под какой лицензией работает каждый запущенный сеанс, выполните следующее действие в запущенном сеансе «1С»:
- Откройте главное меню программы, перейдите в раздел «Справка» -> «О программе».
- Найдите раздел «Лицензия».
- Внимательно проанализируйте строки «Текущая» и «Информационная база». Там будет детально расписано, откуда именно была получена лицензия: с локального ключа, из файла лицензии сервера, или она была выдана сервером «1С» из многопользовательского пула.
Рекомендации по администрированию «1С:Сервер МИНИ»
Для стабильной работы небольшой компании на Сервере МИНИ мы рекомендуем придерживаться следующих правил настройки системы:
- Контролируйте фоновые задания. Помните, что лимит в 5 подключений для Сервера МИНИ является критичным. Хотя регламентные и фоновые задания напрямую не должны блокировать работу пользователей, при пиковых нагрузках они могут создавать служебные соединения, которые временно учитываются сервером. Настройте расписание регламентных заданий на нерабочее время.
- Используйте единый сеанс для одного физического пользователя. Если вашим сотрудникам требуется открывать несколько баз данных одновременно, объясните им, что в условиях Сервера МИНИ каждый запуск новой базы данных с другого компьютера или под другой учетной записью будет расходовать драгоценные лицензии.
- Своевременно обновляйте платформу. Особенности подсчета сеансов и баги распределения лицензий регулярно исправляются разработчиками «1С». Переход на стабильные и актуальные релизы платформы (например, ветки 8.3.21, 8.3.22 и выше) поможет избежать ложных срабатываний защиты и ошибок нехватки лицензий при наличии свободных пин-кодов.