Прозрачная передача апдейтов из сервера разрабтки на продакшн сервер

Главные вкладки

Аватар пользователя Artu Artu 28 июля 2013 в 0:40

Сервер 1. Сервер разработки.
Сервер 2. Реальный, работающий сайт.

Пока на сервере 1 ведется разработка на сервере 2 меняются и добавляются данные.

Как передать обкатанные на сервере 1 наработки на сервер 2? Что б понятно и прозрачно, в т.ч. для клиента. Желательно как-то поддерживать версионность. Что б на сервере 2 не пропали введенные данные.

Понятно что скрипты передаются в виде файловой структуры,а как быть с данными в т.ч. и настройками?

1)модуль Futures? Еще не работал с ним. Подходит ли он для этих целей? Он генерит модули. Если удалить сервер 1 (а что его пожизненно хранить?) то сервер 2 будет частично состоять из сгенерированных Futures модулей.. Что ж тут хорошего?

2)Выгружать дампы БД? Но чем их выборочно генерить (какие таблицы включать)? Кроме таблиц с настройками, могут изменится и таблицы с данными.. Вся база не подходит, т.к. нужно сохранить внесенные на сервере 2 изменения.

3)CVS? CVS+Drush? Но разве они смогут отслеживать и передавать версионность настроек в БД? Как?

В общем я пока не вижу метода без изъянов.
А ведь для крупных проектов в такой взрослой системе как Друпал вопрос должен быть тривиальный.

P.S. Клиент будет накатывать апдейты сам. Технических знаний хватит или можно обучить.

Комментарии

Аватар пользователя webpavilion webpavilion 29 июля 2013 в 15:37

"Artu" wrote:
Можно описать в двух предложениях как это работает?

Совсем не так как вам хотелось бы drush rsync и drush sql-sync льют туда сюда файлы и базу соответственно не разбираясь что да как.

Погуглите на тему "drupal deploy" есть сложные схемы с использованием Apache Ant или Capistrano но слишком уж морочено получается.

Лично я использую features (features_extra,ftools,strongarm,uuid_features) + git + немного изврашенный подход к разработке. Изврашенность заключается в максимальном отказе от накликивания в админке чего бы то нибыло. Благодоря этому все изменения хранятся в git.

Аватар пользователя multpix multpix 29 июля 2013 в 15:20

"Artu" wrote:

организовывай свою разработку.

переноси настройки дописанного из базы в код,
с обновлением или новым модулем запускаешь (проверенный на свежих снимках) .install

Аватар пользователя Artu Artu 29 июля 2013 в 17:28

"webpavilion" wrote:
Изврашенность заключается в максимальном отказе от накликивания в админке чего бы то нибыло.

А как вы делаете/меняете настройки модулей, например?
Фичи буду пробовать..

"multpix" wrote:
организовывай свою разработку.

?
"multpix" wrote:
переноси настройки дописанного из базы в код,

чем?
"multpix" wrote:
с обновлением или новым модулем запускаешь (проверенный на свежих снимках) .install

Профиль создавать?

Аватар пользователя webpavilion webpavilion 29 июля 2013 в 18:40

"Artu" wrote:
А как вы делаете/меняете настройки модулей, например?

большая часть модулей хранит настройки в таблице variable, т.е. вполне достаточно связки features и strongarm для корректного экспорта. Если что то особенное то можно дергать hook_update_N. Вообще разработка в таком стиле требует намного большего понимания того как работает drupal из нутри.

Аватар пользователя Artu Artu 29 июля 2013 в 21:27

webpavilion wrote:
\Если что то особенное то можно дергать hook_update_N. Вообще разработка в таком стиле требует намного большего понимания того как работает drupal из нутри.

Где дергать?

Аватар пользователя drupby drupby 29 июля 2013 в 21:14

"webpavilion" wrote:
Совсем не так как вам хотелось бы drush rsync и drush sql-sync льют туда сюда файлы и базу соответственно не разбираясь что да как.

а кто мешает почитать документацию и увидеть там ,что тот же sql-sync может синхронизировать только те таблицы ,которые нужны(а точнее не заливает перечисленные таблицы)
и тоже самое в rsync можно исключить ненужные каталоги

Аватар пользователя webpavilion webpavilion 29 июля 2013 в 21:17

"drupby" wrote:
а кто мешает...

дак никто не мещает, сам активно drush пользую, но проблемы деплоя он не решает, если контент на live сайте интенсивно обновляется и на нем проводятся мелкие изменения окружения.

Аватар пользователя Artu Artu 29 июля 2013 в 21:25

webpavilion wrote:
"drupby" wrote:
а кто мешает...

дак никто не мещает, сам активно drush пользую, но проблемы деплоя он не решает, если контент на live сайте интенсивно обновляется и на нем проводятся мелкие изменения окружения.

Да, считаем что происходят, я писал выше.

Аватар пользователя drupby drupby 29 июля 2013 в 21:27

"webpavilion" wrote:
если контент на live сайте интенсивно обновляется и на нем проводятся мелкие изменения окружения

у вас друпал другой или только у меня контентная составляющая (ноды,поля,термины etc)хранятся в отдельных таблицах?
мелкие изменения окружения вы записываете в таблицу "node"

