modxcloud.com, Vapor и клонирование сайтов.
Наверняка уже многие слышали про modxcloud.com, но далеко не все его попробовали в деле. Может уже пора? Сегодня я расскажу, как это сделать проще. Начнем с того, что на modxcloud.com дев-аккаунт на два облака — бесплатный. А значит попробовать все это дело вам ничего не будет стоить. Если вы не хотите пробовать, так как считаете, что 24. А у меня таких операций в месяц не мало… Так что поверьте на слово: это стоит того, чтобы как минимум попробовать все это, тем более бесплатно. А теперь вернемся к вопросу миграции сайтов. Ведь нас интересует вопрос как переноса на modxcloud.com уже готового сайта, так и с modxcloud.com на другой хостинг (бывает всякое — элементарно у клиента где-то свой аккаунт). Во-первых, конечно же ssh/sftp еще никто не отменял, так что любой может воспользоваться для этих целей привычными методами. Но есть решение гораздо лучше — скрипт Vapor (к слову, скрипт написан самим Джейсоном Ковардом opengeek — главным архитектором MODX). Странно, что о нем почти нигде ничего не упоминается, а это между прочим очень мощный инструмент для резервного копирования MODX-сайтов (именно Рево, и начиная с версии 2.2). Принципы его работы будут очень понятны тем, кто уже писал пакеты для MODX Revolution, и результат его выполнения — обычный пакет, который можно установить через менеджер пакетов на MODX-сайте, только он более обширный. Но здесь очень важно понимать, что этот скрипт предназначен именно для резервного копирования, и все таблицы, которые в него попадут, при установке конечного пакета будут полностью очищены, и наполнены теми данными, которые были в базе данных на момент снятия снимка. То есть используйте его только для переноса или полного бекапа сайта, но никак не для создания заплаток. Для создания заплаток мы будем использовать packMan, и об этом мы поговорим чуть позже. Пример первый. Перенос существующего сайта на modxcloud.com 1. Выполняем бекап своего сайта привычными методами (На всякий случай. Бекапов много не бывает.) 2. Качаем Vapor и распаковываем его в корень сайта. Затем выполняем этот скрипт, набрав в адресной строке mydomain/vapor_path/vapor.php. Ждем выполнения скрипта (может занять от трех секунд до минуты и больше, в зависимости от размера сайта). 3. Если все выполнилось хорошо, вы увидите сообщение об этом и название созданного пакета. Он будет находиться в папке core/packages/. Вот этот пакет нам и нужен. Это снимок сайта. 4. Перемещаем пакет куда-нибудь так, чтобы он был доступен для скачивания по открытой ссылке (надеюсь у вас на сайте папка /core/ закрыта для запросов из вне). 5. Теперь заходим на modxcloud.com в свой личный кабинет, переходим на страницу Vapor и жмем Import Snapshot ? 6. Далее указываем категорию снапшотов (если надо, создаем новую) и УРЛ на ваш снапшот. ? 7. Жмем «Import Snapshot» и получаем сообщение типа «все ОК, наши роботы работают, и когда все сделают, отправят вам уведомление». Уведомление вы получите на почту, а так же в вашей панели. ? 8. После того, как вы испортировали свой снапшот, его можно распаковать в уже имеющийся сайт, или создать из него новое облако. ? Это все. На выходе вы получите клон вашего сайта. Большой плюс заключается в том, что можно хранить для себя вот такие снимки, и потом легко разворачивать из них типовые сайты, как это делаем мы. Пример второй. Перенести сайт куда угодно. Когда у нас есть готовый снапшот (смотрим пункты 1,2,3 в прошлом примере), мы его можем легко развернуть на любом хостинге. Просто устанавливаем чистую MODX Revolution, заливаем этот снапшот в core/packages/, заходим в админке в менеджер пакетов, выполняем локальный поиск пакетов, и устанавливаем снапшот как обычный пакет. В процессе установки ваша сессия оборвется, и это нормально (я писал выше, что все таблицы очищаются, и modx_sessions — не исключение). Немного подождите (в зависимости от размеров снапшота от нескольких секунд и больше на личное усмотрение) и попробуйте опять авторизоваться в админке. Скорее всего вы получите рабочую копию сайта. Плюс такого метода заключается в том, что вам не приходится править файлы конфигурации и т.п., у вас уже все настроено. Побочный плюс такого подхода к разработке. Данный метод можно вообще рассматривать как тест того, правильно ли вы ведете разработку на MODX Revolution. Когда делается снимок вашего сайта, в него не включаются CORE_PATH (за исключением папки components, она включается), MANAGER_PATH, CONNECTORS_PATH, файлы конфигурации и index.php. То есть ядро полностью исключается. И ваши разработки ни в коем случае не должны затрагивать ядра. Это будет обеспечивать полную переносимость вашей разработки на любой MODX-сайт. А если при переносе у вас все ломается, значит вы что-то делаете не правильно (то есть где-то зацепили ядро). Вот если все вот это вы освоите, и ваш сайт успешно будет переноситься с помощью Vapor, вы научитесь сосредотачиваться только на своей разработке, а не на всей системе в целом. Если вам где-то пришлось затронуть ядро — значит вы недостаточно хорошо знаете MODX, и где-то неправильно с ним работаете, при таком подходе вам придется тянуть не только свою разработку, но и весь сайт в целом, включая ядро MODX-а. А это усложняет ваш проект сразу в тысячу раз. UPD: Выложил пакет в официальный репозиторий.