Редакция продукта - ограничения, переход на старшую, ключ
Разбираемся, что именно ограничивает редакция продукта, как это проверить в своём коде и что сделать при переходе на старшую редакцию.
Что нужно знать заранее
Редакция определяет две вещи: набор доступных модулей и число сайтов. Всё остальное - объём каталога, число заказов, посещаемость - редакцией не ограничено и упирается только в сервер.
Лицензионный ключ хранится отдельным файлом внутри ядра. Он же участвует в проверке обновлений, поэтому при переезде на другой домен ключ переносят вместе с файлами сайта.
Срок обновлений и срок работы сайта - разные вещи. По истечении года обновления перестают приходить, но сайт работает дальше и ничего не отключает.
Шаги
- Посмотреть, какие модули установлены на текущей редакции продукта.
- Проверить в своём коде доступность модуля до его первого вызова.
- Оценить, упирается ли задача в редакцию или в настройки самого сайта.
- Перед переходом снять резервную копию и зафиксировать текущее состояние.
- После перехода установить новые модули и проверить права и агенты.
Решение
Смотрим ключ и состав установленного:
printf("ключ: %s\n", substr(LICENSE_KEY, 0, 6) . '...'); // файл /bitrix/license_key.phpforeach (['catalog', 'sale', 'lists', 'highloadblock'] as $code) { printf("%-14s %s\n", $code, \Bitrix\Main\ModuleManager::isModuleInstalled($code) ? 'есть' : 'нет');}Состав установленных модулей - самый честный ответ на вопрос о редакции. Название редакции в интерфейсе говорит меньше, чем этот список: часть модулей ставится отдельно и в младшей редакции.
Проверяем модуль перед вызовом:
if (!\Bitrix\Main\Loader::includeModule('catalog')) { return; // блок просто не выводится, страница живёт дальше}$price = \Bitrix\Catalog\PriceTable::getRow(['filter' => ['=PRODUCT_ID' => $id]]);// проверка нужна и своим модулям: их тоже может не оказаться на стендеВызов класса отсутствующего модуля роняет страницу целиком. Проверка занимает одну строку и превращает падение сайта в отсутствующий блок, которого посетитель даже не заметит.
Считаем сайты и упираемся ли в предел:
printf("сайтов: %d\n", \Bitrix\Main\SiteTable::getCount());foreach (\Bitrix\Main\SiteTable::getList(['select' => ['LID', 'DIR', 'ACTIVE']])->fetchAll() as $s) { printf("%s %s %s\n", $s['LID'], $s['DIR'], $s['ACTIVE']); // включая выключенные}Выключенный сайт всё равно занимает место в лимите редакции. Об этом вспоминают, когда второй сайт не создаётся, а в списке лежат забытые копии прошлых проектов.
Готовимся к переходу на старшую редакцию:
mysqldump -u root -p sitemanager | gzip > /backup/before-upgrade.sql.gztar czf /backup/before-upgrade-files.tgz /home/bitrix/www/local /home/bitrix/www/bitrix/php_interfacephp -r 'echo PHP_VERSION;' # новые модули требуют поддерживаемой версии языкаПереход меняет состав ядра и ставит новые модули. Копия базы и своего кода перед этим - обычная страховка, которая нужна не чаще одного раза из десяти, но экономит выходные.
Проверяем сайт после перехода:
foreach (\Bitrix\Main\ModuleManager::getInstalledModules() as $m) { echo $m['ID'], "\n"; }// список сверяют со снимком, снятым до перехода на старшую редакцию// новые модули появились, но их настройки и права ещё пустыеТипичные проблемы
Страница падает с ошибкой о неизвестном классе.
Код обращается к классу модуля, которого нет в текущей редакции продукта. Модуль подключают через загрузчик и проверяют результат до первого вызова классов.
Второй сайт не создаётся в списке сайтов.
Достигнут предел числа сайтов для этой редакции, включая выключенные. Лишние сайты удаляют или переходят на редакцию с многосайтовостью.
После смены ключа обновления по-прежнему не приходят.
Ключ заменён, но переход на новую редакцию не выполнен мастером обновлений. Мастер ставит недостающие модули и приводит состав ядра в соответствие ключу.
Решение из маркетплейса отказывается устанавливаться.
Решение требует модуль, который доступен только в старшей редакции продукта. Требования решения смотрят в его описании до покупки, а не после установки.
Новый модуль установлен, но менеджеры его не видят.
После перехода у групп нет прав на появившиеся модули и их разделы. Права на новые модули выдают явно, они не наследуются от старых настроек.
Частые вопросы
Что именно ограничивает редакция?
Набор модулей и число сайтов на одной установке. Объём каталога, число заказов и посещаемость редакцией не ограничены и зависят только от сервера.
Где лежит лицензионный ключ?
В отдельном файле внутри каталога ядра, рядом с настройками подключения. При переносе сайта его переносят вместе с остальными файлами.
Перестанет ли сайт работать после окончания срока обновлений?
Нет, сайт продолжит работать в том же составе. Перестанут приходить обновления платформы, базы антивируса и обновления решений.
Как понять, нужна ли старшая редакция?
По списку модулей, которых не хватает задаче, а не по названию редакции. Часто нужный механизм уже есть и вопрос упирается в настройку.
Можно ли вернуться на младшую редакцию?
Технически данные останутся, но модулей старшей редакции не будет и связанные с ними механизмы отключатся. Такой откат планируют заранее и проверяют на копии сайта.
Смежное
- Универсальный список не открывается или пуст: разбор причин - пример модуля, которого нет в младшей редакции
- Обновление платформы и PHP - оглавление подтемы
- Обновление продукта: подготовка, порядок, откат - как идёт сам процесс обновления
- Обновления не устанавливаются: ключ, срок, доступ, права - когда ключ не принимается
- Второй сайт на одном ядре: домены, шаблоны, общие данные - предел числа сайтов на практике
- Готовое решение в проекте: установка, вмешательство, удаление - требования решений к модулям
- Свой модуль или код в проекте: когда пора выносить в модуль - свои модули рядом с продуктовыми
- Резервные копии и перенос сайта - копия перед переходом
- Сервер и поиск - устройство площадки целиком