Перенос/дублирование backend Yii2 на отдельный домен

Как то встала задача отделить backend Yii2 на отдельный домен. Задача казалась бы не сложной, но есть несколько нюансов. Так же данным способом можно создавать на отдельных доменах отдельные админ панели, со своими шаблонами и логикой, используя ядро и базу основного сайта.

Структура проекта имеет вид:

web

- domain_main //основной сайт

-- backend

-- frontend

-- common

...

-- vendor

- domain_backend //домен с админкой

 

В domain_main находится весь проект целиком, в domain_backend должен лежать только backend основного проекта

 

Итак приступим...

Сперва копируем всю папку backend из domain_main в domain_backend. Это можно сделать через любой ftp менеджер или через командную строку:

cp -f backend ../domain_backend/backend

Далее необходимо изменить пути к папкам common и vendor. Для этого на domain 2 открываем файл backend/web/index.php и везде, где в названиях пути подключаемых файлов присутствуют common и vendor необходимо вставить ../domain_main/

Должно получиться вида:

require(__DIR__ . '/../../vendor/autoload.php'); //было

require(__DIR__ . '/../../../domain_main/vendor/autoload.php'); //стало

Аналогичные действия проделываем во всех файлах папки config

 

Если попробовать открыть домен с domain_backend то все должно уже работать. И даже при изменении вьюшек все отображается как нужно. Но контроллеры используются с основного сайта (domain_main). Для решения этой задачи необходимо поправить конфигурационный файл bootstrap.php в папке backend домена domain_backend (по умолчанию он пустой и беруться значения из аналогичного файла в папке common на основном сайте).

Открываем в редакторе и добавляем строчку:

Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');

 

Вот и все, теперь и контроллеры будут подтягиваться с domain_backend