Drush обновление всех сайтов на сервере.
Своевременное обновление ядра сайта и модулей - работа первостепенной важности для безопасности сайта и его стабильной работы. Это рутинная работа, которую следует проделывать регулярно. Как быть в случае, когда сайтов на сервере несколько, и на их обновление уходит много времени, читайте ниже! 04 July, 15:58
5561
1
CMS Drupal - очень динамичная система, над развитием и доработкой которой работает целое мировое сообщество разработчиков. Для поддержания безопасности сайтов на друпале, защиты от внешних угроз, вирусов и взломов, ядро и все модули сайта регулярно совершенствуются. Следовательно, их необходимо своевременно обновлять. |
Задача: Максимально упросить процесс обновления сайтов на Drupal. Автоматическое обновление, к сожалению, невозможно, поэтому обновление следует проводить вручную, путем замены старых файлов на сервере новыми файлами, и провести обновление базы данных. Следует помнить, что перед тем как начать обновление, нужно обязатльно сделать бекап. Как же быть в случае, когда на хостинге сайтов, которые нужно обновить, много, и не хочеться тратить время на ввод одних и тех же команд к каждому сайту в отдельности? Решение: Cделать одну команду для ssh, чтобы обновились все сайты, без затрат времени на переходы между сайтами. У нас есть доступ к SSH и установленный Drush. Создаем на сервере файл php, которые будет обрабатывать команды и выполнять все необходимые действия по сайтам. /** This file was created by Emil Acosta to keep all drupal sites hosted on this account upto date with a minimum effort using the Drush tool. */ // Базовая директория работы сайта $mypath = '/home/NAME/domains'; // командная строка drush (настроенна в .bashrc $drushpath = 'drush'; // Drupal Сайты //(папки, гда расположены сайты относительно $mypath) $mysites = array( 'site.ru', ); // Файлы которые можно удалить $unwanted = array( 'CHANGELOG.txt', 'INSTALL.mysql.txt', 'INSTALL.sqlite.txt', 'LICENSE.txt', 'README.txt', 'UPGRADE.txt', 'COPYRIGHT.txt', 'INSTALL.pgsql.txt', 'INSTALL.txt', 'MAINTAINERS.txt', ); //Список команд drush $commands = array( // переименуем robots.txt, //чтобы его не затронуло обновлением 'Rename robots.txt' =--> 'cp robots.txt robots.txt.copy', 'drush_enable_update' => 'en update -y', // обновление не безопасных модулей и самого ядра Drupal 'drush_update' => 'up --security-only -y', // очистить весь кеш 'drush_clear_cache' => 'cc all', // Вернём старый robots.txt 'Rename robots.txt.copy' => 'mv robots.txt.copy robots.txt', //'Running cron' => 'cron', //'Checking for updates' => 'rf', ); foreach ($mysites as $site) { echo "\n*********************************************\n"; echo " START UPDATING SITE: ".$site; echo "\n*********************************************\n"; echo 'Start in directory: '.getcwd() . "\n"; chdir($mypath.'/'.$site); echo 'Working in directory: '.getcwd() . "\n\n"; // Start Drush Update Process foreach ($commands as $steps => $command) { echo " ".$steps."\n"; echo "----------------------------------------\n"; $tmp = explode('_', $steps); if($tmp[0] == 'drush'){ $output = shell_exec($drushpath.' '.$command); }else{ $output = shell_exec($command); } } // Remove unwanted files foreach ($unwanted as $filename) { if (file_exists($filename)) { $output = shell_exec('rm '.$filename); echo "File: '$filename' was removed.\n"; } } echo "\n\n"; chdir($mypath); echo 'Back to my base directory: '.getcwd() . "\n"; echo "\n*********************************************\n"; echo " END UPDATING SITE: ".$site; echo "\n*********************************************\n"; } Далее заходим в ssh, и запускаем команду php FILE.php - и ждем выполнения скрипта. Оригинал https://www.drupal.org/node/1926484 P.S. СКРИПТ ОБНОВЛЕН 28.04.2018 Исправлены ошибки |
Ключевые теги
Рекомендуем прочитать:
Подписаться на новые статьи
Свежие записи
-
09 November
-
09 October
-
30 August