Как активировать и использовать комьюнити-лицензию 1С на ARM-сервере под Linux

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

С развитием архитектуры процессоров ARM (aarch64) и появлением доступных высокопроизводительных серверов (например, Huawei Kunpeng, Ampere или даже кастомных решений на базе ТВ-приставок) вопрос запуска 1С:Предприятие на этой платформе становится всё более актуальным. Одной из главных сложностей является лицензирование. Рассмотрим подробно, как заставить работать сервер 1С на ARM-процессоре и как активировать комьюнити-лицензию (для разработчиков), если на сервере отсутствует графический интерфейс (GUI).

Особенности работы 1С на архитектуре ARM

Прежде всего, разберем важный нюанс лицензионной политики. Для обычных серверов на архитектуре x86-64 достаточно лицензии уровня ПРОФ. Однако для работы полнофункционального сервера 1С на архитектуре ARM требуется лицензия уровня КОРП. Приятная новость заключается в том, что комьюнити-лицензия для разработчиков по своим возможностям эквивалентна лицензии КОРП. Это позволяет ей успешно работать на ARM-серверах, обеспечивая полный функционал для разработки и тестирования.

Проанализируем техническую сторону: серверная часть 1С (rphost, rmngr) под Linux ARM64 работает стабильно. Проблемы возникают на этапе активации программной лицензии, так как традиционный путь через запуск толстого или тонкого клиента с графическим интерфейсом на сервере часто невозможен из-за отсутствия необходимых библиотек (GTK, WebKit) или X-сервера.

Почему не работают стандартные способы активации

Рассмотрим типичные препятствия, с которыми сталкиваются администраторы:

  1. Активация с удаленного клиента: Если вы запускаете клиент 1С на Windows-компьютере и пытаетесь получить лицензию для базы, расположенной на ARM-сервере, 1С по умолчанию выдает лицензию именно на локальный компьютер (Windows), а не на сервер, при этом могут появляться зависшие сеансы. В результате серверная часть остается нелицензированной.
  2. Утилита Ring: Официальная утилита управления ring на текущий момент имеет ограничения в работе с комьюнити-лицензиями и часто требует специфических Java-зависимостей, которые могут некорректно работать на ARM-дистрибутивах Linux.
  3. Отсутствие GUI: Клиент 1С на Linux ARM требует наличия множества графических библиотек. Даже при попытке запустить его через RDP или VNC пользователи часто сталкиваются с ошибками сегментирования или отсутствием нужных .so файлов.

Способ 1: Программная активация через встроенный язык (8.3.23 и выше)

Начиная с версии платформы 8.3.23, разработчики добавили мощный инструмент — возможность программного управления лицензиями через встроенный язык. Это позволяет нам написать небольшой скрипт или обработку, которая выполнит запрос к центру лицензирования непосредственно из кода, запущенного на сервере. Рассмотрим основные объекты, которые нам понадобятся.

Для активации используется объект ЗапросНаПолучениеЛицензии. Проанализируем пример кода, который можно запустить в контексте сервера или через внешнее соединение:


ПараметрыПривязки = ПолучениеЛицензий.ПолучитьПараметрыПривязкиККомпьютеру();

ЗапросАктивации = Новый ЗапросНаПолучениеЛицензии;
ЗапросАктивации.ДляВсехПользователей = Истина;
ЗапросАктивации.ВремяЗапроса = ТекущаяДатаСеанса();

// Для комьюнити-лицензии важны следующие поля:
ЗапросАктивации.ИмяУчетнойЗаписи = "ваш_логин_на_portal.1c.ru";
// Пароль указывается при вызове метода получения

ЗапросАктивации.ПараметрыПривязки = ПараметрыПривязки;
ЗапросАктивации.Предприятие = "Разработчик";
ЗапросАктивации.Страна = "RU";
ЗапросАктивации.Город = "Москва";

// Путь, где будет сохранен файл лицензии .lic
ЗапросАктивации.ИмяФайлаЛицензии = "community_arm_lic";

ДоступностьЦЛ = ПолучениеЛицензий.ПолучитьДоступностьЦентраЛицензирования();
Если ДоступностьЦЛ.Доступен Тогда
    // Автоматическое получение требует логина и пароля от портала разработчиков
    ПолучениеЛицензий.ПолучитьЛицензиюАвтоматически(ЗапросАктивации, "ваш_пароль");
КонецЕсли;

Этот метод хорош тем, что он не требует наличия графической оболочки. 1С сама соберет необходимые данные об оборудовании ARM-сервера и отправит их в Центр Лицензирования. Обратите внимание на свойство ИмяУчетнойЗаписи — оно критически важно для получения именно лицензии для разработчиков.

Способ 2: Использование автономного сервера (ibsrv)

Выясним, как упростить процесс, если полноценный сервер 1С еще не настроен. В дистрибутивах под Linux ARM64 присутствует исполняемый файл ibsrv — автономный сервер 1С. Мы можем запустить его, создать временную файловую базу и использовать её для выполнения вышеуказанного программного кода или для публикации HTTP-сервиса, который выполнит активацию.

Разберем последовательность действий:

  1. Запускаем автономный сервер командой в консоли.
  2. Создаем пустую файловую базу (это можно сделать программно или скопировав пустой 1Cv8.1CD).
  3. Публикуем HTTP-сервис в этой базе, который при обращении к нему выполнит код активации лицензии.
  4. Вызываем этот сервис через curl или обычный браузер, предварительно выполнив тестирование http-сервиса.

Важные рекомендации по стабильности лицензии на ARM

Проанализируем ситуацию со "слетом" лицензий. На специфическом ARM-оборудовании (особенно на различных SoC и виртуальных машинах в облаках) параметры привязки могут быть нестабильными. Чтобы лицензия не деактивировалась, примите следующие меры:

Фиксация MAC-адреса: На некоторых ARM-дистрибутивах Linux MAC-адрес сетевой карты может генерироваться случайным образом при каждой загрузке. Обязательно зафиксируйте его в настройках сетевого интерфейса (файл /etc/network/interfaces или через NetworkManager).

Права доступа: Убедитесь, что пользователь, под которым запущен сервер 1С (обычно usr1cv8), имеет права на запись в директорию /var/1C/licenses. Именно там платформа будет искать файлы лицензий .lic.

Тестирование производительности: Посмотрим на результаты тестов. Хотя сервер 1С успешно работает даже на слабых ARM-устройствах (вплоть до ТВ-приставок с 4ГБ ОЗУ), стандартные тесты производительности (например, тест Гилева) могут вести себя нестабильно из-за специфики математических вычислений на данной архитектуре. Для реальной работы рекомендуется использовать специализированные серверные ARM-процессоры с поддержкой большого количества ядер.

Таким образом, использование комьюнити-лицензий на ARM-серверах под Linux — это не только возможно, но и является отличным способом развертывания недорогих сред для разработки и автоматизированного тестирования. Главное — использовать современные возможности платформы 8.3.23+ для программного управления лицензиями, что избавляет от необходимости настройки GUI на сервере.

← На главную