Почему пропадает лицензия 1С при входе в базу на сервере Linux и как это исправить

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

Проблемы с лицензированием 1С:Предприятие в среде Linux — это классическая ситуация, с которой сталкиваются многие системные администраторы. Симптомы часто выглядят странно: лицензия то пропадает у одних пользователей, то внезапно появляется после входа в другую информационную базу или перезапуска сеанса. Особенно остро это проявляется, когда клиентские рабочие станции используют старые операционные системы вроде Windows XP или Windows 7, а серверная часть работает на PostgreSQL под управлением Linux.

В этой статье мы подробно разберем, почему возникают такие "плавающие" ошибки, проанализируем механизм поиска лицензий платформой и выясним, как стабилизировать работу сервера приложений 1С.

Разбираем порядок поиска лицензий платформой

Для начала проанализируем, как именно 1С ищет лицензию при запуске. Это поможет понять, почему вход в одну базу может "активировать" лицензию для другой. Платформа следует строгому алгоритму:

  1. Поиск на локальном компьютере: Сначала проверяются локальные USB-ключи (HASP) и программные лицензии (файлы .lic), установленные непосредственно на компьютере пользователя.
  2. Многопользовательские ключи в сети: Если локальная лицензия не найдена, 1С пытается найти лицензию через менеджер лицензий (HASP License Manager) в локальной сети.
  3. Запрос к серверу 1С:Предприятия: Если клиентское приложение подключается к серверной базе, оно может запросить лицензию у самого сервера.

Важно помнить, что если в настройках информационной базы в консоли администрирования кластера установлен флаг "Разрешить выдачу лицензий сервером", то сервер будет пытаться выдать лицензию из своего пула. Если этот процесс настроен неверно или лицензий на сервере не хватает, может возникнуть конфликт, при котором локальная лицензия игнорируется, а серверная не выдается.

Специфика Linux: "Багофича" 12 сеансов

Проанализируем особенность работы серверной части 1С на ОС Linux. Существует технический нюанс, который часто вводит администраторов в заблуждение: сервер 1С на Linux может работать без установленной серверной лицензии, если соблюдаются определенные условия. До определенного момента (обычно до 12 сеансов или пока запущен только один рабочий процесс rphost) сервер позволяет пользователям работать.

Однако, как только нагрузка возрастает и кластер принимает решение запустить второй процесс rphost, система безопасности мгновенно блокирует подключения, не обнаружив лицензию на сервер. Это объясняет "плавающий" характер проблемы: пока пользователей мало — всё работает, как только пришел тринадцатый сотрудник — лицензия "пропала" у всех, кто попал на новый процесс.

Диагностика через окно "О программе"

Чтобы выяснить причину, нам необходимо точно знать, откуда 1С берет лицензию в текущий момент. Рассмотрим, как интерпретировать данные из окна "Справка — О программе":

В разделе "Лицензия" обратите внимание на секцию "Текущая". Здесь отображается информация о том, какой ключ или файл лицензии используется сейчас:

Важный момент: Маркировка ORGL8 относится только к клиентским лицензиям (на 1, 5, 10, 20 и более рабочих мест). Маркировка EN8SA (или подобные, например, ENSR8) указывает на наличие именно серверного ключа. Если в строке "Текущая" отображается только клиентская лицензия, значит, сервер приложений работает в "бесплатном" режиме Linux (до 12 сеансов) или лицензия на сервер просто не видна системе.

Настройка выдачи лицензий сервером

Рассмотрим ситуацию, когда у пользователей установлены программные однопользовательские лицензии. В этом случае сервер 1С не должен пытаться выдавать им лицензии из своего пула. Выясним, как это изменить:

  1. Откройте консоль администрирования кластера серверов 1С.
  2. Перейдите в свойства конкретной информационной базы.
  3. Найдите параметр "Разрешить выдачу лицензий сервером" (Разрешить выдачу лицензий 1С:Предприятия сервером).
  4. Установите значение в "Нет", если хотите, чтобы пользователи использовали только свои локальные лицензии.

Это исключит ситуацию "холодного" входа, когда клиент ломится за лицензией на сервер, не находит её там и выдает ошибку, даже если у него есть локальный файл .lic.

Решение проблемы с аппаратными ключами на Linux

Если используется физический USB-ключ (HASP), то на Linux часто возникают проблемы с демоном защиты. Проанализируем алгоритм восстановления работоспособности ключа:

Чаще всего помогает перезапуск службы haspd (или aksusbd в зависимости от версии драйвера). Выполним следующие команды в терминале сервера:


sudo service haspd restart
# или, если используете systemd
sudo systemctl restart aksusbd

Если после перезапуска службы лицензия появляется, значит, проблема в стабильности драйвера. Проверьте, не включено ли в Linux агрессивное энергосбережение для USB-портов (так называемый autosuspend). Если порт "засыпает", сервер 1С теряет связь с ключом. Для отключения этого режима можно создать правило udev или изменить параметры загрузки ядра в GRUB.

Использование файла n_hsp.conf для стабильности

Когда клиентские машины на Windows XP или Windows 7 ищут лицензию в сети, они используют широковещательные запросы (broadcast). В сетях с Linux-серверами эти запросы могут блокироваться или задерживаться. Разберем способ ускорения этого процесса.

На каждой клиентской машине в папке с установленной платформой (обычно C:\Program Files\1cv8\conf) найдите или создайте файл n_hsp.conf. В нем следует явно прописать адрес сервера, где установлен ключ:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100  ; Укажите IP вашего сервера лицензий
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = Disabled

Это заставит 1С обращаться напрямую по IP-адресу, минуя долгие попытки поиска лицензии через широковещание, что часто решает проблему "лицензия то есть, то нет".

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

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

Убедитесь, что владельцем директории с лицензиями является пользователь 1С:


chown -R usr1cv8:grp1cv8 /var/1C/licenses
chmod -R 600 /var/1C/licenses/*.lic

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

← На главную