Телепортация modx - modx meetup minsk

Post on 04-Aug-2015

600 Views

Category:

Presentations & Public Speaking

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Иван Климчук

Телепортация MODXРешаем проблемы деплоя

Ты кто такой?

•  MODX Ambassador

•  MODX Professinal

•  Опыт работы с MODX — 4 года

•  Люблю MODX

2

Разработка

Этапы разработки

•  Установка MODX

•  Настройка (ЧПУ, имя сайта, почта и тд.)

•  Установка дополнений

•  Заполнение дерева (структура)

•  Наполнение шаблонов и чанков

•   Творческий процесс разработчика

4

Известные недостатки MODX

•  Элементы в БД

•  Необходимость работы через админпанель

•  Git? Бесполезен

5

Тестирование

Перенос сайта

•  FTP

•  SSH (SFTP)

•  scp / rsync / ...

•  PhpMyAdmin / mysqldump

•  Vapor

•   только для MODX Revo 2.2+

•   только MODX Cloud

7

OK. Перенесли

И тут заказчик решает добавить на сайт новый раздел

— Я все оплачу, делайте!

Заказчик“8

¯\_(ツ)_/¯

Неужели нет решения?

•  SE Manager + StaticSaver + git

•  ElementHelper + git

•  Cast

•  Gitify

•  Общие недостатки

10

SE Manager + StaticSaver + git

+ Быстрый экспорт элементов в файлы из админки

+ Автоматическая подстановка имени файла в форму ресурса

+ Контроль версий для статических элементов

- При добавлении файла нельзя автоматически создать элемент

- Нельзя использовать ссылки на ресурсы по id

- Нет сведений о состоянии системы

11

ElementHelper + git

+ Умеет TV

+ Умеет отслеживать историю изменений элемента

+ Есть автоудаление элементов

+ Умеет создавать элементы из файлов

- Нельзя использовать ссылки на ресурсы по id

- Нет сведений о состоянии системы

12

Cast

CAST - Content Addressable Storage and Transfer, библиотека для MODX, построенная вокруг git.

+ Работает с объектами xPDO

+ Обертки git-команд в самой библиотеке

+ Есть настройка того, что нужно сериализовать

- Не поддерживает команды с взаимодействием с пользователем

- Перед десереализацией удаляет записи из таблиц

13

Gitify

Новый инструмент от Марка Хамстры, презентованный на MODX Weekend.

+ Конфигурация в YAML

+ Дополнительные команды для управления сайтом

+ Данные хранятся в виде обычных файлов, конфиги в заголовках

- На сегодня очень мало умеет и еще в разработке

- Не удобно править файлы, не срабатывает подстветка синтаксиса

14

Общие проблемы

•  Однонаправленность

•  Недостаток документации

•  Сложность для обычного пользователя

15

Teleport

Teleport

Teleport - это расширяемый набор скриптов для работы с одним

или несколькими локальными экземлярами MODX Revolution.

github.com/modxcms/teleport

Автор: Jason Coward

MODX Cloud

17

Установка

1.  Создать папку teleport там, где удобно. Обычно в /home/username

2.  Скачать в нее teleport.phar

Каталоги

Во время работы teleport создает каталоги:

•   profile - в нем будут размещены профили сайтов

•   workspace - в нем будут размещены собранные пакеты

18

Как работает?

1.  Создание профиля

2.  Упаковка сайта в пакет

3.  Перенос пакета в нужное место

4.  Создание профиля целевого сайта

5.  Распаковка и установка обновлений

19

Что умеет?

•  Profile

•  Extract

•  Inject

•  Push

•  UserCreate

•  Packages/GC

20

Profile

php teleport.phar \

--action=Profile \

--name="MySite" \

--code=mysite \

--core_path=/path/to/mysite/modx/core/ \

--config_key=config

01.

02.

03.

04.

05.

06.

21

Extract

php teleport.phar \

--action=Extract \

--profile=profile/mysite.profile.json \

--tpl=phar://teleport.phar/tpl/complete.tpl.json

01.

02.

03.

04.

22

Inject

php teleport.phar \

--action=Inject \

--profile=profile/mysite.profile.json \

--source=workspace/mysite_develop-120315.1106.30-2.2.1-dev.transport.zip

01.

02.

03.

04.

23

Push

php teleport.phar \

--action=Extract \

--profile=profile/mysite.profile.json \

--tpl=phar://teleport.phar/tpl/complete.tpl.json \

--target=s3://mybucket/snapshots/ \

--push

01.

02.

03.

04.

05.

06.

24

UserCreate

php teleport.phar \

--action=UserCreate \

--profile=profile/mysite.profile.json \

--username=superuser \

--password=password \

--sudo \

--active \

--fullname="Test User" \

--email=testuser@example.com

01.

02.

03.

04.

05.

06.

07.

08.

09.

25

Packages/GC

php teleport.phar \

--action=Packages/GC \

--profile=profile/mysite.profile.json

01.

02.

03.

26

Шаблоны

Шаблоны

