最初にコンテンツを追加および更新して、QAによって変更が渡されたらライブサイトに移動するために使用したタグ付け環境があります。
データベースのサイズが大きいため、backup and migrate
モジュールを使用できません。
また、プロセスを自動化して、毎日手動でコンテンツをタグ付けサイトからライブサイトに移行する必要がないようにすることもできます。
移行は、タグ付け環境で作業するとき、および変更(データベースの変更)を本番サイトにプッシュすることを完了するときに、最も重要なタスクの1つになります。
content types
、block
などを移行するには、 機能モジュール を使用します。移行プロセスを自動化する場合は、新しいコンテンツ(編集/更新)を移行するための drushスクリプト を作成し、作成したスクリプトを実行するようにcronをスケジュールします(サイトでのトラフィックが最小の場合)サイトのパフォーマンスに影響を与えないこと)。
私はサイトを移行するときに readonlymode を使用しています。これは、ローカルホストのコンテンツをリモートホストに移行するために毎日行っています。私は、drushのsqlqコマンドを使用して、BackupRestoreモジュールよりも優れた復元を行います。
適切に移行するには、sites/allフォルダーをライブのフォルダーと比較する必要があります。また、sites/default/filesをライブのものにコピーする必要があります。
私の典型的な復元は、次のPerlスクリプトのようになります。
chdir ("$home/public_html/$site") or die "Unable to change to site dire=$home/$site\n";
( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
$mon++;
$year += 1900;
my $file = "$inputdir/$prefix-sql-dmp-$mday-$mon-$year.sql";
-r "$file.gz" or die "$file.gz does not exists\n";
#compare modules
my $modulesfile="$inputdir/$prefix-all-$mday-$mon-$year.tar.gz";
my $modulesdir="$home/public_html/$site/sites/all";
if( -f $modulesfile)
{
run_cmd("$home/scripts/gij-restore/dircmp.sh $modulesfile $modulesdir");
}
run_cmd ("gunzip $file.gz");
run_cmd ("drush cc all");
run_cmd_ignore ("drush cron");
run_cmd ("drush vset site_readonly 1");
run_cmd ("drush sqlq --file=$file");
run_cmd_ignore ("drush pm-disable --yes devel ");
run_cmd ("drush cc all");
run_cmd_ignore ("drush cron");
run_cmd ("drush vset site_readonly 0");
unlink "$file" or die "Failed to delete $file";
print "Site restore success\n";
sendemail($site,"Restore success!");
完全なデータベースを移行することはリスクを伴う可能性があり、ライブサイトでの変更が失われます。移行するには複数の方法があります。
ビュー、パネル、ルールにより、インポートコードをすぐにインポートできます。これは、移行プロセスをほとんどカバーします。データベース全体を移行する場合でも、session
、cache_*
、watchdog
、search
(次のcronの実行時に再構築する必要があります)などのテーブルを回避できます。