DrupalサイトをDrushと移行および同期する方法

提供:Dev Guides
移動先:案内検索

序章

DrushがDrupalモジュールのインストールと更新に非常に優れているとお考えの場合は、サイトの移行や複数のサイトの同期の維持に関して、Drushが実際に動作していることを確認してください。 ' Drushが何であるかわからない場合は、この入門チュートリアルを読んでセットアップを行うことができます。 基本的なDrushコマンドの使用方法を知りたい場合は、このチュートリアルも用意されています。

このチュートリアルでは、Drushを使用して、あるVPSから別のVPSにサイトをより効果的に移行し、複数のサイトを管理し、それらの間で簡単に同期する方法を学習します。 独自のクラウドサーバーを実行していて、Drushがインストールされており、Drupalサイトが既にインストールされていることを前提としています。

ダッシュエイリアス

Drushを使用してアクションを実行する場合、通常、Drupalフォルダーにいる間にコマンドを入力する必要があります。 Drupalのインストールを1つだけ処理する必要がある場合、これは問題ではありません。 ただし、このチュートリアルで説明するように、複数のサイトを管理する必要がある場合があります。 幸い、Drushにはエイリアスと呼ばれるすばらしい機能があります。

Drushエイリアスは、次の形式 @site のショートカットを使用して、サーバー'のフォルダー構造のどこからでもDrupalサイトを参照できるようにする単純な構成セットです。 ただし、これらのショートカットを使用する前に、それぞれのエイリアスを構成する必要があります。 これを行うには、'がまだない場合は、サーバー'にある.drushフォルダーにaliases.drushrc.phpというファイルを作成します。 ■ルートフォルダ:

nano /root/.drush/aliases.drushrc.php

ここでは、ファイルのphpオープニングタグ&lt?phpを作成する必要があり、以下に次の配列宣言をコピーします。

$aliases['site1'] = array(
 'root' => '/var/www/drupal_folder',
 'uri' => '88.88.88.88/drupal_folder',
);

これが何を意味するのか見てみましょう。 配列キーsite1は、Drushを介して'このサイトを参照できるショートカット名になります(任意の名前に置き換えることができます)。 $ aliases 配列内では、 root キーはDrupalサイトのディレクトリとして値を持っている必要がありますが、uriキーはのURIとして値を持っている必要がありますサイト。

この例では、ダミーVPSのIPアドレスを使用しました。 あなたはそれをあなたのものまたはあなたのドメイン名に置き換える必要があります。 これが、リモートサーバーではなく、現在使用しているクラウドサーバーを参照していることを確認してください(これについても後で説明します)。

ファイルを保存して終了すると、エイリアスが設定されます。 テストするには、Drupalサイトの外部にあるフォルダーに移動し、次のコマンドを実行します。

drush @site1 status

これで、エイリアスで参照したばかりのサイトに関する通常のステータス情報を取得する必要があります。 また、このショートカットは他のコマンドでも使用できます。

移行サイト

サイトを参照する方法がわかったので、Drushを使用してサイトをあるフォルダーから別のフォルダーに移行(コピー)する方法を見てみましょう。 'は、 @site1/var / www /drupal_folderから/var / www /drupal_folder2に移動するとします。

まず、この将来のインストール用に新しいエイリアスを作成する必要があります。 このためには、いつものように、aliases.drushrc.phpファイルを編集します。

nano /root/.drush/aliases.drushrc.php

ここでは、両方とも同じ形式の2つのエイリアスを以下に作成する必要があります。 古いものをコピーして貼り付け、適切な変更を加えるだけです。

$aliases['site2'] = array(
 'root' => '/var/www/drupal_folder2',
 'uri' => '88.88.88.88/drupal_folder2',
 );

ファイルを保存して終了します。 drush @ site2 status を実行すると、フォルダーにDrupalがインストールされていないだけでなく、'も存在しないため、機能しません。 それでは、作成しましょう。

mkdir /var/www/drupal_folder2

新しいDrupalのインストールの準備をするには、新しいデータベースも作成する必要があります。 したがって、お好みの方法でMySQLにログインし、アクセスユーザー名とパスワードをメモして新しいデータベースを作成します。 これを行う方法がわからない場合は、Drushを使用してDrupalサイトをデプロイする方法を示すチュートリアルをお読みください。

データベースがセットアップされたので、サイトの移行に進むことができます。 すべてのコードベースを最初のフォルダーから別のフォルダーにコピーするには、次のコマンドを実行します。

drush core-rsync @site1 @site2 --include-conf

