С развитием архитектуры процессоров ARM (aarch64) и появлением доступных высокопроизводительных серверов (например, Huawei Kunpeng, Ampere или даже кастомных решений на базе ТВ-приставок) вопрос запуска 1С:Предприятие на этой платформе становится всё более актуальным. Одной из главных сложностей является лицензирование. Рассмотрим подробно, как заставить работать сервер 1С на ARM-процессоре и как активировать комьюнити-лицензию (для разработчиков), если на сервере отсутствует графический интерфейс (GUI).
Прежде всего, разберем важный нюанс лицензионной политики. Для обычных серверов на архитектуре x86-64 достаточно лицензии уровня ПРОФ. Однако для работы полнофункционального сервера 1С на архитектуре ARM требуется лицензия уровня КОРП. Приятная новость заключается в том, что комьюнити-лицензия для разработчиков по своим возможностям эквивалентна лицензии КОРП. Это позволяет ей успешно работать на ARM-серверах, обеспечивая полный функционал для разработки и тестирования.
Проанализируем техническую сторону: серверная часть 1С (rphost, rmngr) под Linux ARM64 работает стабильно. Проблемы возникают на этапе активации программной лицензии, так как традиционный путь через запуск толстого или тонкого клиента с графическим интерфейсом на сервере часто невозможен из-за отсутствия необходимых библиотек (GTK, WebKit) или X-сервера.
Рассмотрим типичные препятствия, с которыми сталкиваются администраторы:
ring на текущий момент имеет ограничения в работе с комьюнити-лицензиями и часто требует специфических Java-зависимостей, которые могут некорректно работать на ARM-дистрибутивах Linux..so файлов.Начиная с версии платформы 8.3.23, разработчики добавили мощный инструмент — возможность программного управления лицензиями через встроенный язык. Это позволяет нам написать небольшой скрипт или обработку, которая выполнит запрос к центру лицензирования непосредственно из кода, запущенного на сервере. Рассмотрим основные объекты, которые нам понадобятся.
Для активации используется объект ЗапросНаПолучениеЛицензии. Проанализируем пример кода, который можно запустить в контексте сервера или через внешнее соединение:
ПараметрыПривязки = ПолучениеЛицензий.ПолучитьПараметрыПривязкиККомпьютеру();
ЗапросАктивации = Новый ЗапросНаПолучениеЛицензии;
ЗапросАктивации.ДляВсехПользователей = Истина;
ЗапросАктивации.ВремяЗапроса = ТекущаяДатаСеанса();
// Для комьюнити-лицензии важны следующие поля:
ЗапросАктивации.ИмяУчетнойЗаписи = "ваш_логин_на_portal.1c.ru";
// Пароль указывается при вызове метода получения
ЗапросАктивации.ПараметрыПривязки = ПараметрыПривязки;
ЗапросАктивации.Предприятие = "Разработчик";
ЗапросАктивации.Страна = "RU";
ЗапросАктивации.Город = "Москва";
// Путь, где будет сохранен файл лицензии .lic
ЗапросАктивации.ИмяФайлаЛицензии = "community_arm_lic";
ДоступностьЦЛ = ПолучениеЛицензий.ПолучитьДоступностьЦентраЛицензирования();
Если ДоступностьЦЛ.Доступен Тогда
// Автоматическое получение требует логина и пароля от портала разработчиков
ПолучениеЛицензий.ПолучитьЛицензиюАвтоматически(ЗапросАктивации, "ваш_пароль");
КонецЕсли;
Этот метод хорош тем, что он не требует наличия графической оболочки. 1С сама соберет необходимые данные об оборудовании ARM-сервера и отправит их в Центр Лицензирования. Обратите внимание на свойство ИмяУчетнойЗаписи — оно критически важно для получения именно лицензии для разработчиков.
Выясним, как упростить процесс, если полноценный сервер 1С еще не настроен. В дистрибутивах под Linux ARM64 присутствует исполняемый файл ibsrv — автономный сервер 1С. Мы можем запустить его, создать временную файловую базу и использовать её для выполнения вышеуказанного программного кода или для публикации HTTP-сервиса, который выполнит активацию.
Разберем последовательность действий:
1Cv8.1CD).curl или обычный браузер, предварительно выполнив тестирование http-сервиса.Проанализируем ситуацию со "слетом" лицензий. На специфическом 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 на сервере.