Поддомены и второй сайт - одна установка или две
Разбираемся, как завести второй сайт или поддомен и что при этом остаётся общим, а что придётся настраивать заново.
Решение
Смотрим сайты установки и сайты пула:
$res = CSite::GetList();while ($site = $res->Fetch()) { printf("%-4s %-24s домен=%-24s папка=%s\n", $site['LID'], $site['NAME'], $site['SERVER_NAME'], $site['DIR']);}// это сайты одной установки; сайты пула окружения смотрят командой bx-sitesЭто два разных понятия. Сайт установки живёт в общей базе и делит с соседями модули, пользователей и лицензию. Сайт пула окружения - отдельная установка со своей базой, своим каталогом и своим ключом.
Заводим поддомен в окружении:
/opt/webdir/bin/bx-sites -a create -s shop --site_type=kernel \ --dir=/home/bitrix/ext_www/shop# окружение создаст каталог, пул процессов и конфигурацию веб-сервераОкружение обслуживает только те сайты, которые заведены через него самого. Каталог, созданный руками в обход меню, не получит ни сертификата, ни резервных копий, ни настроек почты.
Привязываем домен к сайту продукта:
$site = new CSite();$site->Update('s2', [ 'SERVER_NAME' => 'shop.example.com', 'DIR' => '/shop/', // папка сайта внутри одной установки 'ACTIVE' => 'Y',]);У сайта одной установки два признака: домен и папка. По ним платформа решает, какой сайт показывать, и ошибка здесь приводит к тому, что оба домена открывают одно и то же.
Включаем общую авторизацию на поддоменах:
COption::SetOptionString('main', 'auth_multisite', 'Y');COption::SetOptionString('main', 'cookie_name', 'BITRIX_SM');// область действия метки задают доменом с точкой в начале// старые метки после смены настройки нужно очистить у посетителей# в коде второй сайт требует своих настроек, кэша и ссылок# общий вход на поддоменах работает только при общей метке авторизацииВход на поддоменах не переносится сам: метка авторизации привязана к домену. Общая настройка и правильная область действия метки решают это, а старые метки после смены настройки приходится чистить.
Схему выбирают до запуска второго сайта, а не после. Перевести сайт установки в отдельную установку потом можно, но это полноценный перенос с базой, файлами и лицензией, а не смена одной настройки.
Каталог и заказы у сайтов одной установки общие по умолчанию. Разделение делают привязкой инфоблоков и заказов к конкретному сайту, и продумывают его до запуска второго сайта, а не после.
Обмен с учётной системой на мультисайте настраивают по сайтам. Каждый сайт получает свой узел или свой признак в заказе, иначе документы двух магазинов смешиваются в одной базе.
Типичные проблемы
Оба домена открывают один и тот же сайт.
Домен не привязан ко второму сайту в настройках продукта. Платформа определяет сайт по домену и папке.
Вход на поддомене не работает.
Метка авторизации привязана только к основному домену этой самой копии сайта. Общий вход включается отдельной настройкой с областью действия на весь домен.
Второй сайт не обслуживается окружением.
Он заведён руками, в обход консольного меню самого этого веб-окружения. Сертификаты, копии и почта проходят мимо таких сайтов.
Товары одного магазина видны во втором.
Инфоблок вообще не привязан ко второму сайту в его собственных настройках привязки. У сайтов одной установки данные общие, пока их не разделили явно.
Заказы двух сайтов смешались в учётной системе.
Обмен настроен всего одним узлом сразу на оба этих совершенно разных сайта. Их разводят отдельными узлами обмена или отдельным признаком прямо внутри заказа.
Частые вопросы
Когда брать вторую установку вместо второго сайта?
Когда проекты не связаны между собой: разные владельцы, разные каталоги, разные сроки обновления. Общая база оправдана там, где данные действительно общие.
Нужна ли вторая лицензия?
Сайты одной установки покрываются одной лицензией в пределах её ограничений. Отдельная установка требует своего ключа.
Как сделать сотню поддоменов?
Одним сайтом с разбором домена в коде либо отдельными сайтами установки, если у них разное содержимое. Сотня записей в пуле окружения неуправляема.
Что делать с общим шаблоном?
Шаблон привязывают к сайту в настройках. Общий шаблон с ветвлением по сайту быстро становится нечитаемым.
Смежное
- BitrixVM и веб-окружение - оглавление подтемы
- Мультисайтовость - устройство многосайтовости целиком
- Второй сайт на одном ядре: домен, папка, шаблон, общие данные - настройка второй витрины со стороны платформы
- Сайты в пуле BitrixVM: добавление, каталоги, права и доступ - сайты уровня окружения
- Слетает авторизация: время жизни сессии и запоминание входа - метки авторизации и домены
- Обмен каталогом с несколькими сайтами и конфигурациями - обмен с учётной системой на мультисайте
- Код для двух сайтов: текущий сайт, настройки, общие данные - что меняется в самом коде