共通モジュールコードを使用したマルチサイトインストールがあります(すべてのモジュールは、sites/all/modulesにあります)。モジュールを更新するとき、その後、drush updatedb -l site.comを使用して各サイトのデータベースを更新する必要があります。これを各サイトに対して行うのは、時間のかかる作業です。複数のサイトでデータベースをバッチ更新する方法はありますか?
ありがとう
Drush v4.4以降のサポートdrush @sites updb
。
マルチサイトインストールで実行するさまざまな時間のかかるタスク用に私が作成したスクリプトは次のとおりです
sites
フォルダーにある必要があります。スクリプトはすべてのフォルダー(all
とdefault
を除く)をループして、settings.php
ファイルに基づいてすべてのサイトで選択されたコマンドを実行します
#!/bin/bash
# Get all Drupal sites
sites=`find . -maxdepth 1 -type d -print | grep -v '/all$' | grep -v '/default$' | grep -v '\.$'`
echo "Choose the commande to execute : "
echo "1. update"
echo "2. put sites offline"
echo "3. put sites online"
echo "4. clear all cache"
echo "5. clear css+js cache"
echo "6. clear specific cache"
echo "7. install specific module"
echo "8. disable specific module"
echo -n "Input [1,2,3,4,5,6,7 or 8] ? "
read choice
if [ $choice -gt 6 ] ; then
echo -n "Extension (module/theme) name ?"
read ext
fi
# For each site, execute the command
for site in $sites
do
echo ----------
echo $site
cd $site
if [ $choice -eq 1 ] ; then
drush updatedb
Elif [ $choice -eq 2 ] ; then
drush vset --always-set maintenance_mode 1
Elif [ $choice -eq 3 ] ; then
drush vset --always-set maintenance_mode 0
Elif [ $choice -eq 4 ] ; then
drush cc all
Elif [ $choice -eq 5 ] ; then
drush cc css+js
Elif [ $choice -eq 6 ] ; then
drush cc
Elif [ $choice -eq 7 ] ; then
drush pm-enable -y $ext
Elif [ $choice -eq 8 ] ; then
drush pm-disable -y $ext
fi
cd ../
done