Аватар пользователя Artu Artu 29 июля 2013 в 21:31

drupby, а как передать, например, новый словарь таксономии, на Live сервере такcономия тоже меняется.
Вообще работать на уровне таблице не Drupal way вроде.

Аватар пользователя Artu Artu 29 июля 2013 в 21:35

И вопрос от того кто пока не работал с features.
Модули который он генерит нужны только ради инсталла (накатить апдейты) или для постоянной работы?

Аватар пользователя webpavilion webpavilion 29 июля 2013 в 21:38

"drupby" wrote:
у вас друпал другой или только у меня контентная составляющая (ноды,поля,термины etc)хранятся в отдельных таблицах?
мелкие изменения окружения вы записываете в таблицу "node"

На live сайте идет постоянное обновление контента (добавляются новые ноды и термины), на dev был добавлен новый тип нод с кучей полей, из них был собран еще один раздел сайта. Как вы через sql-sync разрулите ситуацию?

Аватар пользователя webpavilion webpavilion 29 июля 2013 в 21:39

"Artu" wrote:
Модули который он генерит нужны только ради инсталла (накатить апдейты) или для постоянной работы?
можно отключать после деплоя, если очень печетесь за производительность.

Аватар пользователя drupby drupby 29 июля 2013 в 22:21

"webpavilion" wrote:
на dev был добавлен новый тип нод с кучей полей

типы нод хранятся в таблице "node_type"
поля в отдельных таблицах -препятствий нет
ну и таблицу с конфигурацией инстансов полей обновить
вообщем если разбираться в структуре бд друпала ,можно быстро все разрулить-а так возможно все синхронизировать
а если еще дописать алиасов на команды с перечислением необходимых таблиц ,тот все возможно и главное скорость выполнения
ps хотя в некоторых случаях можно и фичами делать
в любом случае нужно пробывать варианты и искать под себя

Аватар пользователя webpavilion webpavilion 30 июля 2013 в 8:55

"drupby" wrote:
типы нод хранятся в таблице "node_type"
поля в отдельных таблицах -препятствий нет
ну и таблицу с конфигурацией инстансов полей обновить

Ваши рассуждения очень похожи на доводы "диванного теоретика". Проблема не с тем как переносить, а с тем как разрулить конфликты nid, tid и прочих id которые непременно возникнут в указанном выше ситуации. Любое не осторожное действие приведет к потере контента, а то и вовсе к простою. Деплой мало мальски сложного проекта через drush sql-sync невозможен!

Аватар пользователя drupby drupby 30 июля 2013 в 9:16

"webpavilion" wrote:
а с тем как разрулить конфликты nid, tid и прочих id которые непременно возникнут в указанном выше ситуации

Ваши рассуждения очень похожи на доводы "диванного теоретика".
Вы собрались переносить фичами ноды и термины?

Аватар пользователя multpix multpix 2 августа 2013 в 20:19

"Artu" wrote:
А как при таком подходе обновлять модули?

пиздец)
тебе жеже говорят - переноси все в код свой, естественно.
содержишь и обновляешь ядро и контриб, поддерживаешь свое, контроль версий (тудым-сюдым).
))
и вообще!

Аватар пользователя Artu Artu 3 августа 2013 в 9:39

"multpix" wrote:
переноси все в код свой, естественно

Что, бля, переносить, код обновления модулей? Вырезать кусками, вручную? Мы тут говорим об автоматизации.

Ну так расскажи как работает приведенный тобой модуль Deploy. В описании сказано что он переносит контент,и usage у него не ахти.

Аватар пользователя drupby drupby 3 августа 2013 в 10:04

"Artu" wrote:
Что, бля, переносить, код обновления модулей? Вырезать кусками, вручную? Мы тут говорим об автоматизации.

git

Аватар пользователя multpix multpix 3 августа 2013 в 11:57

"Artu" wrote:
Вырезать кусками, вручную

Где не работает голова - работают руки, можешь и вручную)
А я тебе третий раз повторю, то, что говорили люди выше - git

"Artu" wrote:
Ну так расскажи как работает приведенный тобой модуль Deploy

И епт, на модуле deploy я акцента не делал - ты сам его нашел, молодец.
А я тебе предлагал в принципе определить для себя такое понятие как deploy, и в контексте drupal посмотреть, какие методики обсуждаются сообществом.

"Artu" wrote:
В описании сказано что он переносит контент,и usage у него не ахти.

Читать офф. инфу - это хорошая практика.
Дополнительно скажу, что развернуть среду для тестирования незнакомого модуля - дело 1мин.
Т.е. нашел, ознакомился с доками, развернул, тестишь и вникаешь.

Аватар пользователя multpix multpix 3 августа 2013 в 14:05

"RxB" wrote:
Модуля git нет ли под друпал????

вот неугомонный, только откинулся, и опять за старое)
скрипты на компутере есть?

Аватар пользователя UnnamedNETUA UnnamedNETUA 3 августа 2013 в 17:21

Друпал.ру в своем лице. Один не очень понимающий человек спрашивате, другие не очень хотящие отвечать отвечают )
Вот что гугл ответил, самая разумная штука, это да, деплой через системы контроля версий, git например.
http://www.slideshare.net/eaton/drupal-deployment-presentation