Программирование нескольких сайтов в админке одного сайта с помощью modxSDK
В прошлом своем топике я писал про интересный хостинг digitalocean.com (кстати, сразу скажу, что у меня нет на этом хостинге никакой партнерки и не буду заводить, так что не сочтите за платную рекламу). И еще момент: про этот хостинг рассказал один из далеко не самых последних в MODX-е людей;-) И как я говорил уже, хоть modxcloud и вернулся обратно в MODX, тем не менее нет цели сделать так, чтобы все MODX-еры хостились только там. Постепенно будут появляться и другие хостеры, которые будут предоставлять этот же сервис. Не скрою, что и у меня есть свое определенное видение на этот счет. А пока же digitalocean.com для меня — это просто дешевый VDS для своих экспериментов.
Так вот, хотел бы я рассказать про такой вот эксперимент: на modxcloud.com все хорошо, но есть моменты очень ограничивающие. Один из таких моментов — изолированность сайтов. Вы не можете обратиться к файловой системе одного сайта из другого сайта. А вот здесь собственной сервер, что хотим, то и делаем :-) И вот что я сделал: по соображениям безопасности я загоняю сайты в собственные open_basedir, чтобы если какой сайт и взломали, чтобы не могли выйти за пределы файловой системы этого сайта. А вот один центровой сайт (чисто под свои нужды) я не стал ограничивать по файловой системе (я просто разрешил доступ к этому сайту только с одного ip). И вот этот центровой сайт я планирую использовать для управления другими сайтами :-)
Сделать это не сложно. Ведь modxSDK использует для своей работы Источники файлов самого MODX-а, а эти источники не обязательно должны работать только от DOCUMENT_ROOT. Достаточно просто переключить basePathRelative источника файлов в false.

И все, файловая система другого сайта доступна.

При этом здесь мы получаем сразу несколько положительных моментов:
-
При работе с modxSDK на текущем сайте, сайт можно запросто сломать, при чем так, что через текущий modxSDK его уже не починить. Причина одна — modxSDK использует этот же сайт для редактирования и сохранения файлов. А это означает, что если вы зацепите какой-то важный файл из того же ядра, который будет приводить к фатальной ошибке, то modxSDK просто не сможет выполнить запрос на обновление этого файла, так как MODX сломан. Замкнутый круг :-) А здесь редактирование файлов выполняется из другого сайта, так что даже если вы сломаете целевой сайт, его же можно будет восстановить через текущий же modxSDK.
-
Целевой сайт вообще может не быть MODX-ом. То есть это может быть вообще любой сайт. Так что если вы работаете не только с MODX-ом, и необходимо поработать со сторонним сайтом, с ним можно работать через центральный MODX-сайт. Мне вот, к примеру, иногда приходится работать с тем же Эво, а там modxSDK нет.
-
Теоритически, в дальнейшем можно докрутить modxSDK так, что можно будет работать даже с распределенными серверами, используя modxSDK как центр управления сайтами, с централизованным сбором статистики, управлением и т.п. И даже работать с объектами целевого сайта (ведь ничто не мешает настроить доступ к объекту $modx на целевом сайте). А это даже выполнение xPDO-запросов на целевых сайтах через единую консоль. Это конечно еще планы, но в целом они очень даже достижимые.