•  Запакованы в phar: phar://teleport.phar/tpl/*.json.tpl

•  Формат - json

•  11 шаблонов из коробки: changeset, complete, complete_db,

develop, elements, packages, resource_children, resources,

settings, user, users

28

changeset.json.tpl

Извлекает определенный набор изменений, зафиксированный

обратной функцией, заданной в настройках MODX.

settings.json.tpl

Извлекает все настройки из первого сайта для импорта во второй,

обновляет и дополняет существующие.

29

complete.json.tpl

Извлекает все объекты ядра, файлы и пользовательские таблицы

из первого сайта и заменяет все это во втором.

complete_db.json.tpl

Извлекает все объекты ядра и пользовательские таблицы, без

файлов.

packages.json.tpl

Извлекает все пакеты из первого сайта и устанавливает во втором.30

develop.json.tpl

Извлекает все объекты ядра, файлы и пользовательские таблицы

из первого сайта для импорта во второй, дополняет существующие

объекты и таблицы.

elements.json.tpl

Извлекает все элементы и связанные с ними данные из первого

сайта для импорта во второй, обновляет и дополняет

существующие.

31

resources.json.tpl

Извлекает все ресурсы из первого сайта для импорта во второй,

обновляет и дополняет существующие.

resource_children.json.tpl

Извлекает все ресурсы, которые являются потомками заданного

родительского ресурса.

32

user.json.tpl

Излекает одного указанного пользователя и сопутствующие

данные из первого сайта для импорта во второй.

users.json.tpl

Излекает все пользователей из первого сайта для импорта во

второй, обновляет и дополняет существующих.

33

Собственные шаблоны

Простейший шаблон

{"name":"elements", "vehicles":[]}

•  Обычный json

•  Отношения и условия как в map-файлах modx

34

Пример собственного шаблона

{"name":"elements", "vehicles":[

{

"vehicle_class":"xPDOFileVehicle",

"object":{

"source":"{+properties.modx.core_path}components",

"target":"return MODX_CORE_PATH;"

},

"attributes":{

"vehicle_class":"xPDOFileVehicle"

}

}

]}

01.

02.

03.

04.

05.

06.

07.

08.

09.

10.

11.

12. 35

Пример собственного шаблона

{"name":"elements", "vehicles":[

{

"vehicle_class":"xPDOObjectVehicle",

"object":{

"class":"modPropertySet",

"criteria":["1 = 1"],

"graph":{

"Category":[]

},

"package":"modx"

},

"attributes":{

"preserve_keys":false,

"update_object":true,

"unique_key":"name",

"related_objects":true,

"related_object_attributes":{

"Category":{

"preserve_keys":false,

"update_object":true,

"unique_key":"category"

}

}

}

},

]}

01.

02.

03.

04.

05.

06.

07.

08.

09.

10.

11.

12.

13.

01.

02.

03.

04.

05.

06.

07.

08.

09.

10.

11.

12.

13.

36

Телепортация

Телепортация A в B

Сайт A Сайт B

Profile: sitea.profile.json Profile: siteb.profile.json

Extract:

packages

develop

Inject:

packages

develop

Синхронизированы

38

Телепортация modx.by

Профиль для modx.by.dev.alroniks.com

php teleport.phar --action=Profile \

--name="modxbydevalronikscom" --code=modxbydevalronikscom \

--core_path=/var/www/modx.by.dev.alroniks.com/www/core/ \

--config_key=config

01.

02.

03.

04.

39

Телепортация modx.by

Профиль для modx.by

php teleport.phar --action=Profile \

--name="modxby" --code=modxby \

--core_path=/var/www/modx.by/www/core/ \

--config_key=config

01.

02.

03.

04.

40

Телепортация modx.by

Упаковка для modx.by.dev.alroniks.com

php teleport.phar --action=Extract \

--profile=profile/modxbydevalronikscom.profile.json /

--tpl=phar://teleport.phar/tpl/elements.tpl.json /

--target=/var/www/modx.by/www/core/packages/

--push

01.

02.

03.

04.

05.

41

Телепортация modx.by

Установка для modx.by

php teleport.phar --action=Inject \

--profile=profile/modxby.profile.json \

--source=/var/www/modx.by/www/core/packages/

modxbydevalronikscom_complete-141125.1702.46-2.3.2-pl.transport.zip

01.

02.

03.

42

Migrate a MODXsite in under 15

minutes

Проблемы

•  complete и complete_db не подходит для установки через менеджер

пакетов

•  в конфиге нельзя исключить из упаковки отдельную папку

•  не на все действия есть документация

•  до сих пор нет документации по custom tpls

45

Планы

•  Панель управления dev-экземлярами

•  Автоматическая сборка пакетов

•  Специальный репозиторий для обновлений

•  Continuous Delivery через пакеты

46

Создание сложных интернет-магазинов и сайтов на MODX

•  alroniks.com - команда

•  klimchuk.by - личный и контакты

•  modx.by - сообщество

47

Вопросы?

top related