Решил поделиться тем что узнал, пока в кратком виде как можно быстро обновлять редакции сайтов
Допустим мы имеем сайт ( придумаем ему синоним SITE) в двух и более редакциях, например:
1) Сайт в интернете видят все люди - site.live
2) Сайт на локальной машине - site.dev
обновляем файлы сайтов вместе с модулями (откуда куда):
drush rsync --progress site.dev site.live
обновляем базы данных (при дополнительных параметрах, можно исключать/включать таблицы) (откуда куда)
drush sql-sync --no-cache site.dev site.live
обновляем только файловый контент сайтов (откуда куда)
drush rsync site.dev:%files site.live:%files
(по дефолту site/mysite.ru/files/ или sites/default/sites - кто любит плодить друпалы)
Хотим посмотреть список включенных модулей удаленного сайта
drush site.live pml --status=enabled
Хотим включить модули удаленного сайта: admin_menu authcache
drush site.live en admin_menu authcache -y
Через drush мы экономим много времени на эти операции, иначе эти операции можно выполнять вручную: ставить галочки, копировать файлы....
Теперь опишу как мы обозначаем синонимы, оригинал примера тут http://drupalcontrib.org/api/drupal/contributions--drush--examples--exam...
1. Создаем файл site.aliases.drushrc.php в любом из каталогов ~/.drush, /etc/drush, там где установлен drush, либо прописываем дополнительный путь для каталога синонимов
2. Приведу пример своего файла в котором описан сайт с двумя версиями live - живой сайт на хостинге, dev - сайт на локальной машине
<?php
$aliases['dev'] = array(
'root' => '/var/www/drupal7/',
'uri' => 'www.mysite.local',
);
$aliases['live'] = array(
'root' => '/home/user/projects/mysite',
'uri' => 'site.ru',
'remote-host' => 'mysite.ru',
'remote-user' => 'user-hosting',
'ssh-options' => '-p2222',
'path-aliases' => array(
'%drush' => '/home/user/bin/drush/',
'%drush-script' => '/home/user/bin/drush/drush',
#'%root' => '/home/user/projects/site/sites/',
'%dump-dir' => '/home/user/projects/site/dump/',
'%dump' => '/home/user/projects/site/dump/sro.sql',
#'%files' => 'sites/site.com/files',
),
);
?>
ps Особеннно радует работа с мультисайтиногом, т.е. даже когда у вас сайты в sites/ на одной установке drupal
Синхронизируем сайты drupal через drush
от lullabot Более подробно на английском
работает ли под вендой - незнаю, т.к. не использую её
Единственное не получилось у меня обновить сайт с одно удаленного сервера на другой удаленный сервер (локальный удаленный - удаленный локальный = работает)
Комментарии
Когда-нибудь я тоже освою эту вещь. Сейчас как-то руки не доходят разобраться, есть более приоритетные задачи.
полезно... начинаю изучать drush и он мне все больше и больше нравится... не знал даже про такую штуку описанную ТС
Вижу вы детально разобрались в drush.
Может тогда подскажите, есть ли опция типа %root (-r), только чтобы можно было указать дополнительно к папке с друпалом отдельно папку с модулями. Папка модулей лежит вне корня сайта.
Просто у меня в мультисайтинге модули расположены внутри сайтов через симлинки, а драш их затирает при обновлении, копируя поверх папки модулей.
По моему это явный признак неправильного подхода к организации мультисайтинга....
Да не, я только начал вникать в drush)
Я бы прописал для каждой редакции site.dev site.live сайта переменные, например theme, files, modules
<?php
$aliases['dev'] = array(
.....
'path-aliases' => array(
'%drush' => '/home/user/bin/drush/',
'%drush-script' => '/home/user/bin/drush/drush',
'%theme' => 'sites/all/themes/custom7/my_theme',
'%files' => 'sites/site.com/files',
'%modules' => '/home/var/all/modules', ),
);
?>
// Путь к файлам модуля, темам,.. Live- сайта, где лежат папки
?>
И переменные можно пользовать для синхронизации папок на которые указывают эти переменные:
drush rsync site.dev:%files site.live:%files
drush rsync site.dev:%modules site.live:%modules - будет синхронизировать с папкой /home/var/all/modules
drush rsync site.dev:%theme site.live:%theme
Что будет с симлинками незнаю, у меня при drush rsync симлинки не удаляются, а создаются к идентичным папкам и файлам, симлинки создаю коммандой ln -s %from %to
Присоединяюсь к данному мнению. Почему бы не держать все модули в sites/all/modules ?
Может быть у человека к примеру одни и те же модули используются не только для drupal но и для pressflow и тут удобно было бы симлинк на общие модули /sites/all/modules
Мнимое удобство. Ибо влечет частенько больше проблем, чем профита.
Тогда можно сделать симлинк не на отдельные модули, а так:
drupal/sites/all/modules -> pressflow/sites/all/modules
Как я понимаю, неактивные модули в sites/all/modules на производительность не влияют, почти.
Не спешите судить, ведь мультисайтинг бывает разным и в некоторых случаях модули размещаются в папках сайтов /sites/site.ru/modules.
Поэтому для удобства держу все модули в одном месте, а раскидываю через симлинки.
Да никто и не судит, мы лишь спешим помочь, от чистого сердца. Заодно тайным знанием похвасться. )
о да! )))
При обновлении файлов он качает только те что поменялись? или тупо бомбит все?
Использует утилиту rsync, по умолчанию конечно обновляет только новые. Но есть куча вкусных фишек http://wiki.opennet.ru/Rsync
ps: на буржуйских сайтах народ встраивает drush в yii, для удобства работы с релизами
Таак...
А как на счет просто обновления кода: ядра и модулей? С модулями если все понятно, при drush -dl modulname они скачиваются и заменяют старые в sites/all/modules, а вот ядро в корень не качается (да, да, знаю, драшевцы для безопасности сделали так)... Есть способ и ядро в корень качать? Бекапы разумеется предварительно делаются и кода и бд.
Неправильно
Конкретный модуль, в том числе и core, можно указывать при использовании drush up.
НАпример drush up drupal обновит только версию Drupal и "коробных" модулей, не затрагивая сторонние модули.
Для обновления только кода есть команда drush pm-updatecode
Спасибо Леш! Учим матчасть дальше значит...
А еще вопросик: что бы все модули разом обновить, а не каждый перечислять pm-updatecode использовать?
То есть по порядку так думается: сначала ядро обновить, после все дополнительные модули...
Если укажешь имя конкретного модуля, обновится только он. А если просто написать drush up - обновится все.
Спасибо! Вот сейчас на патруле и проверим все))) С бекапами нормуль сейчас? Регулярные?
Таак... А если settings.php расположен в sites/site.ru а не в sites/default драш не робыт?
Я обычно в этом случае перехожу в папку sites/site.ru и запускают оттуда. Или использую параметр -l
«-l http://example.com, --uri=http://example.com URI of the drupal site to use (only needed in multisite environments)»
Благодарю!!!
Только у CKEditora либа слетела (и то потому что не в all/libraries была), но это легко поправимо.
UPD: настройка панели (panels) пропала с выводом содержания... Будьте осторожны, коллеги!
UPD2: решило проблему выключение/включение модйлей panels и panels node
вариант 1
захожу в папку drupal (у меня drupal6 и drupal7)
drush site.ru up (обновить модули)
drush site2.ru en blog (включаем модуль blog для сайта /sites/site2.ru) drush site2.ru en blog -y (включаем блок с автоматич.подтверждением yes)
вариант 2
если site1.ru есть на локалхосте и на хостинге, можно прописать его в алиасах drush
тогда не обязательно заходить в папку друпал или лезть на хостинг через ssh
...
drush site1ru.local up (обновляем на локалхосте)
drush site1ru.hosting up (обновляем на хостинге)
Добрэ! Этот метод мне по душе. Когда будет на поддержке более 1пары десятков сайтов, тогда задумаюсь об алиасахи бекапе на локалхост...))
chel, ты настоящий чел, респект и уважуха риальне drush использует, по интуитивным ощущениям, от силы 0,01% друпалеров, приятно видеть такие материалы (и комментарии) на д.ру, жив еще, курилка
Вооот, если-бы chel не знал линукс, не увидели мы такого полезного поста!
Виной всему линукс!
И вообще драш придумали линуксоиды (наверное)
Спасибо, что был полезен. Аж почувствовал себя Челом
Уважаемый гуру, спасибо конечно за комплименты, я линукс уж точно не знаю (я его мышкой пользую), могу даже щелчком по иконке в ubuntu запустить с первого раза: ff или например chrome, opera, даже windows в
презервативевиртуалке, я крут, я уже даже знаю "пару" команд: ls, cd, mc, которыми почти не пользуюсь - спасибо drush!А drush (если посмотрите в его исходники) - он ведь на php написан, а вы сеньор Николай - php больше и лучше меня знаете, для вас друпал - это php-framework.
А инструмент drush экономит огромную, я бы сказал неимоверно огромную кучу времени у разработчика на скучные рутинные (типа копи-паст) повседневные задачи.
Ну пример из жизни: сколько у вас, сеньор, времени уйдет чтобы :
1. проверить на наличие обновленных модулей, составить их список, скачать и обновить к примеру 20модулей, ядро друпала, и так чтобы забэкапить старые модули и заменить новыми плюс забэкапить файлы ядра?
И сколько уйдет времени чтобы:
2. набрать drush up[ENTER] ?
(по второму пунтку - где тут знания линукс?)
вот кто знает линукс
извините мне мое невежество, но это кто?
Это ж Анжела Байрон, http://drupal.org/user/24967, чувак, стыдно друпалеру не знать таких людей. Теперь после такого позора ты просто обязан на ней жениться
Ого! Так он еще и тётька?! Ни за что бы не подумал
ипический конь!!! опять с женой объясняться :(((
Не получится. Она ж лесбиянка. И в браке, если не ошибаюсь.
Crea, для русских людей нет непреодолимых препятствий
это как так???? ну не могут пи..рги и лесбиянки быть в браке!!!!
зато бракованными запросто
Действительно интересный материальчик. А Вы серьезно писать не подумывали? Думаю, у Вас бы получилось. По крайней мере, можно было бы очень посещаемый блог получить. Сейчас в интернете с уникальными интересными текстами проблема.
Слыш, спамер, иззыди.
Такой вопрос.
Есть у меня боевой сайт на хостинге и девелоперский на моем компе. На боевом сайте люди:
* оставляют комментарии
* голосуют (таблица votingapi)
* и добавляют прочую инфу (самописные модули, свои таблицы)
Допустим я делаю свою версию на локальной машине с какими-то новыми функциями.
Можно-ли с помощью драша синхронизировать сайт ТАК, чтобы всю ту инфу, которую добавили юзеры, пока я делал дев-версию, можно было помёрджить с новой версией сайта, которая допустим пока локально. И так, чтобы на локальной вся новая инфа тоже появилась?
Если честно, я слабо верю что драш на такое способен, но на всякий случай решил спросить. Кажется это называется deploy?
Если требутеся переносить только фичи – views, новые content type, то да – модуль features, а если требуется переносить контент, то для этого служит deploy. Мы его пользовали на 6-ке.
Этот модуль неправильно назвали, его настоящее имя – hemmaroy
Нестабильно зараза работал, в конце концов отказались от его использования, стали переносить нароботки руками, но якобы у features тоже есть такое дополнение, которое может контент переносить, но не тестировал, ничего сказать не могу.
Я думаю вам нужно изучить features, который поддерживается в drush. На прошлом DrupalConf кстати была лекция по поводу командной разработки и синхронизации кода среди разработчиков
Таки на винде сие счастье работать будет али нет? Никто не попробовал?
И еще если Drupal 6 а не 7 ???
Да,через программу putty
Будет, но на винде сложно.
Версия друпала пофиг
Сложно, но можно - это главное! А поподробней можно про ухищрения с виндой? Буду признателен крайне, ибо делаю проект, где без этого никак.. Геологи шастают по полям, заносят инфу в локальный сайт на ноуте... Как только ловится вай-фай, в идеале всё само должно законнектиться и обновить контент на сайте, где "вестей с полей" с нетерпением ждут те, кто дома.
А в гугл? На русском языке есть статьи про то, как установить драш.
Но в вашем случае драш не поможет, проще написать свой велосипед
прошу админов, забаньте спамера lepelujuv. У меня ссылки отображаются даже если текста в них нет: http://joxi.ru/14WVYnm