web-dev-qa-db-ja.com

Drupalでコンテンツ編集をステージングからライブ環境に移行する方法

最初にコンテンツを追加および更新して、QAによって変更が渡されたらライブサイトに移動するために使用したタグ付け環境があります。

データベースのサイズが大きいため、backup and migrateモジュールを使用できません。

また、プロセスを自動化して、毎日手動でコンテンツをタグ付けサイトからライブサイトに移行する必要がないようにすることもできます。

1
Ankit Agrawal

移行は、タグ付け環境で作業するとき、および変更(データベースの変更)を本番サイトにプッシュすることを完了するときに、最も重要なタスクの1つになります。

  • content typesblockなどを移行するには、 機能モジュール を使用します。
  • エンティティの移行には Migrate module を使用します。migrateモジュールの最も良い点は drush統合 です。
  • パネル、ビュー、ルールを直接エクスポートして、ライブサイトにインポートできます。
  • 使用 読み取り専用モジュール サイトをオフラインにしたくない場合は、新しいコンテンツへのアクセス(読み取り)を許可し、新しいコンテンツの追加を防止します。

移行プロセスを自動化する場合は、新しいコンテンツ(編集/更新)を移行するための drushスクリプト を作成し、作成したスクリプトを実行するようにcronをスケジュールします(サイトでのトラフィックが最小の場合)サイトのパフォーマンスに影響を与えないこと)。

2
user21139

私はサイトを移行するときに 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!");
5
AgA

完全なデータベースを移行することはリスクを伴う可能性があり、ライブサイトでの変更が失われます。移行するには複数の方法があります。

  • 機能モジュールを使用して、依存関係のあるコンテンツタイプを開発からライブサイトに移行します。
  • 移行モジュールを使用してエンティティをエクスポートします。

ビュー、パネル、ルールにより、インポートコードをすぐにインポートできます。これは、移行プロセスをほとんどカバーします。データベース全体を移行する場合でも、sessioncache_*watchdogsearch(次のcronの実行時に再構築する必要があります)などのテーブルを回避できます。

4
arpitr