При развертывании бесплатной лицензии разработчика (Community) на сервере под управлением Linux системные администраторы часто сталкиваются с ситуацией, когда сервер сообщает об отсутствии лицензии. Попытка активировать ее с удаленного клиентского компьютера под Windows приводит к циклическому перезапуску: клиент пишет, что лицензия успешно получена, но сервер ее не видит, а поиск файлов *.lic на сервере ничего не дает.
Разберем детально механизм работы лицензии разработчика, выясним причину такого поведения и рассмотрим надежные способы ее активации и настройки прав доступа.
Проанализируем архитектуру лицензирования. В отличие от стандартных коммерческих лицензий с пин-кодами, где в мастере активации можно выбрать пункт установки лицензии на удаленный сервер «1С:Предприятия», механизм бесплатной лицензии разработчика не поддерживает удаленную серверную привязку. Если мы запускаем получение комьюнити-лицензии с рабочего места администратора, файл лицензии формируется с аппаратной привязкой к клиентскому компьютеру и сохраняется локально на клиентской машине.
Сервер Linux ничего не знает об этой операции. Консольная утилита ring license также не поможет, так как она рассчитана исключительно на коммерческие комплекты с пин-кодами. Таким образом, получение лицензии разработчика должно инициироваться непосредственно в среде самого сервера.
Перед настройкой сервера обязательно учтем ключевые технические условия лицензии разработчика:
Для интерактивного запуска тонкого или толстого клиента на сервере Linux часто требуется запустить графический интерфейс. Однако при установке или старте клиента в современных дистрибутивах (например, Ubuntu или Debian) возникает системная ошибка: «Для пакета policykit-1 не найден кандидат на установку».
Выясним причину ошибки: в современных версиях дистрибутивов устаревший пакет policykit-1 удален из репозиториев и заменен системной службой polkitd и утилитой pkexec. Платформе 1С этот компонент требуется лишь для отображения графического диалога повышения привилегий sudo. Разберем шаги по устранению неполадки:
sudo apt update
sudo apt install policykit-1-gnome
policykit-1, создадим фиктивный мета-пакет с помощью утилиты equivs, настроив его зависимость от актуального пакета polkitd.libcanberra-gtk-module, WebKitGTK и шрифты ttf-mscorefonts-installer.Устанавливать полноценный тяжелый рабочий стол (например, GNOME Desktop) на производственный сервер не требуется. Рассмотрим два более чистых решения:
/etc/ssh/sshd_config активируем директиву X11Forwarding yes и перезапустим службу sshd. На стороне администратора под Windows запускаем X-сервер (например, VcXsrv или Xming) и подключаемся через терминал с флагом проброса: ssh -X user@server_ip. При вызове команды запуска клиента /opt/1cv8/x86_64/8.3.XX.XXXX/1cv8 окно мастера активации откроется на клиентском экране, но сам процесс и файл лицензии будут созданы в системе Linux.xvfb и выполним вызов через утилиту виртуального экрана:
xvfb-run /opt/1cv8/x86_64/8.3.XX.XXXX/1cv8
Для разработчиков и администраторов доступен полностью программный путь получения комьюнити-лицензии через запуск автономного скрипта или внешней обработки на сервере. Разберем, как выглядит программный запрос к порталу разработчиков с использованием встроенного языка платформы:
ПараметрыЗапроса = Новый ПараметрыАктивацииЛицензии;
ПараметрыЗапроса.ИмяУчетнойЗаписи = "developer_login";
ПараметрыЗапроса.ПарольУчетнойЗаписи = "developer_password";
ПараметрыЗапроса.АдресАгента = "tcp://localhost:1540";
АктивироватьЛицензиюНаСервере(ПараметрыЗапроса);
В данном сценарии объект ЗапросНаПолучениеЛицензии и метод АктивироватьЛицензиюНаСервере передают данные учетной записи разработчика напрямую в службу кластера, исключая необходимость в графических оболочках.
После корректного завершения процедуры в файловой системе Linux создается файл с расширением .lic. Рассмотрим типовые пути, где платформа производит поиск лицензий:
/var/1C/licenses (общесистемный каталог)/home/usr1cv8/.1cv8/1C/1cv8/conf/ (домашний каталог пользователя службы usr1cv8)/opt/1cv8/conf/ или /opt/1cv8/x86_64/8.3.XX.XXXX/conf/conf.cfgВажное правило: Служба сервера (обычно работающая от имени системного пользователя usr1cv8 и группы grp1cv8) обязана иметь полные права на чтение и запись в каталог с лицензией, а также к самому файлу лицензии.
Настроим права доступа следующими командами в терминале:
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses
sudo chmod 775 /var/1C/licenses
sudo chmod 664 /var/1C/licenses/*.lic
Обратим внимание: нельзя допускать дублирования одного и того же файла лицензии в разных каталогах поиска. Если платформа обнаружит две одинаковые лицензии в разных директориях, обе они будут заблокированы как поврежденные.