web-dev-qa-db-ja.com

rsyncのためにローカルサーバーのDrushエイリアスを設定する方法

ローカルサーバーから運用サーバーにファイルを同期するためにdrushを使用したいと思います。ローカルマシンとリモートマシンの両方でaliases.drushrc.phpファイルを編集して/drush/aliases内に配置しました。ローカルがローカルサーバーの別のマシンにあることをdrushに伝える方法がわからないので、drushが両方のサイトが同じサーバーにあることを理解していることを除いて、すべてが正常に動作しているようです。それはuriと関係があると思いますが、そこに何を書けばいいのかわかりません。

私はこれで試しました:

$aliases['local'] = array(
  'uri'  => 'mysite.localhost',    
  'root' => '/home/user/www/mysite',
);

この:

$aliases['local'] = array(
  'uri'  => 'localhost/mysite',    
  'root' => '/home/user/www/mysite',
);

ローカルサーバーの/home/user/wwwに配置されたフォルダーの名前mysiteですが、どれも機能していないようです。

誰が私が間違っているのか教えてもらえますか?

編集:

ローカルサイトフォルダーにmysite.aliases.drushrc.phpを配置しました。しかし、私は私のローカルサイトで次のコードで成功しませんでした:

drush rsync @mysite.live:%files @mysite.local:%files

これは私が得るものです:

@ mysite.local:/ home/user/www/mysite /%filesからのデータを破棄し、@ carloscamara.live:/ home/user/www/mysite /%filesからのデータで置き換えます
本当に続行しますか? (y/n):y
ソースと宛先の両方をリモートにすることはできません。
rsyncエラー:main.c(1166)での構文または使用法のエラー(コード1)[Receiver = 3.0.8]

これはmysite.aliases.drushrc.phpのコンテンツです:

$aliases['local'] = array(
    'uri'  => 'localhost/mysite',    
    'root' => '/home/user/www/mysite',
    'path-aliases' => array(
      '%files' => 'sites/default/files',
     ),
     'command-specific' => array (
       'sql-sync' => array (
         'no-cache' => TRUE,
       ),

$aliases['live'] = array(
    'uri' => 'mysite.com',
    'root' => '/home/user/mysite';
    'remote-machine' => 'mysite.com';
    'remote-user' => 'myusername',
    'remote-Host' => 'mysite.com',
    'path-aliases' => array(
      '%files' => '/home/myusername/mysite.com/sites/default/files',
     ),
  );
4
ccamara

リモートマシンに対してdrush rsyncまたはdrush sql-syncを実行するように設定するには、ローカルマシンの両方のサイトにエイリアスを設定します。ローカルサイトのエイリアスは、質問で示したとおりにする必要があります。リモートマシンの場合:

$aliases['stage'] = array(
    'uri'  => 'staging.mysite.com',    
    'root' => '/home/user/www/mysite',
    'remote-Host' => 'stagingfqdn.myisp.com',
    'remote-user' => 'wwwadmin',
  );

「remote-machine」は、リモートサイトをホストするマシンの完全修飾ドメイン名である必要があります。これは、「uri」パラメーターと同じ場合と同じでない場合があります。/etc/hostsを編集する必要がある可能性がありますが、リモートマシンがDNSで解決できない場合(異常な場合)のみ。 'remote-user'は、Drupal root;通常これはnot Webサーバーが実行するユーザーである)でファイルを所有するユーザーの名前である必要があります。

ローカルからリモートへのsql-syncは、たとえばサイトを初めてライブにする場合などに意味があります。ただし、通常は、コードをローカルからリモートにrsync(またはそれをvcsからチェックアウト)し、データベースをリモートからローカルにsql-syncします(その逆は絶対に行いません)。これにより、ユーザーが作成したコンテンツが上書きされなくなります。ファイルのコピーを介してリモートマシンに構成をプッシュするための1つの一般的なソリューションについては、 features モジュールを参照してください。

編集: タイプミスしました:「リモートマシン」と言いましたが、「リモートホスト」である必要があります。上記を修正しました。

編集2: もともと私は「ローカルからリモートにファイルをrsyncします(そしてその逆はありません)と言いましたが、コードを意味していました。上記で修正しました。もちろん、更新された質問に示されているように、リモートからローカルに%filesをrsyncするのは合理的で慣習です。 。

5
greg_1_anderson