これにより、すべてのファイルがdrupal_folderからdrupal_folder2にコピーされました。これには、-include-conf[X167Xのためのsettings.phpファイルも含まれます。 ] オプション。 この最後のオプションを指定せずにコマンドを実行すると、 settings.php ファイルはコピーに含まれません。これは、サイトを同期するときにこのファイルをコピーする必要がないため、優れた機能です。

次に、この新しくコピーされたsettings.phpファイルをdrupal_folder2コピーで編集し、作成したばかりの新しいデータベースを反映するようにデータベース情報を変更します。

nano /var/www/drupal_folder2/sites/default/settings.php

このファイルでは、独自のデータベース情報を反映するために、次のコードブロックに変更を加える必要があります。

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'your_db',
      'username' => 'your_username',
      'password' => 'your_password',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

ファイルを保存して終了します。 drupal_folder2 のサイトが現在このデータベースを使用していることがわかっているため、'が現在空であっても、Drushを使用してデータベースを移行できるようになりました。 次のコマンドを実行するだけです。

drush sql-sync @site1 @site2 --create-db

これにより、-create-db オプションにより、 @ site2 (現在空のテーブル)に関連付けられているデータベースのテーブルが削除され、に関連付けられているデータベースのテーブルが挿入されます。 @site1-元のDrupalインストール。 これで、同じサイトの2つの正確なレプリカができました。

次のエラーメッセージが表示される場合があります(該当するクレデンシャルを使用)。

ERROR 1044 (42000) at line 1: Access denied for user 'your_username'@'localhost' to database 'your_db'

この場合は、ユーザーが必要な権限を持っていることを確認してください。

MySQLにログインします(mysql -u root -p)。

次の権限を付与します。

grant all privileges on your_db.* to your_username@localhost with grant option;
grant reload  on *.* to druser2@localhost;
flush privileges;

Drupalサイトの同期

元のサイト( @ site2 )の複製ができたので、開発作業に使用できます。 コードベースに変更を加える場合は、 core-rsync コマンドを使用して、ファイルを元のファイル( @ site1 )と同期できます。

drush core-rsync @site2 @site1

明らかに、 settings.php ファイルを再度コピーすることは望ましくありません。これにより、データベースを再度変更することができなくなります。 次に、データベースも同期するには、同じsql-syncコマンドを実行します。

drush sql-sync @site2 @site1 --create-db

ほとんどの場合、データベースに保存されている構成の競合によって問題が発生するのを防ぐために、コピーの前に受信データベースを空にすることをお勧めします(-create-db オプションを使用)。

リモートサイト

同じサーバー上で複数のサイトを処理するのがいかに簡単かを見てきましたが、複数のサーバーに複数のサイトが分散している場合はどうでしょうか。 Drushの場合、違いはエイリアスで提供する情報にあります。 ただし、Drushを使用してリモートホストで作業するには、2つのサーバー間にSSHキーを設定し、両方にDrushをインストールする必要があります。

これらの手順を実行した後、リモートで接続できるようにエイリアスを構成する方法を見てみましょう。 いつものように、最初のサーバー('が以前に作業していたサーバー)でaliases.drushrc.phpファイルを開いて編集します。

nano /root/.drush/aliases.drushrc.php

そして、リモートサーバー上のサイトの新しいエイリアスを作成しましょう。 以下のコードをコピーして、適切に情報に置き換えてください。

$aliases['site3'] = array(
   'root' => '/var/www/drupal_folder3',
   'uri' => '99.99.99.99/drupal_folder3',
   'remote-host' => '99.99.99.99'
 );

それで、これはどういう意味ですか? エイリアスが@site3 のサイトは、リモートサーバーのフォルダー drupal_folder3 にあり、そのURIがリモートサーバー上でそれを指している。 これは予想されることです。 さらに、リモートホスト(リモートホストのIPアドレス)を指定する必要があります。 SSHキーを設定している場合、もちろんプライベートSSHキー自体を保護するパスワードがない限り、パスワードを入力する必要はありません。これは、2つのリモートホスト間でキーを作成する場合に推奨されます(パーソナルコンピューターではありません)。 )。

以上です。 これで、これまでに説明したコマンドを実行すると、同じアクションをリモートで実行できるだけでなく、サイトの移行と同期の維持も可能になります。 ただし、エイリアスをテストするには、次のコマンドを実行します。

drush @site3 status

ローカルで作業している場合よりも少し時間がかかりますが、うまく機能するはずです。

投稿者: Danny